TestCase.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <?php
  2. namespace Tests;
  3. use App\Shop\Addresses\Address;
  4. use App\Shop\Categories\Category;
  5. use App\Shop\Countries\Country;
  6. use App\Shop\Couriers\Courier;
  7. use App\Shop\Couriers\Repositories\CourierRepository;
  8. use App\Shop\Employees\Employee;
  9. use App\Shop\Customers\Customer;
  10. use App\Shop\Employees\Repositories\EmployeeRepository;
  11. use App\Shop\OrderStatuses\OrderStatus;
  12. use App\Shop\OrderStatuses\Repositories\OrderStatusRepository;
  13. use App\Shop\Permissions\Permission;
  14. use App\Shop\Products\Product;
  15. use App\Shop\Roles\Repositories\RoleRepository;
  16. use App\Shop\Roles\Role;
  17. use Gloudemans\Shoppingcart\Cart;
  18. use Illuminate\Foundation\Testing\DatabaseMigrations;
  19. use Illuminate\Foundation\Testing\DatabaseTransactions;
  20. use Illuminate\Foundation\Testing\TestCase as BaseTestCase;
  21. use Faker\Factory as Faker;
  22. abstract class TestCase extends BaseTestCase
  23. {
  24. use CreatesApplication, DatabaseMigrations, DatabaseTransactions;
  25. protected $faker;
  26. protected $employee;
  27. protected $customer;
  28. protected $address;
  29. protected $product;
  30. protected $category;
  31. protected $country;
  32. protected $province;
  33. protected $city;
  34. protected $courier;
  35. protected $orderStatus;
  36. protected $cart;
  37. protected $role;
  38. /**
  39. * Set up the test
  40. */
  41. public function setUp()
  42. {
  43. parent::setUp();
  44. $this->faker = Faker::create();
  45. $this->employee = factory(Employee::class)->create();
  46. $adminData = ['name' => 'admin'];
  47. $roleRepo = new RoleRepository(new Role);
  48. $admin = $roleRepo->createRole($adminData);
  49. $this->role = $admin;
  50. $createProductPerm = factory(Permission::class)->create([
  51. 'name' => 'create-product',
  52. 'display_name' => 'Create product'
  53. ]);
  54. $viewProductPerm = factory(Permission::class)->create([
  55. 'name' => 'view-product',
  56. 'display_name' => 'View product'
  57. ]);
  58. $updateProductPerm = factory(Permission::class)->create([
  59. 'name' => 'update-product',
  60. 'display_name' => 'Update product'
  61. ]);
  62. $deleteProductPerm = factory(Permission::class)->create([
  63. 'name' => 'delete-product',
  64. 'display_name' => 'Delete product'
  65. ]);
  66. $roleSuperRepo = new RoleRepository($admin);
  67. $roleSuperRepo->attachToPermission($createProductPerm);
  68. $roleSuperRepo->attachToPermission($viewProductPerm);
  69. $roleSuperRepo->attachToPermission($updateProductPerm);
  70. $roleSuperRepo->attachToPermission($deleteProductPerm);
  71. $employeeRepo = new EmployeeRepository($this->employee);
  72. $employeeRepo->syncRoles([$admin->id]);
  73. $this->product = factory(Product::class)->create();
  74. $this->category = factory(Category::class)->create();
  75. $this->customer = factory(Customer::class)->create();
  76. $this->country = factory(Country::class)->create();
  77. $this->address = factory(Address::class)->create();
  78. $courierData = [
  79. 'name' => $this->faker->word,
  80. 'description' => $this->faker->paragraph,
  81. 'url' => $this->faker->sentence,
  82. 'is_free' => 1,
  83. 'status' => 1
  84. ];
  85. $courierRepo = new CourierRepository(new Courier);
  86. $this->courier = $courierRepo->createCourier($courierData);
  87. $orderStatusData = [
  88. 'name' => $this->faker->name,
  89. 'color' => $this->faker->word
  90. ];
  91. $orderStatusRepo = new OrderStatusRepository(new OrderStatus);
  92. $this->orderStatus = $orderStatusRepo->createOrderStatus($orderStatusData);
  93. $session = $this->app->make('session');
  94. $events = $this->app->make('events');
  95. $this->cart = new Cart($session, $events);
  96. }
  97. public function tearDown()
  98. {
  99. $this->artisan('migrate:reset');
  100. parent::tearDown();
  101. }
  102. }