55use App \Domains \Contact \ManageContact \Services \MoveContactToAnotherVault ;
66use App \Exceptions \NotEnoughPermissionException ;
77use App \Models \Account ;
8+ use App \Models \Company ;
89use App \Models \Contact ;
910use App \Models \User ;
1011use App \Models \Vault ;
@@ -30,6 +31,58 @@ public function it_moves_a_contact_to_another_vault(): void
3031 $ this ->executeService ($ regis , $ regis ->account , $ vault , $ newVault , $ contact );
3132 }
3233
34+ /** @test */
35+ public function it_moves_a_contact_to_another_vault_and_copy_the_company_information_if_there_are_multiple_contacts_in_it (): void
36+ {
37+ $ regis = $ this ->createUser ();
38+ $ vault = $ this ->createVault ($ regis ->account );
39+ $ vault = $ this ->setPermissionInVault ($ regis , Vault::PERMISSION_EDIT , $ vault );
40+ $ newVault = $ this ->createVault ($ regis ->account );
41+ $ newVault = $ this ->setPermissionInVault ($ regis , Vault::PERMISSION_EDIT , $ newVault );
42+ $ contact = Contact::factory ()->create (['vault_id ' => $ vault ->id ]);
43+ $ company = Company::factory ()->create (['vault_id ' => $ vault ->id ]);
44+ Contact::factory ()->count (2 )->create (['vault_id ' => $ vault ->id , 'company_id ' => $ company ->id ]);
45+ $ contact ->company_id = $ company ->id ;
46+ $ contact ->save ();
47+
48+ $ this ->executeService ($ regis , $ regis ->account , $ vault , $ newVault , $ contact );
49+
50+ $ this ->assertDatabaseHas ('companies ' , [
51+ 'id ' => $ company ->id ,
52+ ]);
53+
54+ $ this ->assertDatabaseMissing ('contacts ' , [
55+ 'id ' => $ contact ->id ,
56+ 'company_id ' => $ company ->id ,
57+ ]);
58+ }
59+
60+ /** @test */
61+ public function it_moves_a_contact_to_another_vault_and_move_the_company_information_if_there_are_no_other_contacts_in_it (): void
62+ {
63+ $ regis = $ this ->createUser ();
64+ $ vault = $ this ->createVault ($ regis ->account );
65+ $ vault = $ this ->setPermissionInVault ($ regis , Vault::PERMISSION_EDIT , $ vault );
66+ $ newVault = $ this ->createVault ($ regis ->account );
67+ $ newVault = $ this ->setPermissionInVault ($ regis , Vault::PERMISSION_EDIT , $ newVault );
68+ $ contact = Contact::factory ()->create (['vault_id ' => $ vault ->id ]);
69+ $ company = Company::factory ()->create (['vault_id ' => $ vault ->id ]);
70+ $ contact ->company_id = $ company ->id ;
71+ $ contact ->save ();
72+
73+ $ this ->executeService ($ regis , $ regis ->account , $ vault , $ newVault , $ contact );
74+
75+ $ this ->assertDatabaseMissing ('companies ' , [
76+ 'id ' => $ company ->id ,
77+ 'vault_id ' => $ vault ->id ,
78+ ]);
79+
80+ $ this ->assertDatabaseHas ('companies ' , [
81+ 'id ' => $ company ->id ,
82+ 'vault_id ' => $ newVault ->id ,
83+ ]);
84+ }
85+
3386 /** @test */
3487 public function it_fails_if_wrong_parameters_are_given (): void
3588 {
0 commit comments