public void TestUninstallNotInstalledPackage()
        {
            var installer   = new InstallerLibrary(io, bucket);
            var packageMock = new Mock <IPackage>();

            repository.Setup((o) => o.HasPackage(packageMock.Object)).Returns(false);

            installer.Uninstall(repository.Object, packageMock.Object);
        }
        public void TestUninstall()
        {
            var installer   = new InstallerLibrary(io, bucket);
            var packageMock = new Mock <IPackage>();

            packageMock.Setup((o) => o.GetName()).Returns("foo");
            packageMock.Setup((o) => o.GetNamePretty()).Returns("foo");
            repository.SetupSequence((o) => o.HasPackage(packageMock.Object))
            .Returns(true).Returns(false);

            installer.Uninstall(repository.Object, packageMock.Object);

            downloadManager.Verify((o) => o.Remove(packageMock.Object, vendorDir + "/foo"));
            repository.Verify((o) => o.RemovePackage(packageMock.Object));
        }
        public void TestUninstallDeleteVendorDirIfDirIsEmpty()
        {
            var fileSystemMock = new Mock <IFileSystem>();
            var installer      = new InstallerLibrary(io, bucket, fileSystem: fileSystemMock.Object);
            var packageMock    = new Mock <IPackage>();

            repository.Setup((o) => o.HasPackage(packageMock.Object)).Returns(true);
            packageMock.Setup((o) => o.GetName()).Returns("foo/bar");

            var fullVendorDir = Path.GetDirectoryName(installer.GetInstallPath(packageMock.Object));

            fileSystemMock.Setup((o) => o.Exists(fullVendorDir, FileSystemOptions.Directory)).Returns(true);

            installer.Uninstall(repository.Object, packageMock.Object);

            fileSystemMock.Verify((o) => o.Delete(fullVendorDir));
        }