Skip to content

Commit 0176eaf

Browse files
committed
Improve tests
1 parent d141f81 commit 0176eaf

File tree

2 files changed

+57
-6
lines changed

2 files changed

+57
-6
lines changed

src/Diff/DiffEntry.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,8 @@ public function getProjectUrl()
231231
*/
232232
private function setUrls(UrlGenerator $generator)
233233
{
234-
$this->projectUrl = $generator->getProjectUrl($this->getPackage());
234+
$package = $this->getPackage();
235+
$this->projectUrl = $generator->getProjectUrl($package);
235236

236237
$operation = $this->getOperation();
237238

@@ -241,9 +242,7 @@ private function setUrls(UrlGenerator $generator)
241242
return;
242243
}
243244

244-
if ($operation instanceof InstallOperation || $operation instanceof UninstallOperation) {
245-
$this->compareUrl = $generator->getReleaseUrl($operation->getPackage());
246-
}
245+
$this->compareUrl = $generator->getReleaseUrl($package);
247246
}
248247

249248
/**

tests/Diff/DiffEntryTest.php

Lines changed: 54 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,20 +57,72 @@ public function testGetPackage()
5757
$this->assertSame($package, $entry->getPackage());
5858
}
5959

60+
/**
61+
* @param string $expectedUrl
62+
*
63+
* @dataProvider operationUrlProvider
64+
*/
65+
public function testUrls($expectedUrl, OperationInterface $operation)
66+
{
67+
$urlGenerator = $this->getMockBuilder('IonBazan\ComposerDiff\Url\UrlGenerator')->getMock();
68+
$urlGenerator->method('getCompareUrl')->willReturn('compare');
69+
$urlGenerator->method('getProjectUrl')->willReturn('project');
70+
$urlGenerator->method('getReleaseUrl')->willReturn('release');
71+
72+
$entry = new DiffEntry($operation, $urlGenerator);
73+
$this->assertSame($expectedUrl, $entry->getUrl());
74+
$this->assertSame('project', $entry->getProjectUrl());
75+
}
76+
6077
public function testGetUrlReturnsNullForInvalidOperation()
6178
{
6279
$operation = $this->getMockBuilder('Composer\DependencyResolver\Operation\OperationInterface')->getMock();
63-
$entry = new DiffEntry($operation);
64-
$this->assertNull($entry->getUrl());
80+
$this->setExpectedException('InvalidArgumentException', 'Invalid operation');
81+
new DiffEntry($operation, $this->getMockBuilder('IonBazan\ComposerDiff\Url\UrlGenerator')->getMock());
6582
}
6683

6784
public function testGetProjectUrlReturnsNullForInvalidOperation()
85+
{
86+
$operation = $this->getMockBuilder('Composer\DependencyResolver\Operation\OperationInterface')->getMock();
87+
$this->setExpectedException('InvalidArgumentException', 'Invalid operation');
88+
new DiffEntry($operation, $this->getMockBuilder('IonBazan\ComposerDiff\Url\UrlGenerator')->getMock());
89+
}
90+
91+
public function testCreateWithoutUrlGenerators()
6892
{
6993
$operation = $this->getMockBuilder('Composer\DependencyResolver\Operation\OperationInterface')->getMock();
7094
$entry = new DiffEntry($operation);
95+
96+
$this->assertNull($entry->getUrl());
7197
$this->assertNull($entry->getProjectUrl());
7298
}
7399

100+
public function operationUrlProvider()
101+
{
102+
return array(
103+
'Install shows release URL' => array(
104+
'release',
105+
new InstallOperation($this->getPackage('a/package-1', '1.0.0')),
106+
),
107+
'Remove shows release URL' => array(
108+
'release',
109+
new UninstallOperation($this->getPackage('a/package-1', '1.0.0')),
110+
),
111+
'Upgrade shows compare URL' => array(
112+
'compare',
113+
new UpdateOperation($this->getPackage('a/package-1', '1.0.0'), $this->getPackage('a/package-1', '2.0.0')),
114+
),
115+
'Downgrade shows compare URL' => array(
116+
'compare',
117+
new UpdateOperation($this->getPackage('a/package-1', '2.0.0'), $this->getPackage('a/package-1', '1.0.0')),
118+
),
119+
'Change shows compare URL' => array(
120+
'compare',
121+
new UpdateOperation($this->getPackage('a/package-1', 'dev-master', 'dev-master 1234567'), $this->getPackage('a/package-1', '1.0.0')),
122+
),
123+
);
124+
}
125+
74126
public function operationTypeProvider()
75127
{
76128
return array(

0 commit comments

Comments
 (0)