Inheritance: IPackageConfigurationTransformationService
        public void Constructor_ConfigurationFileTransformerParameterIsNotSet_ArgumentNullExceptionIsThrown()
        {
            // Act
            var packageConfigurationTransformationService = new PackageConfigurationTransformationService(null);

            // Assert
            Assert.IsNotNull(packageConfigurationTransformationService);
        }
        public void Constructor_AllParametersAreSet_ObjectIsInstantiated()
        {
            // Arrange
            var configurationFileTransformer = new Mock<IConfigurationFileTransformer>();

            // Act
            var packageConfigurationTransformationService = new PackageConfigurationTransformationService(configurationFileTransformer.Object);

            // Assert
            Assert.IsNotNull(packageConfigurationTransformationService);
        }
        public void TransformSystemSettings_PackageFolderParameterIsInvalid_ArgumentExceptionIsThrown(string packageFolder)
        {
            // Arrange
            string[] systemSettingTransformationProfileNames = new string[] { };

            var configurationFileTransformer = new Mock<IConfigurationFileTransformer>();

            var packageConfigurationTransformationService = new PackageConfigurationTransformationService(configurationFileTransformer.Object);

            // Act
            packageConfigurationTransformationService.TransformSystemSettings(packageFolder, systemSettingTransformationProfileNames);
        }
        public void TransformSystemSettings_SystemSettingTransformationProfileNamesParameterIsNull_ArgumentNullExceptionIsThrown()
        {
            // Arrange
            string packageFolder = @"C:\temp\Build\Prepackage";
            string[] systemSettingTransformationProfileNames = null;

            var configurationFileTransformer = new Mock<IConfigurationFileTransformer>();

            var packageConfigurationTransformationService = new PackageConfigurationTransformationService(configurationFileTransformer.Object);

            // Act
            packageConfigurationTransformationService.TransformSystemSettings(packageFolder, systemSettingTransformationProfileNames);
        }
        public void TransformSystemSettings_NoTransformationProfilesAreSpecified_ResultIsTrue()
        {
            // Arrange
            string packageFolder = @"C:\temp\Build\Prepackage";
            var systemSettingTransformationProfileNames = new string[] { };

            var configurationFileTransformer = new Mock<IConfigurationFileTransformer>();

            var packageConfigurationTransformationService = new PackageConfigurationTransformationService(configurationFileTransformer.Object);

            // Act
            var result = packageConfigurationTransformationService.TransformSystemSettings(packageFolder, systemSettingTransformationProfileNames);

            // Assert
            Assert.AreEqual(ServiceResultType.Success, result.Status);
        }
        public void TransformSystemSettings_TransformationFails_ResultIsFalse(string profileWhichFailsTheTransformation)
        {
            // Arrange
            string packageFolder = @"C:\temp\Build\Prepackage";
            var systemSettingTransformationProfileNames = new[] { "profile1", "profile2", "profile3" };

            var configurationFileTransformer = new Mock<IConfigurationFileTransformer>();
            configurationFileTransformer.Setup(t => t.Transform(It.IsAny<string>(), It.Is<string>(transformationFilePath => transformationFilePath.Contains(profileWhichFailsTheTransformation) == false), It.IsAny<string>())).Returns(new SuccessResult());
            configurationFileTransformer.Setup(t => t.Transform(It.IsAny<string>(), It.Is<string>(transformationFilePath => transformationFilePath.Contains(profileWhichFailsTheTransformation) == true), It.IsAny<string>())).Returns(new FailureResult());

            var packageConfigurationTransformationService = new PackageConfigurationTransformationService(configurationFileTransformer.Object);

            // Act
            var result = packageConfigurationTransformationService.TransformSystemSettings(packageFolder, systemSettingTransformationProfileNames);

            // Assert
            Assert.AreEqual(ServiceResultType.Failure, result.Status);
        }
        public void TransformSystemSettings_TransformIsCalledForEachProfile_TransformationSucceeds()
        {
            // Arrange
            string packageFolder = @"C:\temp\Build\Prepackage";
            var systemSettingTransformationProfileNames = new[] { "profile1", "profile2", "profile3" };

            var configurationFileTransformer = new Mock<IConfigurationFileTransformer>();
            configurationFileTransformer.Setup(t => t.Transform(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).Returns(new SuccessResult());

            var packageConfigurationTransformationService = new PackageConfigurationTransformationService(configurationFileTransformer.Object);

            // Act
            packageConfigurationTransformationService.TransformSystemSettings(packageFolder, systemSettingTransformationProfileNames);

            // Assert
            foreach (var systemSettingTransformationProfileName in systemSettingTransformationProfileNames)
            {
                string profileName = systemSettingTransformationProfileName;

                configurationFileTransformer.Verify(
                    t =>
                    t.Transform(
                        It.IsAny<string>(),
                        It.Is<string>(transformationFilePath => transformationFilePath.Contains(profileName)),
                        It.Is<string>(
                            destinationFilePath => destinationFilePath.EndsWith(PackageConfigurationTransformationService.TransformedSystemSettingsFileName))),
                    Times.Once());
            }
        }
        public void TransformSystemSettings_TransformationSucceeds_ResultIsTrue()
        {
            // Arrange
            string packageFolder = @"C:\temp\Build\Prepackage";
            var systemSettingTransformationProfileNames = new[] { "profile1", "profile2", "profile3" };

            var configurationFileTransformer = new Mock<IConfigurationFileTransformer>();
            configurationFileTransformer.Setup(t => t.Transform(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>())).Returns(new SuccessResult());

            var packageConfigurationTransformationService = new PackageConfigurationTransformationService(configurationFileTransformer.Object);

            // Act
            var result = packageConfigurationTransformationService.TransformSystemSettings(packageFolder, systemSettingTransformationProfileNames);

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