public void ConfigMaker_Dump_CallsFileOperations_ToWriteActivityEntriesJson_ToFile()
        {
            //// Arrange
            var         mockFileOperations = new Mock <IFileOperations>(MockBehavior.Strict);
            ConfigMaker configMaker        = new ConfigMaker(mockFileOperations.Object);
            string      fileName           = "DeploymentConfig1.Json";

            mockFileOperations.Setup(fo => fo.Exists(It.Is <string>(path => path.Equals(fileName)))).Returns(false);
            mockFileOperations.Setup(fo => fo.WriteAllText(
                                         It.Is <string>(path => path.Equals(fileName)),
                                         It.Is <string>(contents => contents.Equals(configMaker.ActivityConfigEntries.ToJson()))
                                         )
                                     ).Verifiable();

            //// Act
            configMaker.Dump(fileName);

            //// Assert
            mockFileOperations.Verify();
        }
        public void ConfigMaker_Dump_CallsFileOperations_GetsFileNameFromConfig_IfFileNameIsEmpty()
        {
            //// Arrange
            var         mockFileOperations = new Mock <IFileOperations>(MockBehavior.Strict);
            ConfigMaker configMaker        = new ConfigMaker(mockFileOperations.Object);
            string      fileName           = ConfigurationManager.AppSettings["ExecutorsConfigFile"].ToString();

            mockFileOperations.Setup(fo => fo.Exists(It.Is <string>(path => path.Equals(fileName)))).Returns(true);
            mockFileOperations.Setup(fo => fo.Copy(It.Is <string>(path => path.Equals(fileName)),
                                                   It.IsAny <string>())).Verifiable();
            mockFileOperations.Setup(fo => fo.WriteAllText(
                                         It.Is <string>(path => path.Equals(fileName)),
                                         It.Is <string>(contents => contents.Equals(configMaker.ActivityConfigEntries.ToJson()))
                                         )
                                     ).Verifiable();

            //// Act
            configMaker.Dump(""); // Passing empty name

            //// Assert
            mockFileOperations.Verify();
        }
        public void ConfigMaker_Dump_CallsFileOperations_AppendsJsonToFileName()
        {
            //// Arrange
            var         mockFileOperations = new Mock <IFileOperations>(MockBehavior.Strict);
            ConfigMaker configMaker        = new ConfigMaker(mockFileOperations.Object);
            string      fileName           = "DeploymentConfig";
            string      fileNameJson       = "DeploymentConfig.json";

            mockFileOperations.Setup(fo => fo.Exists(It.Is <string>(path => path.Equals(fileNameJson, StringComparison.CurrentCultureIgnoreCase)))).Returns(true);
            mockFileOperations.Setup(fo => fo.Copy(It.Is <string>(path => path.Equals(fileNameJson, StringComparison.CurrentCultureIgnoreCase)),
                                                   It.IsAny <string>())).Verifiable();
            mockFileOperations.Setup(fo => fo.WriteAllText(
                                         It.Is <string>(path => path.Equals(fileNameJson, StringComparison.CurrentCultureIgnoreCase)),
                                         It.Is <string>(contents => contents.Equals(configMaker.ActivityConfigEntries.ToJson()))
                                         )
                                     ).Verifiable();

            //// Act
            configMaker.Dump(fileName); // Passing name without json extension

            //// Assert
            mockFileOperations.Verify();
        }
        public void ConfigMaker_Dump_CallsFileOperations_BacksUp_ExistingFile_BeforeWriting()
        {
            //// Arrange
            var         mockFileOperations = new Mock <IFileOperations>(MockBehavior.Strict);
            ConfigMaker configMaker        = new ConfigMaker(mockFileOperations.Object);
            string      fileName           = "DeploymentConfig1.Json";

            // pass file.exists as true
            mockFileOperations.Setup(fo => fo.Exists(It.Is <string>(path => path.Equals(fileName)))).Returns(true);
            mockFileOperations.Setup(fo => fo.Copy(It.Is <string>(path => path.Equals(fileName)),
                                                   It.IsAny <string>())).Verifiable();
            mockFileOperations.Setup(fo => fo.WriteAllText(
                                         It.Is <string>(path => path.Equals(fileName)),
                                         It.Is <string>(contents => contents.Equals(configMaker.ActivityConfigEntries.ToJson()))
                                         )
                                     ).Verifiable();

            //// Act
            configMaker.Dump(fileName);

            //// Assert
            mockFileOperations.Verify();
        }