@@ -50,15 +50,53 @@ public function it_can_query_soft_deletes()
5050 /** @test */
5151 public function it_can_query_global_scopes ()
5252 {
53- $ queryBuilder = QueryBuilder::for (ScopeModel::class);
54-
5553 ScopeModel::create (['name ' => 'John Doe ' ]);
5654 ScopeModel::create (['name ' => 'test ' ]);
5755
58- // Global scope ignores models with name "test"
59- $ this ->assertCount (1 , $ queryBuilder ->get ());
56+ // Global scope on ScopeModel excludes models named 'test'
57+ $ this ->assertCount (1 , QueryBuilder::for (ScopeModel::class)->get ());
58+
59+ $ this ->assertCount (2 , QueryBuilder::for (ScopeModel::query ()->withoutGlobalScopes ())->get ());
60+
61+ $ this ->assertCount (2 , QueryBuilder::for (ScopeModel::class)->withoutGlobalScopes ()->get ());
62+ }
63+
64+ /** @test */
65+ public function it_keeps_eager_loaded_relationships_from_the_base_query ()
66+ {
67+ TestModel::create (['name ' => 'John Doe ' ]);
68+
69+ $ baseQuery = TestModel::with ('relatedModels ' );
70+ $ queryBuilder = QueryBuilder::for ($ baseQuery );
71+
72+ $ this ->assertTrue ($ baseQuery ->first ()->relationLoaded ('relatedModels ' ));
73+ $ this ->assertTrue ($ queryBuilder ->first ()->relationLoaded ('relatedModels ' ));
74+ }
75+
76+ /** @test */
77+ public function it_keeps_local_macros_added_to_the_base_query ()
78+ {
79+ $ baseQuery = TestModel::query ();
80+
81+ $ baseQuery ->macro ('customMacro ' , function ($ builder ) {
82+ return $ builder ->where ('name ' , 'Foo ' );
83+ });
84+
85+ $ queryBuilder = QueryBuilder::for ($ baseQuery );
86+
87+ $ this ->assertEquals ($ baseQuery ->customMacro ()->toSql (), $ queryBuilder ->customMacro ()->toSql ());
88+ }
89+
90+ /** @test */
91+ public function it_keeps_the_on_delete_callback_added_to_the_base_query ()
92+ {
93+ $ baseQuery = TestModel::query ();
94+
95+ $ baseQuery ->onDelete (function () {
96+ return 'onDelete called ' ;
97+ });
6098
61- $ this ->assertCount ( 2 , $ queryBuilder -> withoutGlobalScopes ( )->get ());
99+ $ this ->assertEquals ( ' onDelete called ' , QueryBuilder:: for ( $ baseQuery )->delete ());
62100 }
63101
64102 /** @test */
0 commit comments