From 79ab9f9c483fb9eedaba534c9fb56e3fd38e5be1 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Mon, 18 Jan 2016 15:11:37 +0200 Subject: [PATCH] Working on acceptance test for tax rates --- resources/views/invoices/edit.blade.php | 2 +- tests/acceptance/TaxRatesCest.php | 109 ++++++++++-------------- 2 files changed, 48 insertions(+), 63 deletions(-) diff --git a/resources/views/invoices/edit.blade.php b/resources/views/invoices/edit.blade.php index a0d9160469..23c8a9d5fa 100644 --- a/resources/views/invoices/edit.blade.php +++ b/resources/views/invoices/edit.blade.php @@ -328,7 +328,7 @@ {{ trans('texts.tax') }} @endif - + diff --git a/tests/acceptance/TaxRatesCest.php b/tests/acceptance/TaxRatesCest.php index 5793b2f120..1ee9883da2 100644 --- a/tests/acceptance/TaxRatesCest.php +++ b/tests/acceptance/TaxRatesCest.php @@ -17,27 +17,47 @@ class TaxRatesCest public function taxRates(AcceptanceTester $I) { - - } - - /* - public function onlinePayment(AcceptanceTester $I) - { - $I->wantTo('test an online payment'); + $I->wantTo('test tax rates'); $clientEmail = $this->faker->safeEmail; $productKey = $this->faker->text(10); + $itemTaxRate = $this->faker->randomFloat(2, 5, 15); + $itemTaxName = $this->faker->word(); + $invoiceTaxRate = $this->faker->randomFloat(2, 5, 15); + $invoiceTaxName = $this->faker->word(); + $itemCost = $this->faker->numberBetween(1, 20); - // set gateway info - $I->wantTo('create a gateway'); - $I->amOnPage('/settings/online_payments'); + $total = $itemCost; + $total += round($itemCost * $itemTaxRate / 100, 2); + $total += round($itemCost * $invoiceTaxRate / 100, 2); - if (strpos($I->grabFromCurrentUrl(), 'create') !== false) { - $I->fillField(['name' =>'23_apiKey'], Fixtures::get('gateway_key')); - $I->selectOption('#token_billing_type_id', 4); - $I->click('Save'); - $I->see('Successfully created gateway'); - } + // create tax rates + $I->amOnPage('/tax_rates/create'); + $I->fillField(['name' => 'name'], $itemTaxName); + $I->fillField(['name' => 'rate'], $itemTaxRate); + $I->click('Save'); + $I->see($itemTaxName); + + $I->amOnPage('/tax_rates/create'); + $I->fillField(['name' => 'name'], $invoiceTaxName); + $I->fillField(['name' => 'rate'], $invoiceTaxRate); + $I->click('Save'); + $I->see($invoiceTaxName); + + // enable line item taxes + $I->amOnPage('/settings/tax_rates'); + $I->checkOption('#invoice_item_taxes'); + $I->click('Save'); + + // create product + $I->amOnPage('/products/create'); + $I->fillField(['name' => 'product_key'], $productKey); + $I->fillField(['name' => 'notes'], $this->faker->text(80)); + $I->fillField(['name' => 'cost'], $itemCost); + $I->selectOption('select[name=default_tax_rate_id]', $itemTaxName . ' ' . $itemTaxRate . '%'); + $I->click('Save'); + $I->wait(1); + $I->see($productKey); // create client $I->amOnPage('/clients/create'); @@ -45,59 +65,24 @@ class TaxRatesCest $I->click('Save'); $I->see($clientEmail); - // create product - $I->amOnPage('/products/create'); - $I->fillField(['name' => 'product_key'], $productKey); - $I->fillField(['name' => 'notes'], $this->faker->text(80)); - $I->fillField(['name' => 'cost'], $this->faker->numberBetween(1, 20)); - $I->click('Save'); - $I->wait(1); - $I->see($productKey); - // create invoice $I->amOnPage('/invoices/create'); $I->selectDropdown($I, $clientEmail, '.client_select .dropdown-toggle'); $I->fillField('table.invoice-table tbody tr:nth-child(1) #product_key', $productKey); + $I->selectOption('#taxRateSelect', $invoiceTaxName . ' ' . $invoiceTaxRate . '%'); + $I->wait(2); + + // check total is right before saving + $I->see("\${$total}"); $I->click('Save'); $I->see($clientEmail); - // enter payment - $clientId = $I->grabFromDatabase('contacts', 'client_id', ['email' => $clientEmail]); - $invoiceId = $I->grabFromDatabase('invoices', 'id', ['client_id' => $clientId]); - $invitationKey = $I->grabFromDatabase('invitations', 'invitation_key', ['invoice_id' => $invoiceId]); + // check total is right after saving + $I->see("\${$total}"); + $I->amOnPage('/invoices'); - $clientSession = $I->haveFriend('client'); - $clientSession->does(function(AcceptanceTester $I) use ($invitationKey) { - $I->amOnPage('/view/' . $invitationKey); - $I->click('Pay Now'); - - $I->fillField(['name' => 'first_name'], $this->faker->firstName); - $I->fillField(['name' => 'last_name'], $this->faker->lastName); - $I->fillField(['name' => 'address1'], $this->faker->streetAddress); - $I->fillField(['name' => 'address2'], $this->faker->streetAddress); - $I->fillField(['name' => 'city'], $this->faker->city); - $I->fillField(['name' => 'state'], $this->faker->state); - $I->fillField(['name' => 'postal_code'], $this->faker->postcode); - $I->selectDropdown($I, 'United States', '.country-select .dropdown-toggle'); - $I->fillField(['name' => 'card_number'], '4242424242424242'); - $I->fillField(['name' => 'cvv'], '1234'); - $I->selectOption('#expiration_month', 12); - $I->selectOption('#expiration_year', date('Y')); - $I->click('.btn-success'); - $I->see('Successfully applied payment'); - }); - - $I->wait(1); - - // create recurring invoice and auto-bill - $I->amOnPage('/recurring_invoices/create'); - $I->selectDropdown($I, $clientEmail, '.client_select .dropdown-toggle'); - $I->fillField('table.invoice-table tbody tr:nth-child(1) #product_key', $productKey); - $I->checkOption('#auto_bill'); - $I->executeJS('preparePdfData(\'email\')'); - $I->wait(2); - $I->see("$0.00"); - + // check total is right in list view + $I->see("\${$total}"); } - */ + } \ No newline at end of file