diff --git a/tests/Feature/Expenses/PaymentsTest.php b/tests/Feature/Expenses/PaymentsTest.php new file mode 100644 index 000000000..ce1a71ee7 --- /dev/null +++ b/tests/Feature/Expenses/PaymentsTest.php @@ -0,0 +1,86 @@ +loginAs() + ->get(url('expenses/payments')) + ->assertStatus(200) + ->assertSeeText(trans_choice('general.payments', 2)); + } + + public function testItShouldSeePaymentCreatePage() + { + $this->loginAs() + ->get(url('expenses/payments/create')) + ->assertStatus(200) + ->assertSeeText(trans('general.title.new', ['type' => trans_choice('general.payments', 1)])); + } + + public function testItShouldCreatePayment() + { + $this->loginAs() + ->post(url('expenses/payments'), $this->getPaymentRequest()) + ->assertStatus(302) + ->assertRedirect(url('expenses/payments')); + + $this->assertFlashLevel('success'); + } + + public function testItShouldUpdatePayment() + { + $request = $this->getPaymentRequest(); + + $payment = Payment::create($request); + + $request['name'] = $this->faker->text(15); + + $this->loginAs() + ->patch(url('expenses/payments', $payment->id), $request) + ->assertStatus(302) + ->assertRedirect(url('expenses/payments')); + + $this->assertFlashLevel('success'); + } + + public function testItShouldDeletePayment() + { + $payment = Payment::create($this->getPaymentRequest()); + + $this->loginAs() + ->delete(url('expenses/payments', $payment->id)) + ->assertStatus(302) + ->assertRedirect(url('expenses/payments')); + + $this->assertFlashLevel('success'); + } + + private function getPaymentRequest() + { + $attachment = UploadedFile::fake()->create('image.jpg'); + + return [ + 'company_id' => $this->company->id, + 'account_id' => setting('general.default_account'), + 'paid_at' => $this->faker->date(), + 'amount' => $this->faker->randomFloat(2, 2), + 'currency_code' => setting('general.default_currency'), + 'currency_rate' => '1', + 'vendor_id' => setting('general.default_vendor'), + 'description' => $this->faker->text(5), + 'category_id' => $this->company->categories()->type('income')->first()->id, + 'payment_method' => setting('general.default_payment_method'), + 'reference' => $this->faker->text(5), + 'attachment' => $attachment, + ]; + } + +} \ No newline at end of file diff --git a/tests/Feature/Incomes/RevenuesTest.php b/tests/Feature/Incomes/RevenuesTest.php new file mode 100644 index 000000000..49ee10115 --- /dev/null +++ b/tests/Feature/Incomes/RevenuesTest.php @@ -0,0 +1,84 @@ +loginAs() + ->get(route('revenues.index')) + ->assertStatus(200) + ->assertSeeText(trans_choice('general.revenues', 2)); + } + + public function testItShouldSeeRevenueCreatePage() + { + $this->loginAs() + ->get(route('revenues.create')) + ->assertStatus(200) + ->assertSeeText(trans('general.title.new', ['type' => trans_choice('general.revenues', 1)])); + } + + public function testItShouldCreateRevenue() + { + $this->loginAs() + ->post(route('revenues.store'), $this->getRevenueRequest()) + ->assertStatus(302) + ->assertRedirect(route('revenues.index')); + + $this->assertFlashLevel('success'); + } + + public function testItShouldUpdateRevenue() + { + $request = $this->getRevenueRequest(); + + $revenue = Revenue::create($request); + + $request['name'] = $this->faker->text(15); + + $this->loginAs() + ->patch(route('revenues.update', $revenue->id), $request) + ->assertStatus(302) + ->assertRedirect(route('revenues.index')); + + $this->assertFlashLevel('success'); + } + + public function testItShouldDeleteRevenue() + { + $revenue = Revenue::create($this->getRevenueRequest()); + + $this->loginAs() + ->delete(route('revenues.destroy', $revenue->id)) + ->assertStatus(302) + ->assertRedirect(route('revenues.index')); + + $this->assertFlashLevel('success'); + } + + private function getRevenueRequest() + { + $attachment = UploadedFile::fake()->create('image.jpg'); + + return [ + 'company_id' => $this->company->id, + 'customer_id' => '', + 'account_id' => setting('general.default_account'), + 'paid_at' => $this->faker->date(), + 'amount' => $this->faker->randomFloat(2, 2), + 'currency_code' => setting('general.default_currency'), + 'currency_rate' => '1', + 'description' => $this->faker->text(5), + 'category_id' => $this->company->categories()->type('income')->first()->id, + 'reference' => $this->faker->text(5), + 'payment_method' => setting('general.default_payment_method'), + 'attachment' => $attachment, + ]; + } +} \ No newline at end of file