public void Constructor_AllParametersAreSet_ObjectIsInstantiated()
        {
            // Arrange
            var installationStatusProvider = new Mock<IInstallationStatusProvider>();

            // Act
            var installationLogicProvider = new InstallationLogicProvider(installationStatusProvider.Object);

            // Assert
            Assert.IsNotNull(installationLogicProvider);
        }
        public void IsInstallRequired_NewPackageVersionIsNull_ArgumentExceptionIsThrown()
        {
            // Arrange
            string packageId = "Package.A";
            SemanticVersion newPackageVersion = null;
            bool forceInstallation = false;

            var installationStatusProvider = new Mock<IInstallationStatusProvider>();
            var installationLogicProvider = new InstallationLogicProvider(installationStatusProvider.Object);

            // Act
            installationLogicProvider.IsInstallRequired(packageId, newPackageVersion, forceInstallation);
        }
        public void IsInstallRequired_ForceInstallationIsSetToTrue_ResultIsTrue_NopMatterWhatTheOtherParametersAre()
        {
            // Arrange
            string packageId = "Package.A";
            var newPackageVersion = new SemanticVersion(1, 0, 0, 0);
            bool forceInstallation = true;

            var installationStatusProvider = new Mock<IInstallationStatusProvider>();
            var installationLogicProvider = new InstallationLogicProvider(installationStatusProvider.Object);

            // Act
            var result = installationLogicProvider.IsInstallRequired(packageId, newPackageVersion, forceInstallation);

            // Assert
            Assert.AreEqual(ServiceResultType.Success, result.Status);
        }
        public void IsInstallRequired_NoPackagesAreInstalled_ResultIsTrue()
        {
            // Arrange
            string packageId = "Package.A";
            var newPackageVersion = new SemanticVersion(1, 0, 0, 0);
            bool forceInstallation = false;

            var installationStatusProvider = new Mock<IInstallationStatusProvider>();

            var packages = new List<NuDeployPackageInfo>();
            installationStatusProvider.Setup(i => i.GetPackageInfo(packageId)).Returns(packages);

            var installationLogicProvider = new InstallationLogicProvider(installationStatusProvider.Object);

            // Act
            var result = installationLogicProvider.IsInstallRequired(packageId, newPackageVersion, forceInstallation);

            // Assert
            Assert.AreEqual(ServiceResultType.Success, result.Status);
        }
        public void IsUninstallRequired_PackageIsNotInstalled_ResultIsFalse()
        {
            // Arrange
            string packageId = "Package.A";
            var newPackageVersion = new SemanticVersion(1, 0, 0, 0);
            var deploymentType = DeploymentType.Full;
            bool forceInstallation = false;

            var installationStatusProvider = new Mock<IInstallationStatusProvider>();

            var packages = new List<NuDeployPackageInfo>
                {
                    TestUtilities.GetPackage(packageId, false)
                };

            installationStatusProvider.Setup(i => i.GetPackageInfo(packageId)).Returns(packages);

            var installationLogicProvider = new InstallationLogicProvider(installationStatusProvider.Object);

            // Act
            var result = installationLogicProvider.IsUninstallRequired(packageId, newPackageVersion, deploymentType, forceInstallation);

            // Assert
            Assert.AreEqual(ServiceResultType.Failure, result.Status);
        }
        public void IsUninstallRequired_PackageIdIsInvalid_ArgumentExceptionIsThrown(string packageId)
        {
            // Arrange
            var newPackageVersion = new SemanticVersion(1, 0, 0, 0);
            var deploymentType = DeploymentType.Full;
            bool forceInstallation = false;

            var installationStatusProvider = new Mock<IInstallationStatusProvider>();
            var installationLogicProvider = new InstallationLogicProvider(installationStatusProvider.Object);

            // Act
            installationLogicProvider.IsUninstallRequired(packageId, newPackageVersion, deploymentType, forceInstallation);
        }
        public void IsUninstallRequired_DeploymentTypeIsUpdate_ResultIsFalse()
        {
            // Arrange
            string packageId = "Package.A";
            var newPackageVersion = new SemanticVersion(1, 0, 0, 0);
            var deploymentType = DeploymentType.Update;
            bool forceInstallation = false;

            var installationStatusProvider = new Mock<IInstallationStatusProvider>();
            var installationLogicProvider = new InstallationLogicProvider(installationStatusProvider.Object);

            // Act
            var result = installationLogicProvider.IsUninstallRequired(packageId, newPackageVersion, deploymentType, forceInstallation);

            // Assert
            Assert.AreEqual(ServiceResultType.Failure, result.Status);
        }
        public void IsInstallRequired_PackageIsAlreadyInstalled_CurrentVersionIsOlderThanNewVersion_ResultIsTrue()
        {
            // Arrange
            string packageId = "Package.A";
            var newPackageVersion = new SemanticVersion(1, 0, 0, 9);
            bool forceInstallation = false;

            var installationStatusProvider = new Mock<IInstallationStatusProvider>();

            var packages = new List<NuDeployPackageInfo>
                {
                    TestUtilities.GetPackage(packageId, true, 7)
                };

            installationStatusProvider.Setup(i => i.GetPackageInfo(packageId)).Returns(packages);

            var installationLogicProvider = new InstallationLogicProvider(installationStatusProvider.Object);

            // Act
            var result = installationLogicProvider.IsInstallRequired(packageId, newPackageVersion, forceInstallation);

            // Assert
            Assert.AreEqual(ServiceResultType.Success, result.Status);
        }