diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index 151c114310..746d88a589 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -241,6 +241,11 @@ class UserFactory extends Factory return $this->appendPermission(['components.view' => '1']); } + public function createCompanies() + { + return $this->appendPermission(['companies.create' => '1']); + } + public function createComponents() { return $this->appendPermission(['components.create' => '1']); diff --git a/tests/Feature/Companies/Ui/CreateCompaniesTest.php b/tests/Feature/Companies/Ui/CreateCompaniesTest.php new file mode 100644 index 0000000000..a00e208350 --- /dev/null +++ b/tests/Feature/Companies/Ui/CreateCompaniesTest.php @@ -0,0 +1,53 @@ +actingAs(User::factory()->create()) + ->get(route('companies.create')) + ->assertForbidden(); + } + + public function testCreateCompanyPageRenders() + { + $this->actingAs(User::factory()->createCompanies()->create()) + ->get(route('companies.create')) + ->assertOk() + ->assertViewIs('companies.edit'); + } + + public function testValidDataRequiredToCreateCompany() + { + $this->actingAs(User::factory()->createCompanies()->create()) + ->post(route('companies.store'), [ + // + ]) + ->assertSessionHasErrors([ + 'name', + ]); + } + + public function testCanCreateCompany() + { + $data = [ + 'email' => 'email@example.com', + 'fax' => '619-666-6666', + 'name' => 'My New Company', + 'phone' => '619-555-5555', + ]; + + $user = User::factory()->createCompanies()->create(); + + $this->actingAs($user) + ->post(route('companies.store'), array_merge($data, ['redirect_option' => 'index'])) + ->assertRedirect(route('companies.index')); + + $this->assertDatabaseHas('companies', array_merge($data)); + } +}