123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- <?php
- namespace Tests\Unit\OrderStatuses;
- use App\Shop\Orders\Order;
- use App\Shop\OrderStatuses\Exceptions\OrderStatusInvalidArgumentException;
- use App\Shop\OrderStatuses\Exceptions\OrderStatusNotFoundException;
- use App\Shop\OrderStatuses\OrderStatus;
- use App\Shop\OrderStatuses\Repositories\OrderStatusRepository;
- use Tests\TestCase;
- class OrderStatusUnitTest extends TestCase
- {
- /** @test */
- public function it_can_return_all_orders_on_a_specific_order_status()
- {
- $orderStatus = factory(OrderStatus::class)->create();
- $order = factory(Order::class)->create([
- 'order_status_id' => $orderStatus->id
- ]);
- $repo = new OrderStatusRepository($orderStatus);
- $collection = $repo->findOrders();
- $this->assertCount(1, $collection->all());
- $collection->each(function ($item) use ($order) {
- $this->assertEquals($item->reference, $order->reference);
- $this->assertEquals($item->courier_id, $order->courier_id);
- $this->assertEquals($item->customer_id, $order->customer_id);
- $this->assertEquals($item->address_id, $order->address_id);
- });
- }
-
- /** @test */
- public function it_errors_when_updating_the_order_status()
- {
- $this->expectException(OrderStatusInvalidArgumentException::class);
- $orderStatusRepo = new OrderStatusRepository($this->orderStatus);
- $orderStatusRepo->updateOrderStatus(['name' => null]);
- }
- /** @test */
- public function it_can_delete_the_order_status()
- {
- $os = factory(OrderStatus::class)->create();
- $orderStatusRepo = new OrderStatusRepository($os);
- $orderStatusRepo->deleteOrderStatus($os);
- $this->assertDatabaseMissing('order_statuses', $os->toArray());
- }
-
- /** @test */
- public function it_lists_all_the_order_statuses()
- {
- $create = [
- 'name' => $this->faker->name,
- 'color' => $this->faker->word
- ];
- $orderStatusRepo = new OrderStatusRepository(new OrderStatus);
- $orderStatusRepo->createOrderStatus($create);
- $orderStatusRepo = new OrderStatusRepository(new OrderStatus);
- $lists = $orderStatusRepo->listOrderStatuses();
- foreach ($lists as $list) {
- $this->assertDatabaseHas('order_statuses', ['name' => $list->name]);
- $this->assertDatabaseHas('order_statuses', ['color' => $list->color]);
- }
- }
-
- /** @test */
- public function it_errors_getting_not_existing_order_status()
- {
- $this->expectException(OrderStatusNotFoundException::class);
- $this->expectExceptionMessage('Order status not found.');
- $orderStatusRepo = new OrderStatusRepository(new OrderStatus);
- $orderStatusRepo->findOrderStatusById(999);
- }
-
- /** @test */
- public function it_can_get_the_order_status()
- {
- $create = [
- 'name' => $this->faker->name,
- 'color' => $this->faker->word
- ];
- $orderStatusRepo = new OrderStatusRepository(new OrderStatus);
- $orderStatus = $orderStatusRepo->createOrderStatus($create);
- $os = $orderStatusRepo->findOrderStatusById($orderStatus->id);
- $this->assertEquals($create['name'], $os->name);
- $this->assertEquals($create['color'], $os->color);
- }
-
- /** @test */
- public function it_can_update_the_order_status()
- {
- $orderStatusRepo = new OrderStatusRepository($this->orderStatus);
- $data = [
- 'name' => $this->faker->name,
- 'color' => $this->faker->word
- ];
- $updated = $orderStatusRepo->updateOrderStatus($data);
- $this->assertTrue($updated);
- $this->assertEquals($data['name'], $this->orderStatus->name);
- $this->assertEquals($data['color'], $this->orderStatus->color);
- }
-
- /** @test */
- public function it_errors_when_creating_the_order_status()
- {
- $this->expectException(OrderStatusInvalidArgumentException::class);
- $orderStatusRepo = new OrderStatusRepository(new OrderStatus);
- $orderStatusRepo->createOrderStatus([]);
- }
-
- /** @test */
- public function it_can_create_the_order_status()
- {
- $create = [
- 'name' => $this->faker->name,
- 'color' => $this->faker->word
- ];
- $orderStatusRepo = new OrderStatusRepository(new OrderStatus);
- $orderStatus = $orderStatusRepo->createOrderStatus($create);
- $this->assertEquals($create['name'], $orderStatus->name);
- $this->assertEquals($create['color'], $orderStatus->color);
- }
- }
|