diff --git a/tests/JoinRelationshipExtraConditionsTest.php b/tests/JoinRelationshipExtraConditionsTest.php index 427b1c3..256cd8d 100644 --- a/tests/JoinRelationshipExtraConditionsTest.php +++ b/tests/JoinRelationshipExtraConditionsTest.php @@ -24,8 +24,7 @@ public function test_join_belongs_to_with_additional_conditions() $query = Post::query()->joinRelationship('userWithTrashed')->toSql(); $posts = Post::query()->joinRelationship('userWithTrashed')->get(); - - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "users" on "posts"."user_id" = "users"."id"', $query ); @@ -46,12 +45,12 @@ public function test_join_belongs_to_with_additional_conditions_and_alias() $this->assertCount(1, $posts); - $this->assertStringContainsString( + $this->assertQueryContains( '."rockstar" = ?', $query ); - $this->assertStringNotContainsString( + $this->assertQueryNotContains( 'and "users"."rockstar" = ?', $query ); @@ -69,12 +68,12 @@ public function test_join_has_many_relationship_with_additional_conditions() $this->assertCount(1, $categories); $this->assertEquals($category1->id, $categories->first()->id); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" on "posts"."category_id" = "categories"."id"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'and "posts"."published" = ?', $query ); @@ -97,7 +96,7 @@ public function test_join_has_many_relationship_with_additional_conditions_and_a $query ); - $this->assertStringContainsString( + $this->assertQueryContains( '."published" = ?', $query ); @@ -116,12 +115,12 @@ public function test_join_has_one_relationship_with_additional_conditions() $this->assertCount(1, $users); $this->assertEquals($user1->id, $users->first()->id); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "user_profiles" on "user_profiles"."user_id" = "users"."id"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'and "city" is not null', $query ); @@ -141,7 +140,7 @@ public function test_extra_conditions_with_belongs_to_many() $this->assertCount(2, Group::joinRelationship('posts')->get()); $this->assertCount(1, Group::joinRelationship('publishedPosts')->get()); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" on "posts"."id" = "post_groups"."post_id" and "posts"."deleted_at" is null and "posts"."published" = ?', Group::joinRelationship('publishedPosts')->toSql() ); @@ -163,7 +162,7 @@ public function test_extra_conditions_in_pivot_with_belongs_to_many_in() $this->assertCount(3, Group::joinRelationship('posts')->get()); $this->assertCount(2, Group::joinRelationship('recentPosts')->get()); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" on "posts"."id" = "post_groups"."post_id" and "posts"."deleted_at" is null and "post_groups"."assigned_at" >= ?', Group::joinRelationship('recentPosts')->toSql() ); @@ -180,7 +179,7 @@ public function test_extra_conditions_in_morph_many() $this->assertCount(1, $posts); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "images" on "images"."imageable_id" = "posts"."id" and "images"."imageable_type" = ? and "cover" = ?', $query ); @@ -202,12 +201,12 @@ public function test_extra_conditions_in_morph_to_many() $this->assertCount(1, $postsQuery->get()); $this->assertCount(1, $commentsQuery->get()); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "taggables" on "taggables"."taggable_id" = "posts"."id" and "taggables"."taggable_type" = ?', $postsQuery->toSql() ); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "taggables" on "taggables"."taggable_id" = "comments"."id" and "taggables"."taggable_type" = ?', $commentsQuery->toSql() ); @@ -238,7 +237,7 @@ public function test_extra_conditions_with_closure() $query = User::joinRelationship('publishedOrReviewedPosts')->toSql(); User::joinRelationship('publishedOrReviewedPosts')->get(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" on "posts"."user_id" = "users"."id" and "posts"."deleted_at" is null and ("published" = ? or "reviewed" = ?)', $query ); diff --git a/tests/JoinRelationshipTest.php b/tests/JoinRelationshipTest.php index ce9bc44..20434c7 100644 --- a/tests/JoinRelationshipTest.php +++ b/tests/JoinRelationshipTest.php @@ -20,7 +20,7 @@ public function test_join_first_level_relationship() { $query = User::query()->joinRelationship('posts')->toSql(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" on "posts"."user_id" = "users"."id"', $query ); @@ -31,7 +31,7 @@ public function test_left_join_first_level_relationship() { $query = User::query()->leftJoinRelationship('posts')->toSql(); - $this->assertStringContainsString( + $this->assertQueryContains( 'left join "posts" on "posts"."user_id" = "users"."id"', $query ); @@ -42,7 +42,7 @@ public function test_right_join_first_level_relationship() { $query = User::query()->rightJoinRelationship('posts')->toSql(); - $this->assertStringContainsString( + $this->assertQueryContains( 'right join "posts" on "posts"."user_id" = "users"."id"', $query ); @@ -53,12 +53,12 @@ public function test_join_second_level_relationship() { $query = User::query()->joinRelationship('posts.comments')->toSql(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" on "posts"."user_id" = "users"."id"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "comments" on "comments"."post_id" = "posts"."id"', $query ); @@ -69,12 +69,12 @@ public function test_left_join_second_level_relationship() { $query = User::query()->leftJoinRelationship('posts.comments')->toSql(); - $this->assertStringContainsString( + $this->assertQueryContains( 'left join "posts" on "posts"."user_id" = "users"."id"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'left join "comments" on "comments"."post_id" = "posts"."id"', $query ); @@ -85,12 +85,12 @@ public function test_right_join_second_level_relationship() { $query = User::query()->rightJoinRelationship('posts.comments')->toSql(); - $this->assertStringContainsString( + $this->assertQueryContains( 'right join "posts" on "posts"."user_id" = "users"."id"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'right join "comments" on "comments"."post_id" = "posts"."id"', $query ); @@ -105,7 +105,7 @@ public function test_join_morph_relationship() $posts = Post::query()->joinRelationship('images')->get(); $this->assertCount(5, $posts); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "images" on "images"."imageable_id" = "posts"."id" and "images"."imageable_type" = ?', $query ); @@ -116,12 +116,12 @@ public function test_join_morph_nested_relationship() { $query = User::query()->joinRelationship('posts.images')->toSql(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" on "posts"."user_id" = "users"."id"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "images" on "images"."imageable_id" = "posts"."id" and "images"."imageable_type" = ?', $query ); @@ -139,12 +139,12 @@ public function test_apply_condition_to_join() // running to make sure it doesn't throw any exceptions $queryBuilder->get(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" on "posts"."user_id" = "users"."id"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'and "posts"."published" = ?', $query ); @@ -164,12 +164,12 @@ public function test_apply_condition_to_join_using_related_model_scopes() // running to make sure it doesn't throw any exceptions $queryBuilder->get(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" on "posts"."user_id" = "users"."id"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'and "posts"."published" = ?', $query ); @@ -188,12 +188,12 @@ public function test_apply_condition_to_join_using_custom_eloquent_builder_model // running to make sure it doesn't throw any exceptions $queryBuilder->get(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" on "posts"."user_id" = "users"."id"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'and "reviewed" = ?', $query ); @@ -215,22 +215,22 @@ public function test_apply_condition_to_nested_joins() // running to make sure it doesn't throw any exceptions $queryBuilder->get(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" on "posts"."user_id" = "users"."id"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'and "posts"."published" = ?', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "comments" on "comments"."post_id" = "posts"."id"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'and "comments"."approved" = ?', $query ); @@ -241,12 +241,12 @@ public function test_join_belongs_to_many() { $query = User::query()->joinRelationship('groups')->toSql(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "group_members" on "group_members"."user_id" = "users"."id"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "groups" on "groups"."id" = "group_members"."group_id"', $query ); @@ -261,12 +261,12 @@ public function test_join_belongs_to_many_with_callback() }, ])->toSql(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "group_members" on "group_members"."user_id" = "users"."id"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "groups" on "groups"."id" = "group_members"."group_id" and "groups"."name" = ?', $query ); @@ -284,7 +284,7 @@ public function test_it_doesnt_join_the_same_relationship_twice() // making sure it doesn't throw any errors User::query()->select('users.*')->joinRelationship('posts')->joinRelationship('posts')->get(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" on "posts"."user_id" = "users"."id"', $query ); @@ -313,7 +313,7 @@ public function test_it_doesnt_join_the_same_relationship_twice_with_nested() ->joinRelationship('posts.images') ->get(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" on "posts"."user_id" = "users"."id"', $query ); @@ -324,12 +324,12 @@ public function test_it_doesnt_join_the_same_relationship_twice_with_nested() 'It should only make 1 join with the posts table' ); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "comments" on "comments"."post_id" = "posts"."id"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "images" on "images"."imageable_id" = "posts"."id" and "images"."imageable_type" = ?', $query ); @@ -363,7 +363,7 @@ public function test_it_doesnt_join_the_same_relationship_twice_with_complex_nes }, ])->get(); - $this->assertStringContainsString( + $this->assertQueryContains( 'left join "posts" on "posts"."user_id" = "users"."id"', $query ); @@ -374,22 +374,22 @@ public function test_it_doesnt_join_the_same_relationship_twice_with_complex_nes 'It should only make 1 join with the posts table' ); - $this->assertStringContainsString( + $this->assertQueryContains( 'right join "comments" on "comments"."post_id" = "posts"."id"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'left join "images" on "images"."imageable_id" = "posts"."id" and "images"."imageable_type" = ?', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "categories" on "posts"."category_id" = "categories"."id"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'left join "categories" as "category_parent" on "categories"."parent_id" = "category_parent"."id"', $query ); @@ -416,17 +416,17 @@ public function test_it_runs_same_relationship_twice_if_defined_in_different_pla ]) ->get(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "comments" on "comments"."user_id" = "users"."id"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" on "posts"."user_id" = "users"."id"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "comments" as "post_comments" on "post_comments"."post_id" = "posts"."id"', $query ); @@ -471,7 +471,7 @@ public function test_join_model_with_soft_deletes() { $query = UserProfile::query()->joinRelationship('user')->toSql(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "users" on "user_profiles"."user_id" = "users"."id" and "users"."deleted_at" is null', $query ); @@ -498,8 +498,8 @@ public function test_join_with_alias_using_alias_as_string() $innerJoinQuery = User::query()->select('profile.city')->joinRelationship('profile', 'p')->toSql(); $leftJoinQuery = User::query()->select('profile.city')->leftJoinRelationship('profile', 'p')->toSql(); - $this->assertStringContainsString('inner join "user_profiles" as "p"', $innerJoinQuery); - $this->assertStringContainsString('left join "user_profiles" as "p"', $leftJoinQuery); + $this->assertQueryContains('inner join "user_profiles" as "p"', $innerJoinQuery); + $this->assertQueryContains('left join "user_profiles" as "p"', $leftJoinQuery); } /** @test */ @@ -507,12 +507,12 @@ public function test_it_automatically_includes_select_statement_if_not_defined() { $query = User::joinRelationship('posts')->toSql(); - $this->assertStringContainsString( + $this->assertQueryContains( 'select "users".* from "users"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" on "posts"."user_id" = "users"."id"', $query ); @@ -528,12 +528,12 @@ public function test_it_does_notautomatically_includes_select_statement_if_alrea $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'select "users"."id" from "users"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" on "posts"."user_id" = "users"."id"', $query ); @@ -547,12 +547,12 @@ public function test_join_has_many_through_relationship() $query = User::joinRelationship('commentsThroughPosts')->toSql(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" on "posts"."user_id" = "users"."id"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "comments" on "comments"."post_id" = "posts"."id"', $query ); @@ -568,12 +568,12 @@ public function test_join_has_many_through_relationship_with_alias() ], ])->toSql(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" as "posts_alias"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "comments" as "comments_alias"', $query ); @@ -589,12 +589,12 @@ public function test_join_belongs_to_many_relationship_with_alias() ], ])->toSql(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" as "posts_alias"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "post_groups" as "post_groups_alias"', $query ); @@ -610,12 +610,12 @@ public function test_join_belongs_to_many_with_alias() ], ])->toSql(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" as "posts_alias"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "post_groups" as "post_groups_not_nested"', $query ); @@ -629,12 +629,12 @@ public function test_it_joins_different_tables_with_same_relationship_name() ->joinRelationship('images.translations') ->toSql(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "post_translations" on "post_translations"."post_id" = "posts"."id"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "image_translations" on "image_translations"."image_id" = "images"."id"', $query ); @@ -657,7 +657,7 @@ public function test_passing_where_closure_inside_join_callback() // executing to make sure it does not throw exceptions $query->get(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "categories" as "category_alias" on "posts"."category_id" = "category_alias"."id" and ("category_alias"."parent_id" is null or "category_alias"."parent_id" = ?)', $sql ); @@ -691,8 +691,8 @@ public function test_join_same_relationship_using_named_alias() }) ->toSql(); - $this->assertStringContainsString('inner join "categories" as "category_1" on "posts"."category_id" = "category_1"."id"', $query); - $this->assertStringContainsString('inner join "categories" as "category_2" on "posts"."category_id" = "category_2"."id"', $query); + $this->assertQueryContains('inner join "categories" as "category_1" on "posts"."category_id" = "category_1"."id"', $query); + $this->assertQueryContains('inner join "categories" as "category_2" on "posts"."category_id" = "category_2"."id"', $query); } /** @test */ @@ -712,8 +712,8 @@ public function test_join_same_nested_relationship_using_named_alias() ]) ->toSql(); - $this->assertStringContainsString('inner join "categories" as "category_alias_1" on "posts"."category_id" = "category_alias_1"."id"', $query); - $this->assertStringContainsString('inner join "categories" as "category_alias_2" on "posts"."category_id" = "category_alias_2"."id"', $query); + $this->assertQueryContains('inner join "categories" as "category_alias_1" on "posts"."category_id" = "category_alias_1"."id"', $query); + $this->assertQueryContains('inner join "categories" as "category_alias_2" on "posts"."category_id" = "category_alias_2"."id"', $query); } public function test_union_query() @@ -726,12 +726,12 @@ public function test_union_query() // making sure it doesn't trigger any exceptions $query1->union($query2)->get(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" on "posts"."user_id" = "users"."id"', $sql ); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "comments" on "comments"."post_id" = "posts"."id"', $sql ); @@ -747,7 +747,7 @@ public function test_scope_inside_nested_where() $join->where(fn ($query) => $query->published()); })->toSql(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" on "comments"."post_id" = "posts"."id" and "posts"."deleted_at" is null and ("posts"."published" = ?)', $sql ); @@ -763,7 +763,7 @@ public function test_it_can_type_hint_power_join_clause() $join->where(fn (PowerJoinClause $query) => $query->published()); })->toSql(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" on "comments"."post_id" = "posts"."id" and "posts"."deleted_at" is null and ("posts"."published" = ?)', $sql ); @@ -781,12 +781,12 @@ public function test_it_can_alias_belongs_to_many() 'post_groups' => fn ($join) => $join->as('pivot_posts_1'), ])->toSql(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "post_groups" as "pivot_posts_1" on "pivot_posts_1"."group_id" = "groups"."id"', $sql ); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" as "posts_1" on "posts_1"."id" = "pivot_posts_1"."post_id" and "posts_1"."id" = ?', $sql ); @@ -811,7 +811,7 @@ public function test_has_one_of_many() ->joinRelationship('bestComment') ->first(); - $this->assertStringContainsString( + $this->assertQueryContains( 'order by "comments"."votes" desc limit 1', $bestCommentSql ); @@ -823,7 +823,7 @@ public function test_has_one_of_many() ->joinRelationship('lastComment') ->toSql(); - $this->assertStringContainsString( + $this->assertQueryContains( 'order by "comments"."id" desc limit 1', $lastCommentSql ); @@ -861,7 +861,7 @@ public function test_has_one_of_many_with_left_joins() ->leftJoinRelationship('bestComment') ->first(); - $this->assertStringContainsString( + $this->assertQueryContains( 'order by "comments"."votes" desc limit 1', $bestCommentSql ); @@ -880,7 +880,7 @@ public function test_has_one_of_many_with_left_joins() ->leftJoinRelationship('lastComment') ->first(); - $this->assertStringContainsString( + $this->assertQueryContains( 'order by "comments"."id" desc limit 1', $lastCommentSql ); @@ -937,7 +937,7 @@ public function test_join_morph_to_morphable_class() ->joinRelationship('imageable', morphable: Post::class) ->toSql(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" on "images"."imageable_id" = "posts"."id" and "images"."imageable_type" = ? and "posts"."deleted_at" is null', $sql ); @@ -957,12 +957,12 @@ public function test_has_one_through() $comments = Comment::query()->joinRelationship('postCategory')->get(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" on "posts"."id" = "comments"."post_id"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "categories" on "categories"."id" = "posts"."category_id"', $query ); diff --git a/tests/JoinRelationshipUsingAliasTest.php b/tests/JoinRelationshipUsingAliasTest.php index e90c1bf..360b41a 100644 --- a/tests/JoinRelationshipUsingAliasTest.php +++ b/tests/JoinRelationshipUsingAliasTest.php @@ -34,7 +34,7 @@ public function test_joining_using_provided_alias() $sql = Post::joinRelationshipUsingAlias('category', 'my_alias')->toSql(); - $this->assertStringContainsString('my_alias', $sql); + $this->assertQueryContains('my_alias', $sql); } /** @@ -70,7 +70,7 @@ public function test_joining_the_same_table_twice_using_alias_with_join_as() ])->toSql(); $this->assertCount(1, $posts); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "categories" as "category_parent" on "categories"."parent_id" = "category_parent"."id"', $query ); @@ -89,7 +89,7 @@ public function test_alias_for_has_many() $this->assertCount(1, $users); $this->assertEquals($user1->id, $users->first()->id); - $this->assertStringContainsString('"posts" as', $query); + $this->assertQueryContains('"posts" as', $query); $this->assertStringNotContainsString('"posts"."user_id"', $query); } @@ -107,8 +107,8 @@ public function test_alias_for_has_many_nested() $this->assertCount(1, $users); $this->assertEquals($user1->id, $users->first()->id); - $this->assertStringContainsString('"posts" as', $query); - $this->assertStringContainsString('"comments" as', $query); + $this->assertQueryContains('"posts" as', $query); + $this->assertQueryContains('"comments" as', $query); $this->assertStringNotContainsString('"posts"."user_id"', $query); $this->assertStringNotContainsString('"posts"."id"', $query); $this->assertStringNotContainsString('"comments"."post_id"', $query); @@ -128,8 +128,8 @@ public function test_alias_for_belongs_to_many() $this->assertCount(1, $users); $this->assertEquals($user1->id, $users->first()->id); - $this->assertStringContainsString('"group_members" as', $query); - $this->assertStringContainsString('"groups" as', $query); + $this->assertQueryContains('"group_members" as', $query); + $this->assertQueryContains('"groups" as', $query); } /** @@ -148,10 +148,10 @@ public function test_alias_for_belongs_to_many_nested() $this->assertCount(1, $users); $this->assertEquals($user1->id, $users->first()->id); - $this->assertStringContainsString('"group_members" as', $query); - $this->assertStringContainsString('"groups" as', $query); - $this->assertStringContainsString('"post_groups" as', $query); - $this->assertStringContainsString('"posts" as', $query); + $this->assertQueryContains('"group_members" as', $query); + $this->assertQueryContains('"groups" as', $query); + $this->assertQueryContains('"post_groups" as', $query); + $this->assertQueryContains('"posts" as', $query); } /** @@ -167,7 +167,7 @@ public function test_alias_for_has_one() $this->assertCount(1, $users); $this->assertEquals($user1->id, $users->first()->id); - $this->assertStringContainsString('"user_profiles" as', $query); + $this->assertQueryContains('"user_profiles" as', $query); $this->assertStringNotContainsString('"user_profiles"."user_id"', $query); } @@ -185,9 +185,9 @@ public function test_alias_for_has_many_through() $this->assertCount(1, $users); $this->assertEquals($user1->id, $users->first()->id); - $this->assertStringContainsString('"posts" as', $query); + $this->assertQueryContains('"posts" as', $query); $this->assertStringNotContainsString('"posts"."user_id"', $query); - $this->assertStringContainsString('"comments" as', $query); + $this->assertQueryContains('"comments" as', $query); $this->assertStringNotContainsString('"comments"."post_id"', $query); } @@ -204,7 +204,7 @@ public function test_joining_the_same_table_twice_with_belongs_to_many() ], ])->toSql(); - $this->assertStringContainsString('inner join "groups" as "groups_2" on "groups_2"."id" = "group_parent"."group_id"', $query); + $this->assertQueryContains('inner join "groups" as "groups_2" on "groups_2"."id" = "group_parent"."group_id"', $query); } /** @test */ @@ -225,7 +225,7 @@ public function test_joining_deep_relation_using_same_base_table() $sql = $query->toSql(); $query->get(); - $this->assertStringContainsString('inner join "categories" as "categories_alias" on "post_alias"."category_id" = "categories_alias"."id"', $sql); + $this->assertQueryContains('inner join "categories" as "categories_alias" on "post_alias"."category_id" = "categories_alias"."id"', $sql); } /** @test */ @@ -246,7 +246,7 @@ public function test_joining_deep_many_to_many_relation_using_same_base_table() ]; $query = User::joinRelationship('groups', $alias)->joinRelationship('groups.posts', $alias); $sql = $query->toSql(); - $this->assertStringContainsString('inner join "posts" as "post_alias" on "post_alias"."id" = "post_groups_alias"."post_id"', $sql); + $this->assertQueryContains('inner join "posts" as "post_alias" on "post_alias"."id" = "post_groups_alias"."post_id"', $sql); } /** @test */ @@ -262,7 +262,7 @@ public function test_morph_join_using_alias() ->joinRelationshipUsingAlias('images', 'foo') ->get(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "images" as "foo" on "foo"."imageable_id" = "posts"."id" and "foo"."imageable_type" = ?', $query ); diff --git a/tests/JoinWithGlobalScopeTest.php b/tests/JoinWithGlobalScopeTest.php index 846cec1..34f5389 100644 --- a/tests/JoinWithGlobalScopeTest.php +++ b/tests/JoinWithGlobalScopeTest.php @@ -22,7 +22,7 @@ public function posts(): HasMany $this->assertCount(0, $user->query()->joinRelationship('posts', fn ($join) => $join->withGlobalScopes())->get()); $query = $user->query()->joinRelationship('posts', fn ($join) => $join->withGlobalScopes())->toSql(); - $this->assertStringContainsString('"posts"."published" = ?', $query); + $this->assertQueryContains('"posts"."published" = ?', $query); } public function test_join_with_closure_global_scope_applied() @@ -37,6 +37,6 @@ public function posts(): HasMany $this->assertCount(0, $user->query()->joinRelationship('posts', fn ($join) => $join->withGlobalScopes())->get()); $query = $user->query()->joinRelationship('posts', fn ($join) => $join->withGlobalScopes())->toSql(); - $this->assertStringContainsString('"posts"."published" = ?', $query); + $this->assertQueryContains('"posts"."published" = ?', $query); } } diff --git a/tests/Models/Post.php b/tests/Models/Post.php index 38df889..c2d48c3 100644 --- a/tests/Models/Post.php +++ b/tests/Models/Post.php @@ -45,7 +45,7 @@ public function lastComment(): HasOne { return $this ->hasOne(Comment::class) - ->ofMany(); + ->latestOfMany(); } public function bestComment(): HasOne diff --git a/tests/OrderByTest.php b/tests/OrderByTest.php index 9c36c16..42f892e 100644 --- a/tests/OrderByTest.php +++ b/tests/OrderByTest.php @@ -88,12 +88,12 @@ public function test_order_by_nested_relationship() // making sure left join do not throw exceptions User::orderByLeftPowerJoins('posts.category.title', 'desc')->toSql(); - $this->assertStringContainsString( + $this->assertQueryContains( 'select "users".* from "users"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( 'order by "categories"."title" desc', $query ); @@ -204,7 +204,7 @@ public function test_order_by_relationship_with_relationship_alias() 'category' => fn ($join) => $join->as('category_alias'), ]); - $this->assertStringContainsString( + $this->assertQueryContains( 'select "users".* from "users" inner join "posts" as "posts_alias" on "posts_alias"."user_id" = "users"."id" inner join "categories" as "category_alias" on "posts_alias"."category_id" = "category_alias"."id" where "users"."deleted_at" is null order by "category_alias"."title" desc', $query->toSql() ); @@ -219,7 +219,7 @@ public function test_order_by_relationship_aggregation_with_relationship_alias() { $query = User::orderByPowerJoins('comments.votes', 'desc', 'sum', 'leftJoin', aliases: 'comments_alias'); - $this->assertStringContainsString( + $this->assertQueryContains( 'select "users".*, sum(comments_alias.votes) as comments_alias_votes_sum from "users" left join "comments" as "comments_alias" on "comments_alias"."user_id" = "users"."id" where "users"."deleted_at" is null group by "users"."id" order by comments_alias_votes_sum desc', $query->toSql() ); diff --git a/tests/PowerJoinHasTest.php b/tests/PowerJoinHasTest.php index 82a0e97..a964441 100644 --- a/tests/PowerJoinHasTest.php +++ b/tests/PowerJoinHasTest.php @@ -169,7 +169,7 @@ public function test_where_has_with_joins_on_belongs_to_many_relationship() ]); $this->assertCount(1, User::whereHas('groups', $closure)->get()); - $this->assertStringContainsString( + $this->assertQueryContains( 'left join "groups" on "groups"."id" = "group_members"."group_id" and "access_level" = ?', $powerJoinQuery->toSql() ); diff --git a/tests/SoftDeletesTest.php b/tests/SoftDeletesTest.php index 2558669..e08697f 100644 --- a/tests/SoftDeletesTest.php +++ b/tests/SoftDeletesTest.php @@ -26,7 +26,7 @@ public function it_can_disable_soft_deletes() }) ->toSql(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "users" on "user_profiles"."user_id" = "users"."id"', $query ); @@ -52,12 +52,12 @@ public function it_can_include_only_trashed() }) ->toSql(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "users" on "user_profiles"."user_id" = "users"."id"', $query ); - $this->assertStringContainsString( + $this->assertQueryContains( '"users"."deleted_at" is not null', $query ); @@ -79,7 +79,7 @@ public function it_can_disable_soft_deletes_when_using_an_alias() }) ->toSql(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "users" as "myAlias" on "user_profiles"."user_id" = "myAlias"."id"', $query ); @@ -95,7 +95,7 @@ public function test_it_respects_with_trashed() User::query()->joinRelationship('postsWithTrashed')->get(); $sql = User::query()->joinRelationship('postsWithTrashed')->toSql(); - $this->assertStringContainsString( + $this->assertQueryContains( 'inner join "posts" on "posts"."user_id" = "users"."id"', $sql ); diff --git a/tests/TestCase.php b/tests/TestCase.php index 010f0a5..cfc4d4f 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -21,4 +21,20 @@ protected function getPackageProviders($app) { return [PowerJoinsServiceProvider::class]; } + + public function assertQueryContains(string $expected, string $actual): void + { + $actual = str_replace(['`', '"'], '', $actual); + $expected = str_replace(['`', '"'], '', $expected); + + $this->assertStringContainsString($expected, $actual); + } + + public function assertQueryNotContains(string $expected, string $actual): void + { + $actual = str_replace(['`', '"'], '', $actual); + $expected = str_replace(['`', '"'], '', $expected); + + $this->assertStringNotContainsString($expected, $actual); + } }