Skip to content
This repository was archived by the owner on Jan 31, 2020. It is now read-only.

Commit cb7e643

Browse files
committedDec 4, 2019
Merge branch 'hotfix/203'
Close #203 Fix #202
2 parents b838a5d + 6942439 commit cb7e643

10 files changed

+62
-50
lines changed
 

‎.travis.yml

+3
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ matrix:
4343
- php: 7.3
4444
env:
4545
- DEPS=latest
46+
- php: 7.4snapshot
47+
env:
48+
- DEPS=latest
4649

4750
before_install:
4851
- if [[ $TEST_COVERAGE != 'true' ]]; then phpenv config-rm xdebug.ini || return 0 ; fi

‎CHANGELOG.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ All notable changes to this project will be documented in this file, in reverse
2222

2323
### Fixed
2424

25-
- Nothing.
25+
- [#203](https://github.com/zendframework/zend-view/pull/203) fixes PHP 7.4 compatibility.
2626

2727
## 2.11.3 - 2019-10-11
2828

‎src/Helper/Partial.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
namespace Zend\View\Helper;
1111

12+
use Traversable;
1213
use Zend\View\Exception;
1314
use Zend\View\Model\ModelInterface;
1415

@@ -53,7 +54,7 @@ public function __invoke($name = null, $values = null)
5354
$values = [$objectKey => $values];
5455
} elseif (method_exists($values, 'toArray')) {
5556
$values = $values->toArray();
56-
} else {
57+
} elseif (! $values instanceof Traversable) {
5758
$values = get_object_vars($values);
5859
}
5960
}

‎test/Helper/AbstractTest.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public function setUp()
3131

