Code Duplication    Length = 29-30 lines in 7 locations

tests/ZendTransformer/Factory/AbstractTransformerFactoryTest.php 7 locations

@@ 31-59 (lines=29) @@
28
        $this->sut = $sut = new AbstractTransformerFactory();
29
    }
30
    
31
    public function testTransformFromSimpleSpec()
32
    {
33
        $this->container->setService('config', [
34
            'abacaphiliac/zend-transformer' => [
35
                'transformers' => [
36
                    'FooBarToFizBuz' => [
37
                        'inputClass' => FooBar::class,
38
                        'keyMap' => [
39
                            'foo' => 'fiz',
40
                            'bar' => 'buz',
41
                        ],
42
                        'outputClass' => FizBuz::class,
43
                    ],
44
                ],
45
            ],
46
        ]);
47
    
48
        self::assertTrue($this->sut->canCreateServiceWithName($this->container, 'FooBarToFizBuz', 'FooBarToFizBuz'));
49
        
50
        $transformer = $this->sut->createServiceWithName($this->container, 'FooBarToFizBuz', 'FooBarToFizBuz');
51
        self::assertInstanceOf(TransformerInterface::class, $transformer);
52
        
53
        $result = $transformer->transform(new FooBar('Alice', 'Bob'), new FizBuz());
54
        self::assertInstanceOf(FizBuz::class, $result);
55
        
56
        /** @var FizBuz $result */
57
        self::assertEquals('Alice', $result->getFiz());
58
        self::assertEquals('Bob', $result->getBuz());
59
    }
60
    
61
    /**
62
     * @expectedException \Abacaphiliac\Zend\Transformer\Exception\TransformationException
@@ 117-146 (lines=30) @@
114
        $transformer->transform(new FooBar('Alice', 'Bob'), new FizBuz());
115
    }
116
    
117
    public function testTransformCustomExtractor()
118
    {
119
        $this->container->setService('config', [
120
            'abacaphiliac/zend-transformer' => [
121
                'transformers' => [
122
                    'FooBarToFizBuz' => [
123
                        'inputClass' => FooBar::class,
124
                        'extractor' => 'ClassMethods',
125
                        'keyMap' => [
126
                            'foo' => 'fiz',
127
                            'bar' => 'buz',
128
                        ],
129
                        'outputClass' => FizBuz::class,
130
                    ],
131
                ],
132
            ],
133
        ]);
134
        
135
        self::assertTrue($this->sut->canCreateServiceWithName($this->container, 'FooBarToFizBuz', 'FooBarToFizBuz'));
136
        
137
        $transformer = $this->sut->createServiceWithName($this->container, 'FooBarToFizBuz', 'FooBarToFizBuz');
138
        self::assertInstanceOf(TransformerInterface::class, $transformer);
139
        
140
        $result = $transformer->transform(new FooBar('Alice', 'Bob'), new FizBuz());
141
        self::assertInstanceOf(FizBuz::class, $result);
142
        
143
        /** @var FizBuz $result */
144
        self::assertEquals('Alice', $result->getFiz());
145
        self::assertEquals('Bob', $result->getBuz());
146
    }
147
    
148
    public function testTransformCustomExtractorInstance()
149
    {
@@ 148-177 (lines=30) @@
145
        self::assertEquals('Bob', $result->getBuz());
146
    }
147
    
148
    public function testTransformCustomExtractorInstance()
149
    {
150
        $this->container->setService('config', [
151
            'abacaphiliac/zend-transformer' => [
152
                'transformers' => [
153
                    'FooBarToFizBuz' => [
154
                        'inputClass' => FooBar::class,
155
                        'extractor' => new ClassMethods(),
156
                        'keyMap' => [
157
                            'foo' => 'fiz',
158
                            'bar' => 'buz',
159
                        ],
160
                        'outputClass' => FizBuz::class,
161
                    ],
162
                ],
163
            ],
164
        ]);
165
        
166
        self::assertTrue($this->sut->canCreateServiceWithName($this->container, 'FooBarToFizBuz', 'FooBarToFizBuz'));
167
        
168
        $transformer = $this->sut->createServiceWithName($this->container, 'FooBarToFizBuz', 'FooBarToFizBuz');
169
        self::assertInstanceOf(TransformerInterface::class, $transformer);
170
        
171
        $result = $transformer->transform(new FooBar('Alice', 'Bob'), new FizBuz());
172
        self::assertInstanceOf(FizBuz::class, $result);
173
        
174
        /** @var FizBuz $result */
175
        self::assertEquals('Alice', $result->getFiz());
176
        self::assertEquals('Bob', $result->getBuz());
177
    }
178
    
179
    public function testTransformCustomHydrator()
180
    {
@@ 179-208 (lines=30) @@
176
        self::assertEquals('Bob', $result->getBuz());
177
    }
178
    
179
    public function testTransformCustomHydrator()
