/// <summary> /// Generates a new version number for assignment. /// </summary> private long GetNewVersionNumber(GenerateScriptCommandArgs args) { var factory = new VersionStrategyFactory(_configurationManager); IVersionStrategy strategy = factory.GetStrategy(); long version = strategy.GetNewVersionNumber(this, args); return(version); }
public void Validation_should_succeed_if_MigrationName_has_value() { // arrange var argSet = ArgumentSet.Parse(new string[] { "-n", "my_migration_name" }); var args = new GenerateScriptCommandArgs(); // act args.Parse(argSet); // assert Assert.IsTrue(args.IsValid); }
public void Validation_should_fail_if_MigrationName_is_null_or_empty() { // arrange var argSet = ArgumentSet.Parse(new string[] { string.Empty }); var args = new GenerateScriptCommandArgs(); // act args.Parse(argSet); // assert Assert.IsFalse(args.IsValid); Assert.AreEqual(1, args.Errors.Count()); }
public void Run_should_call_IMigrationDirectory_CreateBlankScript_with_correct_args() { // arrange var mockMigrationDir = new Mock <IMigrationDirectory>(); mockMigrationDir.Setup(dir => dir.CreateBlankScript("my_name")).Returns("C:\\1234_my_name.sql"); var cmd = new GenerateScriptCommand(mockMigrationDir.Object); cmd.Log = new MockLog1(); var cmdArgs = new GenerateScriptCommandArgs(); cmdArgs.MigrationName = "my_name"; // act cmd.Run(cmdArgs); // assert mockMigrationDir.Verify(dir => dir.CreateBlankScript("my_name")); }
public void Run_should_log_file_name_of_new_migration_script() { // arrange var mockMigrationDir = new Mock <IMigrationDirectory>(); mockMigrationDir.Setup(dir => dir.CreateBlankScript("my_name")).Returns("C:\\1234_my_name.sql"); var cmd = new GenerateScriptCommand(mockMigrationDir.Object); var mockLog = new MockLog1(); cmd.Log = mockLog; var cmdArgs = new GenerateScriptCommandArgs(); cmdArgs.MigrationName = "my_name"; // act cmd.Run(cmdArgs); // assert mockLog.Output.Contains(" 1234_my_name.sql "); }
/// <summary> /// Creates a blank migration script with the given name. /// </summary> /// <returns>The path to the new migration script.</returns> public string CreateBlankScript(GenerateScriptCommandArgs args) { long version = GetNewVersionNumber(args); var path = GetPath(null, args); path = Path.Combine(path, version + "_" + SanitizeMigrationName(args.MigrationName) + ".sql"); var setup = new System.Text.StringBuilder(); setup.AppendLine("SET XACT_ABORT ON;"); setup.AppendLine(""); setup.Append("-- TODO: Replace with script implementation"); var contents = new MigrationScriptContents(setup.ToString(), null); var file = new MigrationScriptFile(path); file.Write(contents); return(path); }