/** @test */ public function it_returns_users_having_any_company_of_an_industry() { $dbUserRepository = new DbUserRepository(); $dbCompanyRepository = new DbCompanyRepository(); factory(User::class, 2)->create(); // Use to validate it does not return these. $expectedUsers = factory(User::class, 2)->create(); $dbUserRepository->assignCompanyRepresentativeRole($expectedUsers->get(0)); $dbUserRepository->assignCompanyRepresentativeRole($expectedUsers->get(1)); $industry = factory(Industry::class)->create(); factory(Company::class)->create(); factory(Company::class)->create(['industry_id' => $industry->id, 'user_id' => $expectedUsers->get(0)->id]); $keys = $expectedUsers->get(0)->getFillable(); $actualUsers = $dbUserRepository->whereCompaniesIndustry($industry)->get(); $this->assertTrue($dbUserRepository->hasCompanyRepresentativeRole($actualUsers->get(0))); $this->assertCount(1, $actualUsers); $this->assertSame(array_only($expectedUsers->toArray(), $keys), array_only($actualUsers->toArray(), $keys)); $company = factory(Company::class)->create(['industry_id' => $industry->id]); $dbCompanyRepository->assignRepresentativeUser($company, $expectedUsers->get(0)); $actualUsers = $dbUserRepository->whereCompaniesIndustry($industry)->get(); $this->assertCount(2, $actualUsers); }