Open Monograph Press  3.3.0
CompositeFactoryTest.php
1 <?php
2 
4 
6 
11 {
12  private function getFactory($class = 'Guzzle\\Service\\Command\\Factory\\MapFactory')
13  {
14  return $mock = $this->getMockBuilder($class)
15  ->disableOriginalConstructor()
16  ->getMock();
17  }
18 
19  public function testIsIterable()
20  {
21  $factory = new CompositeFactory(array($this->getFactory(), $this->getFactory()));
22  $this->assertEquals(2, count($factory));
23  $this->assertEquals(2, count(iterator_to_array($factory->getIterator())));
24  }
25 
26  public function testFindsFactories()
27  {
28  $f1 = $this->getFactory();
29  $f2 = $this->getFactory('Guzzle\\Service\\Command\\Factory\\CompositeFactory');
30  $factory = new CompositeFactory(array($f1, $f2));
31  $this->assertNull($factory->find('foo'));
32  $this->assertNull($factory->find($this->getFactory()));
33  $this->assertSame($f1, $factory->find('Guzzle\\Service\\Command\\Factory\\MapFactory'));
34  $this->assertSame($f2, $factory->find('Guzzle\\Service\\Command\\Factory\\CompositeFactory'));
35  $this->assertSame($f1, $factory->find($f1));
36  $this->assertSame($f2, $factory->find($f2));
37 
38  $this->assertFalse($factory->has('foo'));
39  $this->assertTrue($factory->has('Guzzle\\Service\\Command\\Factory\\MapFactory'));
40  $this->assertTrue($factory->has('Guzzle\\Service\\Command\\Factory\\CompositeFactory'));
41  }
42 
43  public function testCreatesCommands()
44  {
45  $factory = new CompositeFactory();
46  $this->assertNull($factory->factory('foo'));
47 
48  $f1 = $this->getFactory();
49  $mockCommand1 = $this->getMockForAbstractClass('Guzzle\\Service\\Command\\AbstractCommand');
50 
51  $f1->expects($this->once())
52  ->method('factory')
53  ->with($this->equalTo('foo'))
54  ->will($this->returnValue($mockCommand1));
55 
56  $factory = new CompositeFactory(array($f1));
57  $this->assertSame($mockCommand1, $factory->factory('foo'));
58  }
59 
60  public function testAllowsRemovalOfFactories()
61  {
62  $f1 = $this->getFactory();
63  $f2 = $this->getFactory();
64  $f3 = $this->getFactory('Guzzle\\Service\\Command\\Factory\\CompositeFactory');
65  $factories = array($f1, $f2, $f3);
66  $factory = new CompositeFactory($factories);
67 
68  $factory->remove('foo');
69  $this->assertEquals($factories, $factory->getIterator()->getArrayCopy());
70 
71  $factory->remove($f1);
72  $this->assertEquals(array($f2, $f3), $factory->getIterator()->getArrayCopy());
73 
74  $factory->remove('Guzzle\\Service\\Command\\Factory\\MapFactory');
75  $this->assertEquals(array($f3), $factory->getIterator()->getArrayCopy());
76 
77  $factory->remove('Guzzle\\Service\\Command\\Factory\\CompositeFactory');
78  $this->assertEquals(array(), $factory->getIterator()->getArrayCopy());
79 
80  $factory->remove('foo');
81  $this->assertEquals(array(), $factory->getIterator()->getArrayCopy());
82  }
83 
85  {
86  $f1 = $this->getFactory();
87  $f2 = $this->getFactory();
88  $f3 = $this->getFactory('Guzzle\\Service\\Command\\Factory\\CompositeFactory');
89  $f4 = $this->getFactory();
90 
91  $factory = new CompositeFactory();
92 
93  $factory->add($f1);
94  $this->assertEquals(array($f1), $factory->getIterator()->getArrayCopy());
95 
96  $factory->add($f2);
97  $this->assertEquals(array($f1, $f2), $factory->getIterator()->getArrayCopy());
98 
99  $factory->add($f3, $f2);
100  $this->assertEquals(array($f1, $f3, $f2), $factory->getIterator()->getArrayCopy());
101 
102  $factory->add($f4, 'Guzzle\\Service\\Command\\Factory\\CompositeFactory');
103  $this->assertEquals(array($f1, $f4, $f3, $f2), $factory->getIterator()->getArrayCopy());
104  }
105 
107  {
108  $client = $this->getMock('Guzzle\\Service\\Client');
109  $chain = CompositeFactory::getDefaultChain($client);
110  $a = $chain->getIterator()->getArrayCopy();
111  $this->assertEquals(1, count($a));
112  $this->assertInstanceOf('Guzzle\\Service\\Command\\Factory\\ConcreteClassFactory', $a[0]);
113 
114  $description = $this->getMock('Guzzle\\Service\\Description\\ServiceDescription');
115  $client->expects($this->once())
116  ->method('getDescription')
117  ->will($this->returnValue($description));
118  $chain = CompositeFactory::getDefaultChain($client);
119  $a = $chain->getIterator()->getArrayCopy();
120  $this->assertEquals(2, count($a));
121  $this->assertInstanceOf('Guzzle\\Service\\Command\\Factory\\ServiceDescriptionFactory', $a[0]);
122  $this->assertInstanceOf('Guzzle\\Service\\Command\\Factory\\ConcreteClassFactory', $a[1]);
123  }
124 }
Guzzle\Tests\Service\Command\CompositeFactoryTest\testAllowsRemovalOfFactories
testAllowsRemovalOfFactories()
Definition: CompositeFactoryTest.php:60
Guzzle\Tests\GuzzleTestCase
Definition: GuzzleTestCase.php:22
Guzzle\Service\Command\Factory\CompositeFactory\getDefaultChain
static getDefaultChain(ClientInterface $client)
Definition: CompositeFactory.php:26
Guzzle\Tests\Service\Command\CompositeFactoryTest
Definition: CompositeFactoryTest.php:10
Guzzle\Tests\Service\Command\CompositeFactoryTest\testCreatesCommands
testCreatesCommands()
Definition: CompositeFactoryTest.php:43
Guzzle\Tests\Service\Command\CompositeFactoryTest\testIsIterable
testIsIterable()
Definition: CompositeFactoryTest.php:19
Guzzle\Tests\Service\Command\CompositeFactoryTest\testFindsFactories
testFindsFactories()
Definition: CompositeFactoryTest.php:26
Guzzle\Service\Command\Factory\CompositeFactory
Definition: CompositeFactory.php:11
Guzzle\Tests\Service\Command
Definition: AbstractCommandTest.php:3
Guzzle\Tests\Service\Command\CompositeFactoryTest\testAddsFactoriesBeforeAndAtEnd
testAddsFactoriesBeforeAndAtEnd()
Definition: CompositeFactoryTest.php:84
Guzzle\Tests\Service\Command\CompositeFactoryTest\testProvidesDefaultChainForClients
testProvidesDefaultChainForClients()
Definition: CompositeFactoryTest.php:106