public void TestUpdatePackageNotInstalled()
        {
            var installer = new InstallerLibrary(io, bucket);

            repository.Setup((o) => o.HasPackage(It.IsAny <IPackage>())).Returns(false);

            var initial = new Mock <IPackage>();
            var target  = new Mock <IPackage>();

            installer.Update(repository.Object, initial.Object, target.Object);
        }
        public void TestUpdate()
        {
            var fileSystemMock = new Mock <IFileSystem>();
            var installer      = new InstallerLibrary(io, bucket, fileSystem: fileSystemMock.Object);
            var initial        = new Mock <IPackage>();
            var target         = new Mock <IPackage>();

            initial.Setup((o) => o.GetNamePretty()).Returns("foo/old");
            target.Setup((o) => o.GetNamePretty()).Returns("foo/new");
            target.Setup((o) => o.Clone()).Returns(target.Object);

            repository.SetupSequence((o) => o.HasPackage(It.IsAny <IPackage>()))
            .Returns(true).Returns(false);

            installer.Update(repository.Object, initial.Object, target.Object);

            downloadManager.Verify((o) => o.Update(initial.Object, target.Object, vendorDir + "/foo/new"));
            fileSystemMock.Verify((o) => o.Move(vendorDir + "/foo/old", vendorDir + "/foo/new"));
            repository.Verify((o) => o.RemovePackage(initial.Object));
            repository.Verify((o) => o.AddPackage(target.Object));
        }