3232
public function testViewSettersGetters()
3333
{
34-
$viewMock = $this->getMockBuilder(RendererInterface::class)->getMock();
34+
$viewMock = $this->prophesize(RendererInterface::class)->reveal();
3535

3636
$this->helper->setView($viewMock);
3737
$this->assertEquals($viewMock, $this->helper->getView());

‎test/Helper/FlashMessengerTest.php

+7-10
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
namespace ZendTest\View\Helper;
1111

1212
use PHPUnit\Framework\TestCase;
13+
use Prophecy\Argument;
1314
use Zend\I18n\Translator\Translator;
1415
use Zend\Mvc\Controller\Plugin\FlashMessenger as V2PluginFlashMessenger;
1516
use Zend\Mvc\Controller\PluginManager;
@@ -398,12 +399,10 @@ public function testCanDisplayListOfCurrentMessagesCustomisedByConfigSeparator()
398399

399400
public function testCanTranslateMessages()
400401
{
401-
$mockTranslator = $this->getMockBuilder(Translator::class)->getMock();
402-
$mockTranslator->expects($this->exactly(1))
403-
->method('translate')
404-
->will($this->returnValue('translated message'));
402+
$mockTranslator = $this->prophesize(Translator::class);
403+
$mockTranslator->translate('bar-info', 'default')->willReturn('translated message')->shouldBeCalledTimes(1);
405404

406-
$this->helper->setTranslator($mockTranslator);
405+
$this->helper->setTranslator($mockTranslator->reveal());
407406
$this->assertTrue($this->helper->hasTranslator());
408407

409408
$this->seedMessages();
@@ -415,12 +414,10 @@ public function testCanTranslateMessages()
415414

416415
public function testCanTranslateCurrentMessages()
417416
{
418-
$mockTranslator = $this->getMockBuilder(Translator::class)->getMock();
419-
$mockTranslator->expects($this->exactly(1))
420-
->method('translate')
421-
->will($this->returnValue('translated message'));
417+
$mockTranslator = $this->prophesize(Translator::class);
418+
$mockTranslator->translate('bar-info', 'default')->willReturn('translated message')->shouldBeCalledTimes(1);
422419

423-
$this->helper->setTranslator($mockTranslator);
420+
$this->helper->setTranslator($mockTranslator->reveal());
424421
$this->assertTrue($this->helper->hasTranslator());
425422

426423
$this->seedCurrentMessages();

‎test/Helper/HeadTitleTest.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ public function testCanTranslateTitle()
186186

187187
public function testTranslatorMethods()
188188
{
189-
$translatorMock = $this->getMockBuilder(Translator::class)->getMock();
189+
$translatorMock = $this->prophesize(Translator::class)->reveal();
190190
$this->helper->setTranslator($translatorMock, 'foo');
191191

192192
$this->assertEquals($translatorMock, $this->helper->getTranslator());

‎test/Helper/Navigation/NavigationTest.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
use Zend\View;
1919
use Zend\View\Helper\Navigation;
2020
use Zend\View\Renderer\PhpRenderer;
21+
use Zend\I18n\Translator\Translator;
2122

2223
/**
2324
* Tests Zend\View\Helper\Navigation
@@ -219,7 +220,7 @@ public function testDisablingTranslatorInjection()
219220

220221
public function testTranslatorMethods()
221222
{
222-
$translatorMock = $this->getMockBuilder('Zend\I18n\Translator\Translator')->getMock();
223+
$translatorMock = $this->prophesize(Translator::class)->reveal();
223224
$this->_helper->setTranslator($translatorMock, 'foo');
224225

225226
$this->assertEquals($translatorMock, $this->_helper->getTranslator());

‎test/Helper/PartialTest.php

+19
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
namespace ZendTest\View\Helper;
1111

12+
use ArrayObject;
1213
use PHPUnit\Framework\TestCase;
1314
use Zend\View\Helper\Partial;
1415
use Zend\View\Model\ViewModel;
@@ -148,6 +149,24 @@ public function testCanPassViewModelAsSecondArgument()
148149
}
149150
}
150151

152+
public function testCanPassArrayObjectAsSecondArgument()
153+
{
154+
$model = new ArrayObject([
155+
'foo' => 'bar',
156+
'bar' => 'baz',
157+
]);
158+
159+
$view = new View();
160+
$view->resolver()->addPath($this->basePath . '/application/views/scripts');
161+
$this->helper->setView($view);
162+
$return = $this->helper->__invoke('partialVars.phtml', $model);
163+
164+
foreach ($model as $key => $value) {
165+
$string = sprintf('%s: %s', $key, $value);
166+
$this->assertContains($string, $return);
167+
}
168+
}
169+
151170
public function testCanPassViewModelAsSoleArgument()
152171
{
153172
$model = new ViewModel([

‎test/Resolver/PrefixPathStackResolverTest.php

+5-6
Original file line numberDiff line numberDiff line change
@@ -69,16 +69,15 @@ public function testResolveWithCongruentPrefix()
6969

7070
public function testSetCustomPathStackResolver()
7171
{
72-
$mockResolver = $this->getMockBuilder(ResolverInterface::class)->getMock();
72+
$mockResolver = $this->prophesize(ResolverInterface::class);
73+
$mockResolver->resolve('/bar', null)->willReturn('1111');
74+
$mockResolver->resolve('/baz', null)->willReturn('2222');
75+
$mockResolver->resolve('/tab', null)->willReturn(false);
7376

7477
$resolver = new PrefixPathStackResolver([
75-
'foo' => $mockResolver,
78+
'foo' => $mockResolver->reveal(),
7679
]);
7780

78-
$mockResolver->expects($this->at(0))->method('resolve')->with('/bar')->will($this->returnValue('1111'));
79-
$mockResolver->expects($this->at(1))->method('resolve')->with('/baz')->will($this->returnValue('2222'));
80-
$mockResolver->expects($this->at(2))->method('resolve')->with('/tab')->will($this->returnValue(false));
81-
8281
$this->assertSame('1111', $resolver->resolve('foo/bar'));
8382
$this->assertSame('2222', $resolver->resolve('foo/baz'));
8483
$this->assertNull($resolver->resolve('foo/tab'));

‎test/Resolver/RelativeFallbackResolverTest.php

+21-29
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@
1010
namespace ZendTest\View\Resolver;
1111

1212
use PHPUnit\Framework\TestCase;
13+
use Prophecy\Argument;
1314
use stdClass;
1415
use Zend\View\Helper\ViewModel as ViewModelHelper;
1516
use Zend\View\Model\ViewModel;
1617
use Zend\View\Renderer\PhpRenderer;
17-
use Zend\View\Renderer\RendererInterface;
1818
use Zend\View\Resolver\RelativeFallbackResolver;
1919
use Zend\View\Resolver\ResolverInterface;
2020
use Zend\View\Resolver\TemplateMapResolver;
@@ -81,47 +81,39 @@ public function testReturnsResourceFromTopLevelIfExistsInsteadOfTheSameNameSpace
8181

8282
public function testSkipsResolutionOnViewRendererWithoutPlugins()
8383
{
84-
/* @var $baseResolver ResolverInterface|\PHPUnit_Framework_MockObject_MockObject */
85-
$baseResolver = $this->getMockBuilder(ResolverInterface::class)->getMock();
86-
$fallback = new RelativeFallbackResolver($baseResolver);
87-
/* @var $renderer RendererInterface|\PHPUnit_Framework_MockObject_MockObject */
88-
$renderer = $this->getMockBuilder(RendererInterface::class)->getMock();
84+
$baseResolver = $this->prophesize(ResolverInterface::class);
85+
$baseResolver->resolve()->shouldNotBeCalled();
86+
$fallback = new RelativeFallbackResolver($baseResolver->reveal());
8987

90-
$baseResolver->expects($this->never())->method('resolve');
88+
$renderer = $this->prophesize(PhpRenderer::class)->reveal();
9189

9290
$this->assertFalse($fallback->resolve('foo/bar', $renderer));
9391
}
9492

9593
public function testSkipsResolutionOnViewRendererWithoutCorrectCurrentPlugin()
9694
{
97-
/* @var $baseResolver ResolverInterface|\PHPUnit_Framework_MockObject_MockObject */
98-
$baseResolver = $this->getMockBuilder(ResolverInterface::class)->getMock();
99-
$fallback = new RelativeFallbackResolver($baseResolver);
100-
/* @var $renderer RendererInterface|\PHPUnit_Framework_MockObject_MockObject */
101-
$renderer = $this->getMockBuilder(RendererInterface::class)
102-
->setMethods(['getEngine', 'setResolver', 'plugin', 'render'])
103-
->getMock();
95+
$baseResolver = $this->prophesize(ResolverInterface::class);
96+
$baseResolver->resolve()->shouldNotBeCalled();
10497

105-
$baseResolver->expects($this->never())->method('resolve');
106-
$renderer->expects($this->once())->method('plugin')->will($this->returnValue(new stdClass()));
98+
$fallback = new RelativeFallbackResolver($baseResolver->reveal());
10799

108-
$this->assertFalse($fallback->resolve('foo/bar', $renderer));
100+
$renderer = $this->prophesize(PhpRenderer::class);
101+
$renderer->plugin(Argument::any())->willReturn(new stdClass())->shouldBeCalledTimes(1);
102+
103+
$this->assertFalse($fallback->resolve('foo/bar', $renderer->reveal()));
109104
}
110105

111106
public function testSkipsResolutionOnNonExistingCurrentViewModel()
112107
{
113-
/* @var $baseResolver ResolverInterface|\PHPUnit_Framework_MockObject_MockObject */
114-
$baseResolver = $this->getMockBuilder(ResolverInterface::class)->getMock();
115-
$fallback = new RelativeFallbackResolver($baseResolver);
116-
$viewModel = new ViewModelHelper();
117-
/* @var $renderer RendererInterface|\PHPUnit_Framework_MockObject_MockObject */
118-
$renderer = $this->getMockBuilder(RendererInterface::class)
119-
->setMethods(['getEngine', 'setResolver', 'plugin', 'render'])
120-
->getMock();
121-
122-
$baseResolver->expects($this->never())->method('resolve');
123-
$renderer->expects($this->once())->method('plugin')->will($this->returnValue($viewModel));
108+
$baseResolver = $this->prophesize(ResolverInterface::class);
109+
$baseResolver->resolve()->shouldNotBeCalled();
124110

125-
$this->assertFalse($fallback->resolve('foo/bar', $renderer));
111+
$fallback = new RelativeFallbackResolver($baseResolver->reveal());
112+
$viewModel = new ViewModelHelper();
113+
114+
$renderer = $this->prophesize(PhpRenderer::class);
115+
$renderer->plugin(Argument::any())->willReturn($viewModel)->shouldBeCalledTimes(1);
116+
117+
$this->assertFalse($fallback->resolve('foo/bar', $renderer->reveal()));
126118
}
127119
}

0 commit comments

Comments
 (0)
This repository has been archived.