Skip to content

Commit ce1b438

Browse files
committed
made props protected, made basic build method, made variations method with tests
1 parent 4bca5de commit ce1b438

File tree

2 files changed

+81
-9
lines changed

2 files changed

+81
-9
lines changed

src/LaunchDarkly/Integrations/TestData.php

Lines changed: 59 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
class TestData {
66

7-
public function flag($key)
7+
public function flag(string $key): FlagBuilder
88
{
99

1010
return new FlagBuilder($key);
@@ -15,6 +15,21 @@ public function flag($key)
1515

1616
class FlagBuilder {
1717

18+
/** @var string */
19+
protected $_key;
20+
/** @var boolean */
21+
protected $_on;
22+
/** @var array */
23+
protected $_variations;
24+
/** @var int|null */
25+
protected $_off_variation;
26+
/** @var int|null */
27+
protected $_fallthrough_variation;
28+
/** @var array */
29+
protected $_targets;
30+
/** @var array */
31+
protected $_rules;
32+
1833
public function __construct(string $key)
1934
{
2035

@@ -63,11 +78,53 @@ public function copy()
6378
* @param bool $on true if targeting should be on
6479
* @return FlagBuilder the flag builder object
6580
*/
66-
public function on($on) {
81+
public function on($on)
82+
{
6783

6884
$this->_on = $on;
6985
return $this;
7086

7187
}
7288

89+
/**
90+
* Changes the allowable variation values for the flag.
91+
*
92+
* The value may be of any valid JSON type. For instance, a boolean flag
93+
* normally has True, False; a string-valued flag might have
94+
* 'red', 'green'; etc.
95+
*
96+
* Example: A single variation
97+
*
98+
* $td->flag('new-flag')->variations(True)
99+
*
100+
* Example: Multiple variations
101+
*
102+
* $td->flag('new-flag')->variations('red', 'green', 'blue')
103+
*
104+
* @param array $variations the the desired variations
105+
* @return FlagBuilder the flag builder object
106+
*/
107+
public function variations(...$variations): FlagBuilder
108+
{
109+
110+
if (count($variations) == 1) {
111+
if (is_array($variations[0])) {
112+
$variations = $variations[0];
113+
}
114+
}
115+
$this->_variations = $variations;
116+
return $this;
117+
}
118+
119+
public function build(int $version): array
120+
{
121+
$base_flag_object = [
122+
'key' => $this->_key,
123+
'version' => $version,
124+
'on' => $this->_on,
125+
'variations' => $this->_variations
126+
];
127+
return $base_flag_object;
128+
}
129+
73130
}

tests/Integrations/TestDataTest.php

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ public function testMakesFlag()
1212
$td = new TestData();
1313
$flag = $td->flag('test-flag');
1414

15-
$this->assertEquals('test-flag', $flag->_key);
16-
$this->assertEquals(true, $flag->_on);
15+
$this->assertEquals('test-flag', $flag->build(0)['key']);
16+
$this->assertEquals(true, $flag->build(0)['on']);
1717

1818
}
1919

@@ -22,17 +22,32 @@ public function testMakesCopy()
2222
$td = new TestData();
2323
$flag = $td->flag('test-flag');
2424

25-
$flag->_variations = [1,2,3];
25+
$flag->variations([1,2,3]);
2626

27-
$this->assertEquals([1,2,3], $flag->_variations);
27+
$this->assertEquals([1,2,3], $flag->build(0)['variations']);
2828

2929
$flagCopy = $flag->copy();
3030

31-
$flagCopy->_variations = [4,5,6];
31+
$flagCopy->variations([4,5,6]);
3232

33-
$this->assertEquals([1,2,3], $flag->_variations);
34-
$this->assertEquals([4,5,6], $flagCopy->_variations);
33+
$this->assertEquals([1,2,3], $flag->build(0)['variations']);
34+
$this->assertEquals([4,5,6], $flagCopy->build(0)['variations']);
3535

3636
}
3737

38+
public function testSetsVariations()
39+
{
40+
$td = new TestData();
41+
$flag = $td->flag('new-flag')->variations('red', 'green', 'blue');
42+
$this->assertEquals(['red', 'green', 'blue'], $flag->build(0)['variations']);
43+
44+
$flag2 = $td->flag('new-flag-2')->variations(['red', 'green', 'blue']);
45+
$this->assertEquals(['red', 'green', 'blue'], $flag2->build(0)['variations']);
46+
47+
$flag3 = $td->flag('new-flag-3')->variations(['red', 'green', 'blue'], ['cat', 'dog', 'fish']);
48+
$this->assertEquals([['red', 'green', 'blue'], ['cat', 'dog', 'fish']], $flag3->build(0)['variations']);
49+
50+
$flag4 = $td->flag('new-flag-4')->variations([['red', 'green', 'blue']]);
51+
$this->assertEquals(['red', 'green', 'blue'], $flag4->build(0)['variations'][0]);
52+
}
3853
}

0 commit comments

Comments
 (0)