180
    {
181
        $this->container->setService('config', [
182
            'abacaphiliac/zend-transformer' => [
183
                'transformers' => [
184
                    'FooBarToFizBuz' => [
185
                        'inputClass' => FooBar::class,
186
                        'keyMap' => [
187
                            'foo' => 'fiz',
188
                            'bar' => 'buz',
189
                        ],
190
                        'hydrator' => 'ClassMethods',
191
                        'outputClass' => FizBuz::class,
192
                    ],
193
                ],
194
            ],
195
        ]);
196
        
197
        self::assertTrue($this->sut->canCreateServiceWithName($this->container, 'FooBarToFizBuz', 'FooBarToFizBuz'));
198
        
199
        $transformer = $this->sut->createServiceWithName($this->container, 'FooBarToFizBuz', 'FooBarToFizBuz');
200
        self::assertInstanceOf(TransformerInterface::class, $transformer);
201
        
202
        $result = $transformer->transform(new FooBar('Alice', 'Bob'), new FizBuz());
203
        self::assertInstanceOf(FizBuz::class, $result);
204
        
205
        /** @var FizBuz $result */
206
        self::assertEquals('Alice', $result->getFiz());
207
        self::assertEquals('Bob', $result->getBuz());
208
    }
209
    
210
    public function testTransformCustomHydratorInstance()
211
    {
@@ 210-239 (lines=30) @@
207
        self::assertEquals('Bob', $result->getBuz());
208
    }
209
    
210
    public function testTransformCustomHydratorInstance()
211
    {
212
        $this->container->setService('config', [
213
            'abacaphiliac/zend-transformer' => [
214
                'transformers' => [
215
                    'FooBarToFizBuz' => [
216
                        'inputClass' => FooBar::class,
217
                        'keyMap' => [
218
                            'foo' => 'fiz',
219
                            'bar' => 'buz',
220
                        ],
221
                        'hydrator' => new ClassMethods(),
222
                        'outputClass' => FizBuz::class,
223
                    ],
224
                ],
225
            ],
226
        ]);
227
        
228
        self::assertTrue($this->sut->canCreateServiceWithName($this->container, 'FooBarToFizBuz', 'FooBarToFizBuz'));
229
        
230
        $transformer = $this->sut->createServiceWithName($this->container, 'FooBarToFizBuz', 'FooBarToFizBuz');
231
        self::assertInstanceOf(TransformerInterface::class, $transformer);
232
        
233
        $result = $transformer->transform(new FooBar('Alice', 'Bob'), new FizBuz());
234
        self::assertInstanceOf(FizBuz::class, $result);
235
        
236
        /** @var FizBuz $result */
237
        self::assertEquals('Alice', $result->getFiz());
238
        self::assertEquals('Bob', $result->getBuz());
239
    }
240
    
241
    public function testTransformCustomKeyMapCallable()
242
    {
@@ 307-336 (lines=30) @@
304
        self::assertEquals('Bob', $result->getBuz());
305
    }
306
    
307
    public function testTransformCustomInputValidatorInstance()
308
    {
309
        $this->container->setService('config', [
310
            'abacaphiliac/zend-transformer' => [
311
                'transformers' => [
312
                    'FooBarToFizBuz' => [
313
                        'inputClass' => FooBar::class,
314
                        'inputValidator' => new ValidatorChain(),
315
                        'keyMap' => [
316
                            'foo' => 'fiz',
317
                            'bar' => 'buz',
318
                        ],
319
                        'outputClass' => FizBuz::class,
320
                    ],
321
                ],
322
            ],
323
        ]);
324
        
325
        self::assertTrue($this->sut->canCreateServiceWithName($this->container, 'FooBarToFizBuz', 'FooBarToFizBuz'));
326
        
327
        $transformer = $this->sut->createServiceWithName($this->container, 'FooBarToFizBuz', 'FooBarToFizBuz');
328
        self::assertInstanceOf(TransformerInterface::class, $transformer);
329
        
330
        $result = $transformer->transform(new FooBar('Alice', 'Bob'), new FizBuz());
331
        self::assertInstanceOf(FizBuz::class, $result);
332
        
333
        /** @var FizBuz $result */
334
        self::assertEquals('Alice', $result->getFiz());
335
        self::assertEquals('Bob', $result->getBuz());
336
    }
337
    
338
    public function testTransformCustomOutputValidatorInstance()
339
    {
@@ 338-367 (lines=30) @@
335
        self::assertEquals('Bob', $result->getBuz());
336
    }
337
    
338
    public function testTransformCustomOutputValidatorInstance()
339
    {
340
        $this->container->setService('config', [
341
            'abacaphiliac/zend-transformer' => [
342
                'transformers' => [
343
                    'FooBarToFizBuz' => [
344
                        'inputClass' => FooBar::class,
345
                        'keyMap' => [
346
                            'foo' => 'fiz',
347
                            'bar' => 'buz',
348
                        ],
349
                        'outputClass' => FizBuz::class,
350
                        'outputValidator' => new ValidatorChain(),
351
                    ],
352
                ],
353
            ],
354
        ]);
355
        
356
        self::assertTrue($this->sut->canCreateServiceWithName($this->container, 'FooBarToFizBuz', 'FooBarToFizBuz'));
357
        
358
        $transformer = $this->sut->createServiceWithName($this->container, 'FooBarToFizBuz', 'FooBarToFizBuz');
359
        self::assertInstanceOf(TransformerInterface::class, $transformer);
360
        
361
        $result = $transformer->transform(new FooBar('Alice', 'Bob'), new FizBuz());
362
        self::assertInstanceOf(FizBuz::class, $result);
363
        
364
        /** @var FizBuz $result */
365
        self::assertEquals('Alice', $result->getFiz());
366
        self::assertEquals('Bob', $result->getBuz());
367
    }
368
}
369