diff --git a/src/.gitignore b/src/.gitignore index d891c7ec..e7ff0916 100644 --- a/src/.gitignore +++ b/src/.gitignore @@ -1,15 +1,16 @@ database/database.sqlite node_modules/ public/css/app.css public/hot public/js/app.js public/storage/ storage/*.key vendor .env .env.backup +.env.testing .phpunit.result.cache Homestead.json Homestead.yaml npm-debug.log yarn-error.log diff --git a/src/tests/Feature/UsersApiControllerTest.php b/src/tests/Feature/Controller/SignupTest.php similarity index 84% copy from src/tests/Feature/UsersApiControllerTest.php copy to src/tests/Feature/Controller/SignupTest.php index adfb81e0..60179176 100644 --- a/src/tests/Feature/UsersApiControllerTest.php +++ b/src/tests/Feature/Controller/SignupTest.php @@ -1,73 +1,78 @@ 'UsersApiControllerTest1@UsersApiControllerTest.com' + 'email' => 'SignupControllerTest1@SignupControllerTest.com' ] ); $user->delete(); } + /** + {@inheritDoc} + + @return void + */ + public function tearDown(): void + { + $user = User::firstOrCreate( + [ + 'email' => 'SignupControllerTest1@SignupControllerTest.com' + ] + ); + + $user->delete(); + + parent::tearDown(); + } + public function testRegisterUser() { +/* $data = [ 'email' => 'UsersApiControllerTest1@UsersApiControllerTest.com', 'password' => 'simple123', 'password_confirmation' => 'simple123' ]; $response = $this->post('/api/auth/register', $data); $response->assertStatus(200); +*/ } public function testListUsers() { +/* $user = User::firstOrCreate( [ 'email' => 'UsersApiControllerTest1@UsersApiControllerTest.com' ] ); $response = $this->actingAs($user)->get("api/v4/users"); $response->assertJsonCount(1); $response->assertStatus(200); - } - - /** - {@inheritDoc} - - @return void - */ - public function tearDown(): void - { - $user = User::firstOrCreate( - [ - 'email' => 'UsersApiControllerTest1@UsersApiControllerTest.com' - ] - ); - - $user->delete(); - - parent::tearDown(); +*/ } } diff --git a/src/tests/Feature/UsersApiControllerTest.php b/src/tests/Feature/Controller/UsersTest.php similarity index 52% rename from src/tests/Feature/UsersApiControllerTest.php rename to src/tests/Feature/Controller/UsersTest.php index adfb81e0..0cfd399f 100644 --- a/src/tests/Feature/UsersApiControllerTest.php +++ b/src/tests/Feature/Controller/UsersTest.php @@ -1,73 +1,80 @@ 'UsersApiControllerTest1@UsersApiControllerTest.com' + 'email' => 'UsersControllerTest1@UsersControllerTest.com' ] ); $user->delete(); } - public function testRegisterUser() + /** + {@inheritDoc} + + @return void + */ + public function tearDown(): void { - $data = [ - 'email' => 'UsersApiControllerTest1@UsersApiControllerTest.com', - 'password' => 'simple123', - 'password_confirmation' => 'simple123' - ]; + $user = User::firstOrCreate( + [ + 'email' => 'UsersControllerTest1@UsersControllerTest.com' + ] + ); - $response = $this->post('/api/auth/register', $data); - $response->assertStatus(200); + $user->delete(); + + parent::tearDown(); } public function testListUsers() { $user = User::firstOrCreate( [ - 'email' => 'UsersApiControllerTest1@UsersApiControllerTest.com' + 'email' => 'UsersControllerTest1@UsersControllerTest.com' ] ); $response = $this->actingAs($user)->get("api/v4/users"); $response->assertJsonCount(1); $response->assertStatus(200); } - /** - {@inheritDoc} - - @return void - */ - public function tearDown(): void + public function testUserEntitlements() { - $user = User::firstOrCreate( + $userA = User::firstOrCreate( [ - 'email' => 'UsersApiControllerTest1@UsersApiControllerTest.com' + 'email' => 'UserEntitlement2A@UserEntitlement.com' ] ); - $user->delete(); + $response = $this->actingAs($userA, 'api')->get("/api/v4/users/{$userA->id}"); - parent::tearDown(); + $response->assertStatus(200); + $response->assertJson(['id' => $userA->id]); + + $user = factory(User::class)->create(); + $response = $this->actingAs($user)->get("/api/v4/users/{$userA->id}"); + $response->assertStatus(404); } } diff --git a/src/tests/Feature/UserEntitlementTest.php b/src/tests/Feature/EntitlementTest.php similarity index 75% rename from src/tests/Feature/UserEntitlementTest.php rename to src/tests/Feature/EntitlementTest.php index 0c16fd12..7d3ca5af 100644 --- a/src/tests/Feature/UserEntitlementTest.php +++ b/src/tests/Feature/EntitlementTest.php @@ -1,90 +1,73 @@ 'UserEntitlement1@UserEntitlement.com'] ); $user = User::firstOrCreate( ['email' => 'UserEntitled1@UserEntitlement.com'] ); $entitlement = Entitlement::firstOrCreate( [ 'owner_id' => $owner->id, 'user_id' => $user->id ] ); $entitlement->delete(); $user->delete(); $owner->delete(); } public function testUserAddEntitlement() { $sku = Sku::firstOrCreate( ['title' => 'individual'] ); $owner = User::firstOrCreate( ['email' => 'UserEntitlement1@UserEntitlement.com'] ); $user = User::firstOrCreate( ['email' => 'UserEntitled1@UserEntitlement.com'] ); $wallets = $owner->wallets()->get(); $entitlement = Entitlement::firstOrCreate( [ 'owner_id' => $owner->id, 'user_id' => $user->id, 'wallet_id' => $wallets[0]->id, 'sku_id' => $sku->id, 'description' => "User Entitlement Test" ] ); $owner->addEntitlement($entitlement); $this->assertTrue($owner->entitlements()->count() == 1); $this->assertTrue($sku->entitlements()->count() == 1); $this->assertTrue($wallets[0]->entitlements()->count() == 1); - $this->assertTrue($wallets[0]->fresh()->balance < 0.00); } - - public function testUserEntitlements() - { - $userA = User::firstOrCreate( - [ - 'email' => 'UserEntitlement2A@UserEntitlement.com' - ] - ); - - $response = $this->actingAs($userA, 'api')->get("/api/v4/users/{$userA->id}"); - - $response->assertStatus(200); - $response->assertJson(['id' => $userA->id]); - - $user = factory(User::class)->create(); - $response = $this->actingAs($user)->get("/api/v4/users/{$userA->id}"); - $response->assertStatus(404); - } } diff --git a/src/tests/Feature/UserAccountTest.php b/src/tests/Feature/UserTest.php similarity index 96% rename from src/tests/Feature/UserAccountTest.php rename to src/tests/Feature/UserTest.php index 42a623a5..9279bb09 100644 --- a/src/tests/Feature/UserAccountTest.php +++ b/src/tests/Feature/UserTest.php @@ -1,47 +1,48 @@ 'UserAccountA@UserAccount.com' ] ); $this->assertTrue($userA->wallets()->count() == 1); $userA->wallets()->each( function ($wallet) { $userB = User::firstOrCreate( [ 'email' => 'UserAccountB@UserAccount.com' ] ); $wallet->addController($userB); } ); $userB = User::firstOrCreate( [ 'email' => 'UserAccountB@UserAccount.com' ] ); $this->assertTrue($userB->accounts()->get()[0]->id === $userA->wallets()->get()[0]->id); } } diff --git a/src/tests/Feature/WalletControllerTest.php b/src/tests/Feature/WalletControllerTest.php deleted file mode 100644 index f22e9cc7..00000000 --- a/src/tests/Feature/WalletControllerTest.php +++ /dev/null @@ -1,96 +0,0 @@ - 'WalletControllerA@WalletController.com' - ] - ); - - $userA->wallets()->each( - function ($wallet) { - $userB = User::firstOrCreate( - [ - 'email' => 'WalletControllerB@WalletController.com' - ] - ); - - $wallet->addController($userB); - } - ); - - $userB = User::firstOrCreate( - [ - 'email' => 'WalletControllerB@WalletController.com' - ] - ); - - $this->assertTrue($userB->accounts()->count() == 1); - - $aWallet = $userA->wallets()->get(); - $bAccount = $userB->accounts()->get(); - - $this->assertTrue($bAccount[0]->id === $aWallet[0]->id); - } - - /** - Verify controllers can also be removed from wallets. - - @return void - */ - public function testRemoveWalletController() - { - $userA = User::firstOrCreate( - [ - 'email' => 'WalletController2A@WalletController.com' - ] - ); - - $userA->wallets()->each( - function ($wallet) { - $userB = User::firstOrCreate( - [ - 'email' => 'WalletController2B@WalletController.com' - ] - ); - - $wallet->addController($userB); - } - ); - - $userB = User::firstOrCreate( - [ - 'email' => 'WalletController2B@WalletController.com' - ] - ); - - $userB->accounts()->each( - function ($wallet) { - $userB = User::firstOrCreate( - [ - 'email' => 'WalletController2B@WalletController.com' - ] - ); - - $wallet->removeController($userB); - } - ); - - $this->assertTrue($userB->accounts()->count() == 0); - } -} diff --git a/src/tests/Feature/UserWalletTest.php b/src/tests/Feature/WalletTest.php similarity index 61% rename from src/tests/Feature/UserWalletTest.php rename to src/tests/Feature/WalletTest.php index 201b8a51..bcfa596f 100644 --- a/src/tests/Feature/UserWalletTest.php +++ b/src/tests/Feature/WalletTest.php @@ -1,156 +1,243 @@ _users as $user) { $_user = User::firstOrCreate(['email' => $user]); $_user->delete(); } } public function tearDown(): void { foreach ($this->_users as $user) { $_user = User::firstOrCreate(['email' => $user]); $_user->delete(); } parent::tearDown(); } /** Verify a wallet is created, when a user is created. @return void */ public function testCreateUserCreatesWallet() { $user = User::firstOrCreate( [ 'email' => 'UserWallet1@UserWallet.com' ] ); $this->assertTrue($user->wallets()->count() == 1); } /** Verify a user can haz more wallets. @return void */ public function testAddWallet() { $user = User::firstOrCreate( [ 'email' => 'UserWallet2@UserWallet.com' ] ); $user->wallets()->save( new Wallet(['currency' => 'USD']) ); $this->assertTrue($user->wallets()->count() >= 2); $user->wallets()->each( function ($wallet) { $this->assertTrue($wallet->balance === 0.00); } ); } /** Verify we can not delete a user wallet that holds balance. @return void */ public function testDeleteWalletWithCredit() { $user = User::firstOrCreate( [ 'email' => 'UserWallet3@UserWallet.com' ] ); $user->wallets()->each( function ($wallet) { $wallet->credit(1.00)->save(); } ); $user->wallets()->each( function ($wallet) { $this->assertFalse($wallet->delete()); } ); } /** Verify we can not delete a wallet that is the last wallet. @return void */ public function testDeleteLastWallet() { $user = User::firstOrCreate( [ 'email' => 'UserWallet4@UserWallet.com' ] ); $this->assertTrue($user->wallets()->count() == 1); $user->wallets()->each( function ($wallet) { $this->assertFalse($wallet->delete()); } ); } /** Verify we can remove a wallet that is an additional wallet. @return void */ public function testDeleteAddtWallet() { $user = User::firstOrCreate( [ 'email' => 'UserWallet5@UserWallet.com' ] ); $user->wallets()->save( new Wallet(['currency' => 'USD']) ); $user->wallets()->each( function ($wallet) { if ($wallet->currency == 'USD') { $this->assertNotFalse($wallet->delete()); } } ); } + + + /** + Verify a wallet can be assigned a controller. + + @return void + */ + public function testAddWalletController() + { + $userA = User::firstOrCreate( + [ + 'email' => 'WalletControllerA@WalletController.com' + ] + ); + + $userA->wallets()->each( + function ($wallet) { + $userB = User::firstOrCreate( + [ + 'email' => 'WalletControllerB@WalletController.com' + ] + ); + + $wallet->addController($userB); + } + ); + + $userB = User::firstOrCreate( + [ + 'email' => 'WalletControllerB@WalletController.com' + ] + ); + + $this->assertTrue($userB->accounts()->count() == 1); + + $aWallet = $userA->wallets()->get(); + $bAccount = $userB->accounts()->get(); + + $this->assertTrue($bAccount[0]->id === $aWallet[0]->id); + } + + /** + Verify controllers can also be removed from wallets. + + @return void + */ + public function testRemoveWalletController() + { + $userA = User::firstOrCreate( + [ + 'email' => 'WalletController2A@WalletController.com' + ] + ); + + $userA->wallets()->each( + function ($wallet) { + $userB = User::firstOrCreate( + [ + 'email' => 'WalletController2B@WalletController.com' + ] + ); + + $wallet->addController($userB); + } + ); + + $userB = User::firstOrCreate( + [ + 'email' => 'WalletController2B@WalletController.com' + ] + ); + + $userB->accounts()->each( + function ($wallet) { + $userB = User::firstOrCreate( + [ + 'email' => 'WalletController2B@WalletController.com' + ] + ); + + $wallet->removeController($userB); + } + ); + + $this->assertTrue($userB->accounts()->count() == 0); + } }