55use Composer \DependencyResolver \Operation \InstallOperation ;
66use Composer \DependencyResolver \Operation \UninstallOperation ;
77use Composer \DependencyResolver \Operation \UpdateOperation ;
8+ use Composer \Package \AliasPackage ;
9+ use Composer \Package \Package ;
10+ use Composer \Repository \ArrayRepository ;
11+ use Composer \Repository \RepositoryInterface ;
812use IonBazan \ComposerDiff \Diff \DiffEntry ;
913use IonBazan \ComposerDiff \PackageDiff ;
1014
@@ -27,7 +31,7 @@ public function testBasicUsage(array $expected, $dev, $withPlatform)
2731 $ withPlatform
2832 );
2933
30- $ this ->assertSame ($ expected , array_map (array ($ this , 'entryToString ' ), $ operations ->getIterator ()-> getArrayCopy ()));
34+ $ this ->assertSame ($ expected , array_map (array ($ this , 'entryToString ' ), $ operations ->getArrayCopy ()));
3135 }
3236
3337 public function testSameBaseAndTarget ()
@@ -43,6 +47,19 @@ public function testSameBaseAndTarget()
4347 $ this ->assertEmpty ($ operations );
4448 }
4549
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+
4663 /**
4764 * @param string[] $expected
4865 * @param bool $dev
@@ -56,7 +73,7 @@ public function testGitUsage(array $expected, $dev, $withPlatform)
5673 $ this ->prepareGit ();
5774 $ operations = $ diff ->getPackageDiff ('HEAD ' , '' , $ dev , $ withPlatform );
5875
59- $ this ->assertSame ($ expected , array_map (array ($ this , 'entryToString ' ), $ operations ->getIterator ()-> getArrayCopy ()));
76+ $ this ->assertSame ($ expected , array_map (array ($ this , 'entryToString ' ), $ operations ->getArrayCopy ()));
6077 }
6178
6279 public function testInvalidGitRef ()
@@ -67,6 +84,51 @@ public function testInvalidGitRef()
6784 $ diff ->getPackageDiff ('invalid-ref ' , '' , true , true );
6885 }
6986
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+
70132 public function operationsProvider ()
71133 {
72134 return array (
0 commit comments