Skip to content

Commit 8bf0f2d

Browse files
committed
Update ScopeAsSelectTest.php
1 parent cf71a74 commit 8bf0f2d

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

tests/ScopeAsSelectTest.php

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,4 +80,37 @@ public function it_can_do_inline_contraints_as_well()
8080
$this->assertFalse($posts->get(2)->title_is_foo_and_has_six_comments_or_more);
8181
$this->assertFalse($posts->get(3)->title_is_foo_and_has_six_comments_or_more);
8282
}
83+
84+
/** @test */
85+
public function it_can_mix_scopes_outside_of_the_closure()
86+
{
87+
$postA = Post::create(['title' => 'foo']);
88+
$postB = Post::create(['title' => 'foo']);
89+
$postC = Post::create(['title' => 'bar']);
90+
$postD = Post::create(['title' => 'bar']);
91+
92+
foreach (range(1, 5) as $i) {
93+
$postA->comments()->create(['body' => 'ok']);
94+
$postC->comments()->create(['body' => 'ok']);
95+
}
96+
97+
foreach (range(1, 10) as $i) {
98+
$postB->comments()->create(['body' => 'ok']);
99+
$postD->comments()->create(['body' => 'ok']);
100+
}
101+
102+
$posts = Post::query()
103+
->where('title', 'foo')
104+
->addScopeAsSelect('title_is_foo_and_has_six_comments_or_more', function ($query) {
105+
$query->has('comments', '>=', 6);
106+
})
107+
->orderBy('id')
108+
->get();
109+
110+
$this->assertCount(2, $posts);
111+
$this->assertTrue($posts->contains($postA));
112+
$this->assertTrue($posts->contains($postB));
113+
$this->assertFalse($posts->get(0)->title_is_foo_and_has_six_comments_or_more);
114+
$this->assertTrue($posts->get(1)->title_is_foo_and_has_six_comments_or_more);
115+
}
83116
}

0 commit comments

Comments
 (0)