From 72536fffb22222b1b94b3c3219471d5c95f8b368 Mon Sep 17 00:00:00 2001 From: Jonathan Bernardi Date: Sun, 16 Apr 2017 13:04:21 -0700 Subject: [PATCH] add user repository test --- codeception.yml | 7 +++ composer.json | 1 + phpunit.xml | 8 +++ tests/unit/Repository/UserRepositoryTest.php | 66 ++++++++++++++++++++ 4 files changed, 82 insertions(+) create mode 100644 tests/unit/Repository/UserRepositoryTest.php diff --git a/codeception.yml b/codeception.yml index 2f2c202..254b8e9 100644 --- a/codeception.yml +++ b/codeception.yml @@ -11,6 +11,13 @@ settings: memory_limit: 1024M strict_xml: true backup_globals: false +coverage: + enabled: false + remote: false + include: + - app/* + exclude: + - app/configs/* extensions: enabled: - Codeception\Extension\RunFailed diff --git a/composer.json b/composer.json index 357fc3f..7a86777 100644 --- a/composer.json +++ b/composer.json @@ -70,6 +70,7 @@ ], "psr-4": { "Test\\Model\\": "tests/_support/Helper", + "Test\\Unit\\": "tests/Unit", "Test\\Traits\\": "tests/Traits" } }, diff --git a/phpunit.xml b/phpunit.xml index bf77072..e11c5f5 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -15,6 +15,14 @@ ./tests/unit/ + + + ./app + + ./app/configs + + + diff --git a/tests/unit/Repository/UserRepositoryTest.php b/tests/unit/Repository/UserRepositoryTest.php new file mode 100644 index 0000000..f75306f --- /dev/null +++ b/tests/unit/Repository/UserRepositoryTest.php @@ -0,0 +1,66 @@ +repository = new UserRepository(); + } + + + public function test_finding_by_id() + { + $user = factory(User::class)->create(['email' => 'steve@example.com']); + $found = $this->repository->findUserById($user->id); + $this->assertEquals($user->id, $found->id); + } + + /** + * @expectedException \Illuminate\Database\Eloquent\ModelNotFoundException + */ + public function test_failing_to_find_by_id() + { + $user = factory(User::class)->create(['email' => 'steve@example.com']); + $this->repository->findUserById($user->id + 10); + } + + public function test_finding_by_email() + { + $user = factory(User::class)->create(['email' => 'steve@example.com']); + $found = $this->repository->findUserByEmail($user->email); + $this->assertEquals($user->id, $found->id); + + $found = $this->repository->findUserByEmail('bob@example.com'); + $this->assertNull($found); + } + + public function test_email_address_unique_check() + { + $user = factory(User::class)->create(['email' => 'steve@example.com']); + $email = 'bob@example.com'; + $this->assertFalse($this->repository->emailAddressExists($email)); + $this->assertTrue($this->repository->emailAddressExists($user->email)); + $this->assertFalse($this->repository->emailAddressExists($user->email, $user->id)); + } + + public function test_password_verification() + { + $user = factory(User::class)->create(['password' => password_hash('password', PASSWORD_DEFAULT)]); + $this->assertTrue($this->repository->passwordHashMatches($user->id, 'password')); + $this->assertFalse($this->repository->passwordHashMatches($user->id, 'not-password')); + $this->assertFalse($this->repository->passwordHashMatches($user->id + 10, 'password')); + } +}