Skip to content

Commit bb174d1

Browse files
Merge pull request #11 from thinkverse/test-blade-directives
Add tests for blade directives And fix `groupfeature` directive
2 parents 15a1516 + 4397f9e commit bb174d1

File tree

2 files changed

+145
-1
lines changed

2 files changed

+145
-1
lines changed

src/Concerns/HasFeatures.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,9 @@ protected function getAllGroups(array $groups): Collection
150150

151151
public function groupHasFeature(string $featureName): bool
152152
{
153-
return $this->groups->features->contains('name', $featureName);
153+
return $this->hasFeatureThroughGroup(
154+
feature: $featureName,
155+
);
154156
}
155157

156158
protected function featureExists(string $featureName): bool

tests/BladeDirectivesTest.php

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace JustSteveKing\Laravel\FeatureFlags\Tests;
6+
7+
use Illuminate\Foundation\Testing\Concerns\InteractsWithViews;
8+
use JustSteveKing\Laravel\FeatureFlags\Models\FeatureGroup;
9+
use JustSteveKing\Laravel\FeatureFlags\Tests\Stubs\User;
10+
use JustSteveKing\Laravel\FeatureFlags\Models\Feature;
11+
use Illuminate\Support\Facades\Hash;
12+
13+
class BladeDirectivesTest extends TestCase
14+
{
15+
use InteractsWithViews;
16+
17+
/**
18+
* @test
19+
*/
20+
public function it_shows_feature_to_user_that_have_feature()
21+
{
22+
$user = User::create([
23+
'name' => 'test user',
24+
'email' => '[email protected]',
25+
'password' => Hash::make('password')
26+
]);
27+
28+
$feature = Feature::create([
29+
'name' => 'test'
30+
]);
31+
32+
$user->giveFeature($feature->name);
33+
34+
$view = $this->actingAs($user)->blade("@feature('test') active feature @endfeature");
35+
36+
$view->assertSee('active feature');
37+
}
38+
39+
/**
40+
* @test
41+
*/
42+
public function it_shows_feature_to_user_in_feature_group()
43+
{
44+
$user = User::create([
45+
'name' => 'test user',
46+
'email' => '[email protected]',
47+
'password' => Hash::make('password')
48+
]);
49+
50+
$group = FeatureGroup::create([
51+
'name' => 'Test Group',
52+
]);
53+
54+
$user->joinGroup($group->name);
55+
56+
$view = $this->actingAs($user)->blade("@featuregroup('test group') active feature @endfeaturegroup");
57+
58+
$view->assertSee('active feature');
59+
}
60+
61+
/**
62+
* @test
63+
*/
64+
public function it_shows_feature_to_user_when_feature_group_has_feature()
65+
{
66+
$user = User::create([
67+
'name' => 'test user',
68+
'email' => '[email protected]',
69+
'password' => Hash::make('password')
70+
]);
71+
72+
$feature = Feature::create([
73+
'name' => 'test'
74+
]);
75+
76+
$group = FeatureGroup::create([
77+
'name' => 'Test Group',
78+
]);
79+
80+
$group->addFeature($feature);
81+
82+
$user->joinGroup($group->name);
83+
84+
$view = $this->actingAs($user)->blade("@groupfeature('test') active feature @endgroupfeature");
85+
86+
$view->assertSee('active feature');
87+
}
88+
89+
/**
90+
* @test
91+
*/
92+
public function it_hides_feature_to_user_that_dont_have_feature()
93+
{
94+
$user = User::create([
95+
'name' => 'test user',
96+
'email' => '[email protected]',
97+
'password' => Hash::make('password')
98+
]);
99+
100+
$view = $this->actingAs($user)->blade("@feature('test') active feature @endfeature");
101+
102+
$view->assertSee('');
103+
}
104+
105+
/**
106+
* @test
107+
*/
108+
public function it_hides_feature_to_user_not_in_feature_group()
109+
{
110+
$user = User::create([
111+
'name' => 'test user',
112+
'email' => '[email protected]',
113+
'password' => Hash::make('password')
114+
]);
115+
116+
$view = $this->actingAs($user)->blade("@featuregroup('test group') active feature @endfeaturegroup");
117+
118+
$view->assertSee('');
119+
}
120+
121+
/**
122+
* @test
123+
*/
124+
public function it_hides_feature_to_user_when_feature_group_dont_have_feature()
125+
{
126+
$user = User::create([
127+
'name' => 'test user',
128+
'email' => '[email protected]',
129+
'password' => Hash::make('password')
130+
]);
131+
132+
$group = FeatureGroup::create([
133+
'name' => 'Test Group',
134+
]);
135+
136+
$user->joinGroup($group->name);
137+
138+
$view = $this->actingAs($user)->blade("@groupfeature('test') active feature @endgroupfeature");
139+
140+
$view->assertSee('');
141+
}
142+
}

0 commit comments

Comments
 (0)