5
5
use Composer \DependencyResolver \Operation \InstallOperation ;
6
6
use Composer \DependencyResolver \Operation \UninstallOperation ;
7
7
use Composer \DependencyResolver \Operation \UpdateOperation ;
8
+ use Composer \Package \AliasPackage ;
9
+ use Composer \Package \Package ;
10
+ use Composer \Repository \ArrayRepository ;
11
+ use Composer \Repository \RepositoryInterface ;
8
12
use IonBazan \ComposerDiff \Diff \DiffEntry ;
9
13
use IonBazan \ComposerDiff \PackageDiff ;
10
14
@@ -27,7 +31,7 @@ public function testBasicUsage(array $expected, $dev, $withPlatform)
27
31
$ withPlatform
28
32
);
29
33
30
- $ this ->assertSame ($ expected , array_map (array ($ this , 'entryToString ' ), $ operations ->getIterator ()-> getArrayCopy ()));
34
+ $ this ->assertSame ($ expected , array_map (array ($ this , 'entryToString ' ), $ operations ->getArrayCopy ()));
31
35
}
32
36
33
37
public function testSameBaseAndTarget ()
@@ -43,6 +47,19 @@ public function testSameBaseAndTarget()
43
47
$ this ->assertEmpty ($ operations );
44
48
}
45
49
50
+ /**
51
+ * @param string[] $expected
52
+ *
53
+ * @dataProvider diffOperationsProvider
54
+ */
55
+ public function testDiff (array $ expected , RepositoryInterface $ oldRepository , RepositoryInterface $ newRepository )
56
+ {
57
+ $ diff = new PackageDiff ();
58
+ $ operations = $ diff ->getDiff ($ oldRepository , $ newRepository );
59
+
60
+ $ this ->assertSame ($ expected , array_map (array ($ this , 'entryToString ' ), $ operations ->getArrayCopy ()));
61
+ }
62
+
46
63
/**
47
64
* @param string[] $expected
48
65
* @param bool $dev
@@ -56,7 +73,7 @@ public function testGitUsage(array $expected, $dev, $withPlatform)
56
73
$ this ->prepareGit ();
57
74
$ operations = $ diff ->getPackageDiff ('HEAD ' , '' , $ dev , $ withPlatform );
58
75
59
- $ this ->assertSame ($ expected , array_map (array ($ this , 'entryToString ' ), $ operations ->getIterator ()-> getArrayCopy ()));
76
+ $ this ->assertSame ($ expected , array_map (array ($ this , 'entryToString ' ), $ operations ->getArrayCopy ()));
60
77
}
61
78
62
79
public function testInvalidGitRef ()
@@ -67,6 +84,51 @@ public function testInvalidGitRef()
67
84
$ diff ->getPackageDiff ('invalid-ref ' , '' , true , true );
68
85
}
69
86
87
+ public function diffOperationsProvider ()
88
+ {
89
+ return array (
90
+ 'update alias version ' => array (
91
+ array (),
92
+ new ArrayRepository (array (
93
+ new AliasPackage (new Package ('vendor/package-a ' , '1.0 ' , '1.0 ' ), '1.0 ' , '1.0 ' ),
94
+ )),
95
+ new ArrayRepository (array (
96
+ new AliasPackage (new Package ('vendor/package-a ' , '1.0 ' , '1.0 ' ), '2.0 ' , '2.0 ' ),
97
+ )),
98
+ ),
99
+ 'same alias version but different actual package version ' => array (
100
+ array (
101
+ 'update vendor/package-a from 1.0 to 2.0 ' ,
102
+ ),
103
+ new ArrayRepository (array (
104
+ new AliasPackage (new Package ('vendor/package-a ' , '1.0 ' , '1.0 ' ), '1.0 ' , '1.0 ' ),
105
+ )),
106
+ new ArrayRepository (array (
107
+ new AliasPackage (new Package ('vendor/package-a ' , '2.0 ' , '2.0 ' ), '1.0 ' , '1.0 ' ),
108
+ )),
109
+ ),
110
+ 'uninstall aliased package ' => array (
111
+ array (
112
+ 'uninstall vendor/package-a 1.0 ' ,
113
+ ),
114
+ new ArrayRepository (array (
115
+ new AliasPackage (new Package ('vendor/package-a ' , '1.0 ' , '1.0 ' ), '2.0 ' , '2.0 ' ),
116
+ )),
117
+ new ArrayRepository (array (
118
+ )),
119
+ ),
120
+ 'add aliased package ' => array (
121
+ array (
122
+ 'install vendor/package-a 1.0 ' ,
123
+ ),
124
+ new ArrayRepository (array ()),
125
+ new ArrayRepository (array (
126
+ new AliasPackage (new Package ('vendor/package-a ' , '1.0 ' , '1.0 ' ), '2.0 ' , '2.0 ' ),
127
+ )),
128
+ ),
129
+ );
130
+ }
131
+
70
132
public function operationsProvider ()
71
133
{
72
134
return array (
0 commit comments