Execute() 공개 메소드

public Execute ( ) : bool
리턴 bool
        public void Execute_SolutionPathArgumentIsNotSet_MessageIsWrittenToUserInterface()
        {
            // Arrange
            var solutionPackagingService = new Mock<ISolutionPackagingService>();
            var buildPropertyParser = new Mock<IBuildPropertyParser>();
            var publishingService = new Mock<IPublishingService>();
            var packageSolutionCommand = new PackageSolutionCommand(this.loggingUserInterface.UserInterface, solutionPackagingService.Object, buildPropertyParser.Object, publishingService.Object);

            // Act
            packageSolutionCommand.Execute();

            // Assert
            Assert.IsNotNullOrEmpty(this.loggingUserInterface.UserInterfaceOutput);
        }
        public void Execute_SolutionPathArgumentIsNotSet_PackageSolutionIsNotExecuted()
        {
            // Arrange
            var solutionPackagingService = new Mock<ISolutionPackagingService>();
            var buildPropertyParser = new Mock<IBuildPropertyParser>();
            var publishingService = new Mock<IPublishingService>();
            var packageSolutionCommand = new PackageSolutionCommand(this.loggingUserInterface.UserInterface, solutionPackagingService.Object, buildPropertyParser.Object, publishingService.Object);

            // Act
            packageSolutionCommand.Execute();

            // Assert
            solutionPackagingService.Verify(s => s.PackageSolution(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<KeyValuePair<string, string>[]>()), Times.Never());
        }
        public void Execute_PublishingFails_FailureResultIsWrittenTouUserInterface()
        {
            // Arrange
            string solutionPath = @"C:\dev\project-xy\solution.sln";
            string buildConfiguration = "Debug";
            string publishConfigurationName = "Some Publish Config";

            var solutionPackagingService = new Mock<ISolutionPackagingService>();
            solutionPackagingService.Setup(s => s.PackageSolution(solutionPath, buildConfiguration, It.IsAny<KeyValuePair<string, string>[]>())).Returns(new SuccessResult());

            var buildPropertyParser = new Mock<IBuildPropertyParser>();

            var publishingService = new Mock<IPublishingService>();
            string publishingFailureMessage = "Publishing failed. yada yada. " + Guid.NewGuid().ToString();
            publishingService.Setup(p => p.PublishPackage(It.IsAny<string>(), It.IsAny<string>())).Returns(new FailureResult(publishingFailureMessage));

            var packageSolutionCommand = new PackageSolutionCommand(this.loggingUserInterface.UserInterface, solutionPackagingService.Object, buildPropertyParser.Object, publishingService.Object);

            // prepare command arguments
            packageSolutionCommand.Arguments.Add(PackageSolutionCommand.ArgumentNameSolutionPath, solutionPath);
            packageSolutionCommand.Arguments.Add(PackageSolutionCommand.ArgumentNameBuildConfiguration, buildConfiguration);
            packageSolutionCommand.Arguments.Add(PackageSolutionCommand.ArgumentNamePublishingConfiguration, publishConfigurationName);

            // Act
            packageSolutionCommand.Execute();

            // Assert
            Assert.IsTrue(
                this.loggingUserInterface.UserInterfaceOutput.Contains(publishingFailureMessage),
                "The user interface should contain the failure message \"{0}\" but contains this \"{1}\"",
                publishingFailureMessage,
                this.loggingUserInterface.UserInterfaceOutput);
        }
        public void Execute_PublishingSucceeds_SuccessMessageIsWrittenTouUserInterface()
        {
            // Arrange
            string solutionPath = @"C:\dev\project-xy\solution.sln";
            string buildConfiguration = "Debug";
            string publishConfigurationName = "Some Publish Config";

            string packagePath = @"C:\some-package.nupkg";
            var solutionPackagingService = new Mock<ISolutionPackagingService>();
            solutionPackagingService.Setup(s => s.PackageSolution(solutionPath, buildConfiguration, It.IsAny<KeyValuePair<string, string>[]>())).Returns(
                new SuccessResult { ResultArtefact = packagePath });

            var buildPropertyParser = new Mock<IBuildPropertyParser>();

            var publishingService = new Mock<IPublishingService>();
            publishingService.Setup(p => p.PublishPackage(It.IsAny<string>(), It.IsAny<string>())).Returns(new SuccessResult());

            var packageSolutionCommand = new PackageSolutionCommand(this.loggingUserInterface.UserInterface, solutionPackagingService.Object, buildPropertyParser.Object, publishingService.Object);

            // prepare command arguments
            packageSolutionCommand.Arguments.Add(PackageSolutionCommand.ArgumentNameSolutionPath, solutionPath);
            packageSolutionCommand.Arguments.Add(PackageSolutionCommand.ArgumentNameBuildConfiguration, buildConfiguration);
            packageSolutionCommand.Arguments.Add(PackageSolutionCommand.ArgumentNamePublishingConfiguration, publishConfigurationName);

            // Act
            packageSolutionCommand.Execute();

            // Assert
            Assert.IsTrue(
                this.loggingUserInterface.UserInterfaceOutput.Contains(packagePath)
                && this.loggingUserInterface.UserInterfaceOutput.Contains(publishConfigurationName),
                "The user interface should contain the package path \"{0}\" and the publish configuration name \"{1}\" but contains this \"{2}\"",
                packagePath,
                publishConfigurationName,
                this.loggingUserInterface.UserInterfaceOutput);
        }
        public void Execute_PackagingSucceeds_ResultIsTrue()
        {
            // Arrange
            string solutionPath = @"C:\dev\project-xy\solution.sln";
            string buildConfiguration = "Debug";

            var solutionPackagingService = new Mock<ISolutionPackagingService>();
            solutionPackagingService.Setup(s => s.PackageSolution(solutionPath, buildConfiguration, It.IsAny<KeyValuePair<string, string>[]>())).Returns(new SuccessResult());

            var buildPropertyParser = new Mock<IBuildPropertyParser>();
            var publishingService = new Mock<IPublishingService>();
            var packageSolutionCommand = new PackageSolutionCommand(this.loggingUserInterface.UserInterface, solutionPackagingService.Object, buildPropertyParser.Object, publishingService.Object);

            // prepare command arguments
            packageSolutionCommand.Arguments.Add(PackageSolutionCommand.ArgumentNameSolutionPath, solutionPath);
            packageSolutionCommand.Arguments.Add(PackageSolutionCommand.ArgumentNameBuildConfiguration, buildConfiguration);

            // Act
            var result = packageSolutionCommand.Execute();

            // Assert
            Assert.IsTrue(result);
        }
        public void Execute_PublishConfigurationIsSet_PublishIsExecuted()
        {
            // Arrange
            string solutionPath = @"C:\dev\project-xy\solution.sln";
            string buildConfiguration = "Debug";
            string publishConfigurationName = "Some Publish Config";

            var solutionPackagingService = new Mock<ISolutionPackagingService>();
            solutionPackagingService.Setup(s => s.PackageSolution(solutionPath, buildConfiguration, It.IsAny<KeyValuePair<string, string>[]>())).Returns(new SuccessResult());

            var buildPropertyParser = new Mock<IBuildPropertyParser>();
            var publishingService = new Mock<IPublishingService>();
            publishingService.Setup(p => p.PublishPackage(It.IsAny<string>(), publishConfigurationName)).Returns(new SuccessResult());

            var packageSolutionCommand = new PackageSolutionCommand(this.loggingUserInterface.UserInterface, solutionPackagingService.Object, buildPropertyParser.Object, publishingService.Object);

            // prepare command arguments
            packageSolutionCommand.Arguments.Add(PackageSolutionCommand.ArgumentNameSolutionPath, solutionPath);
            packageSolutionCommand.Arguments.Add(PackageSolutionCommand.ArgumentNameBuildConfiguration, buildConfiguration);
            packageSolutionCommand.Arguments.Add(PackageSolutionCommand.ArgumentNamePublishingConfiguration, publishConfigurationName);

            // Act
            packageSolutionCommand.Execute();

            // Assert
            publishingService.Verify(p => p.PublishPackage(It.IsAny<string>(), publishConfigurationName), Times.Once());
        }
        public void Execute_MSBuildPropertiesArgumentIsNotSet_ParseBuildPropertiesArgumentIsNotCalled()
        {
            // Arrange
            var solutionPackagingService = new Mock<ISolutionPackagingService>();
            var buildPropertyParser = new Mock<IBuildPropertyParser>();
            var publishingService = new Mock<IPublishingService>();

            solutionPackagingService.Setup(s => s.PackageSolution(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<KeyValuePair<string, string>[]>())).Returns(
                new SuccessResult());

            var packageSolutionCommand = new PackageSolutionCommand(this.loggingUserInterface.UserInterface, solutionPackagingService.Object, buildPropertyParser.Object, publishingService.Object);

            // prepare command arguments
            string solutionPath = @"C:\dev\project-xy\solution.sln";
            string buildConfiguration = "Debug";

            packageSolutionCommand.Arguments.Add(PackageSolutionCommand.ArgumentNameSolutionPath, solutionPath);
            packageSolutionCommand.Arguments.Add(PackageSolutionCommand.ArgumentNameBuildConfiguration, buildConfiguration);

            // Act
            packageSolutionCommand.Execute();

            // Assert
            buildPropertyParser.Verify(b => b.ParseBuildPropertiesArgument(It.IsAny<string>()), Times.Never());
        }
        public void Execute_MSBuildPropertiesArgumentIsInvalid_PackageSolutionIsCalledWithEmptyListOfBuildProperties(string buildPropertiesArgument)
        {
            // Arrange
            var solutionPackagingService = new Mock<ISolutionPackagingService>();
            var buildPropertyParser = new Mock<IBuildPropertyParser>();
            var publishingService = new Mock<IPublishingService>();

            solutionPackagingService.Setup(s => s.PackageSolution(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<KeyValuePair<string, string>[]>())).Returns(
                new SuccessResult());

            var packageSolutionCommand = new PackageSolutionCommand(this.loggingUserInterface.UserInterface, solutionPackagingService.Object, buildPropertyParser.Object, publishingService.Object);

            // prepare command arguments
            string solutionPath = @"C:\dev\project-xy\solution.sln";
            string buildConfiguration = "Debug";

            packageSolutionCommand.Arguments.Add(PackageSolutionCommand.ArgumentNameSolutionPath, solutionPath);
            packageSolutionCommand.Arguments.Add(PackageSolutionCommand.ArgumentNameBuildConfiguration, buildConfiguration);

            packageSolutionCommand.Arguments.Add(PackageSolutionCommand.ArgumentNameMSBuildProperties, buildPropertiesArgument);

            // Act
            packageSolutionCommand.Execute();

            // Assert
            solutionPackagingService.Verify(
                p => p.PackageSolution(solutionPath, buildConfiguration, It.Is<KeyValuePair<string, string>[]>(d => d.Any() == false)), Times.Once());
        }
        public void Execute_MSBuildPropertiesArgumentContainsTwoValues_PackageSolutionIsCalledWithEmptyListOfTwoBuildProperties()
        {
            // Arrange
            var solutionPackagingService = new Mock<ISolutionPackagingService>();
            var buildPropertyParser = new Mock<IBuildPropertyParser>();
            var publishingService = new Mock<IPublishingService>();

            solutionPackagingService.Setup(s => s.PackageSolution(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<KeyValuePair<string, string>[]>())).Returns(
                new SuccessResult());

            var packageSolutionCommand = new PackageSolutionCommand(this.loggingUserInterface.UserInterface, solutionPackagingService.Object, buildPropertyParser.Object, publishingService.Object);

            // prepare command arguments
            string solutionPath = @"C:\dev\project-xy\solution.sln";
            string buildConfiguration = "Debug";

            var buildProperties = new List<KeyValuePair<string, string>>
                {
                    new KeyValuePair<string, string>("IsAutoBuild", "True"),
                    new KeyValuePair<string, string>("SomeOtherParam", "Value")
                };

            string buildPropertiesArgument = string.Join(
                NuDeployConstants.MultiValueSeperator.ToString(CultureInfo.InvariantCulture),
                buildProperties.Select(pair => string.Format("{0}={1}", pair.Key, pair.Value)));

            packageSolutionCommand.Arguments.Add(PackageSolutionCommand.ArgumentNameSolutionPath, solutionPath);
            packageSolutionCommand.Arguments.Add(PackageSolutionCommand.ArgumentNameBuildConfiguration, buildConfiguration);
            packageSolutionCommand.Arguments.Add(PackageSolutionCommand.ArgumentNameMSBuildProperties, buildPropertiesArgument);

            buildPropertyParser.Setup(b => b.ParseBuildPropertiesArgument(buildPropertiesArgument)).Returns(buildProperties);

            // Act
            packageSolutionCommand.Execute();

            // Assert
            solutionPackagingService.Verify(
                p =>
                p.PackageSolution(solutionPath, buildConfiguration, It.Is<KeyValuePair<string, string>[]>(d => d.Count() == buildProperties.Count)),
                Times.Once());
        }
        public void Execute_BuildConfigurationArgumentIsNotSet_PackageSolutionIsNotExecuted()
        {
            // Arrange
            var solutionPackagingService = new Mock<ISolutionPackagingService>();
            var buildPropertyParser = new Mock<IBuildPropertyParser>();
            var publishingService = new Mock<IPublishingService>();
            var packageSolutionCommand = new PackageSolutionCommand(this.loggingUserInterface.UserInterface, solutionPackagingService.Object, buildPropertyParser.Object, publishingService.Object);

            // prepare command arguments
            string solutionPath = @"C:\dev\project-xy\solution.sln";
            packageSolutionCommand.Arguments.Add(PackageSolutionCommand.ArgumentNameSolutionPath, solutionPath);

            // Act
            packageSolutionCommand.Execute();

            // Assert
            solutionPackagingService.Verify(s => s.PackageSolution(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<KeyValuePair<string, string>[]>()), Times.Never());
        }
        public void Execute_BuildConfigurationArgumentIsNotSet_MessageIsWrittenToUserInterface()
        {
            // Arrange
            var solutionPackagingService = new Mock<ISolutionPackagingService>();
            var buildPropertyParser = new Mock<IBuildPropertyParser>();
            var publishingService = new Mock<IPublishingService>();
            var packageSolutionCommand = new PackageSolutionCommand(this.loggingUserInterface.UserInterface, solutionPackagingService.Object, buildPropertyParser.Object, publishingService.Object);

            // prepare command arguments
            string solutionPath = @"C:\dev\project-xy\solution.sln";
            packageSolutionCommand.Arguments.Add(PackageSolutionCommand.ArgumentNameSolutionPath, solutionPath);

            // Act
            packageSolutionCommand.Execute();

            // Assert
            Assert.IsNotNullOrEmpty(this.loggingUserInterface.UserInterfaceOutput);
        }