forked from laravel/framework
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSupportFluentTest.php
More file actions
executable file
·121 lines (85 loc) · 2.99 KB
/
SupportFluentTest.php
File metadata and controls
executable file
·121 lines (85 loc) · 2.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?php
use Illuminate\Support\Fluent;
class SupportFluentTest extends PHPUnit_Framework_TestCase {
public function testAttributesAreSetByConstructor()
{
$array = array('name' => 'Taylor', 'age' => 25);
$fluent = new Fluent($array);
$refl = new \ReflectionObject($fluent);
$attributes = $refl->getProperty('attributes');
$attributes->setAccessible(true);
$this->assertEquals($array, $attributes->getValue($fluent));
$this->assertEquals($array, $fluent->getAttributes());
}
public function testAttributesAreSetByConstructorGivenStdClass()
{
$array = array('name' => 'Taylor', 'age' => 25);
$fluent = new Fluent((object) $array);
$refl = new \ReflectionObject($fluent);
$attributes = $refl->getProperty('attributes');
$attributes->setAccessible(true);
$this->assertEquals($array, $attributes->getValue($fluent));
$this->assertEquals($array, $fluent->getAttributes());
}
public function testAttributesAreSetByConstructorGivenArrayIterator()
{
$array = array('name' => 'Taylor', 'age' => 25);
$fluent = new Fluent(new FluentArrayIteratorStub($array));
$refl = new \ReflectionObject($fluent);
$attributes = $refl->getProperty('attributes');
$attributes->setAccessible(true);
$this->assertEquals($array, $attributes->getValue($fluent));
$this->assertEquals($array, $fluent->getAttributes());
}
public function testGetMethodReturnsAttribute()
{
$fluent = new Fluent(array('name' => 'Taylor'));
$this->assertEquals('Taylor', $fluent->get('name'));
$this->assertEquals('Default', $fluent->get('foo', 'Default'));
$this->assertEquals('Taylor', $fluent->name);
$this->assertNull($fluent->foo);
}
public function testMagicMethodsCanBeUsedToSetAttributes()
{
$fluent = new Fluent;
$fluent->name = 'Taylor';
$fluent->developer();
$fluent->age(25);
$this->assertEquals('Taylor', $fluent->name);
$this->assertTrue($fluent->developer);
$this->assertEquals(25, $fluent->age);
$this->assertInstanceOf('Illuminate\Support\Fluent', $fluent->programmer());
}
public function testIssetMagicMethod()
{
$array = array('name' => 'Taylor', 'age' => 25);
$fluent = new Fluent($array);
$this->assertTrue(isset($fluent->name));
unset($fluent->name);
$this->assertFalse(isset($fluent->name));
}
public function testToArrayReturnsAttribute()
{
$array = array('name' => 'Taylor', 'age' => 25);
$fluent = new Fluent($array);
$this->assertEquals($array, $fluent->toArray());
}
public function testToJsonEncodesTheToArrayResult()
{
$fluent = $this->getMock('Illuminate\Support\Fluent', array('toArray'));
$fluent->expects($this->once())->method('toArray')->will($this->returnValue('foo'));
$results = $fluent->toJson();
$this->assertEquals(json_encode('foo'), $results);
}
}
class FluentArrayIteratorStub implements \IteratorAggregate {
protected $items = array();
public function __construct(array $items = array())
{
$this->items = (array) $items;
}
public function getIterator()
{
return new \ArrayIterator($this->items);
}
}