상속: IFileWriter
예제 #1
0
 public void GeneratorAddSingleColumnTest()
 {
     Configuration configuration = new Configuration(new[] { "-g", "addfirst_nametoUsers" });
     TestFileWriter file_writer = new TestFileWriter();
     IHumpbackCommand target = new Generator(configuration, Settings, file_writer);
     target.Execute();
     Assert.True(file_writer.FileName.Contains("Users"));
     Assert.True(file_writer.FileName.Contains("AddColumn"));
     Assert.True(file_writer.FileContents.Contains("add_column"));
     Assert.True(file_writer.FileContents.Contains("up"));
     Assert.True(file_writer.FileContents.Contains("first_name"));
 }
예제 #2
0
        public void TestGeneratePlainSQLStringDown()
        {
            var json = "{\"down\":\"DELETE FROM [Control] WHERE ControlName LIKE '%Date Label'\"}";

            Configuration configuration = new Configuration(new[] { "-s", "1" });
            TestFileWriter file_writer = new TestFileWriter();
            ISqlFormatter formatter = new SQLServerFormatter(configuration, Settings);
            TestSQLDatabaseProvider _database_provider = new TestSQLDatabaseProvider(configuration, Settings, formatter);

            dynamic migration_object = Helpers.DeserializeMigration(json);
            _database_provider.ExecuteDownCommand(migration_object);
            Assert.Equal("DELETE FROM [Control] WHERE ControlName LIKE '%Date Label'", _database_provider.LastCommand);
        }
예제 #3
0
 public void GeneratorAddReferenceColumnTest()
 {
     Configuration configuration = new Configuration(new[] { "-g", "AddUserToOrders", "User:reference" });
     TestFileWriter file_writer = new TestFileWriter();
     IHumpbackCommand target = new Generator(configuration, Settings, file_writer);
     target.Execute();
     Assert.True(file_writer.FileName.Contains("AddColumn_Orders_UserId"));
     Assert.True(file_writer.FileContents.Contains("add_column"));
     Assert.True(file_writer.FileContents.Contains("up"));
     Assert.True(file_writer.FileContents.Contains("\"name\":\"User\",\"type\":\"reference\"}]"));
     Assert.True(file_writer.FileContents.Contains("remove_column"));
     Assert.True(file_writer.FileContents.Contains("\"column\":\"UserId\""));
 }
예제 #4
0
 public void SqlFormatterAddIndexTest()
 {
     Configuration configuration = new Configuration(new[] { "-s", "6" });
     TestFileWriter file_writer = new TestFileWriter();
     ISqlFormatter formatter = new SQLServerFormatter(configuration, Settings);
     IMigrationProvider migrations = new TestMigrationProvider();
     IHumpbackCommand target = new GenerateSQL(configuration, Settings, formatter, file_writer, migrations);
     migrations.SetMigrationNumber(5); // add index
     target.Execute();
     Console.WriteLine(file_writer.FileContents);
     Assert.True(file_writer.FileName.Contains("6"));
     Assert.True(file_writer.FileContents.Contains("CREATE NONCLUSTERED INDEX [IX_categories_title_slug] ON [categories] ( [title] ASC, [slug] ASC )"));
 }
예제 #5
0
 public void SqlFormatterAddColumnTest()
 {
     Configuration configuration = new Configuration(new[] { "-s", "3" });
     TestFileWriter file_writer = new TestFileWriter();
     ISqlFormatter formatter = new SQLServerFormatter(configuration, Settings);
     IMigrationProvider migrations = new TestMigrationProvider();
     IHumpbackCommand target = new GenerateSQL(configuration, Settings, formatter, file_writer, migrations);
     migrations.SetMigrationNumber(3); // add col
     target.Execute();
     Console.WriteLine(file_writer.FileContents);
     Assert.True(file_writer.FileName.Contains("3"));
     Assert.True(file_writer.FileContents.Contains("ALTER TABLE [tname]"));
     Assert.True(file_writer.FileContents.Contains("ADD [name]"));
     Assert.True(file_writer.FileContents.Contains("nvarchar(255)"));
 }
예제 #6
0
 public void SqlFormatterAddColumnReferenceTest()
 {
     Configuration configuration = new Configuration(new[] { "-s", "9" });
     TestFileWriter file_writer = new TestFileWriter();
     ISqlFormatter formatter = new SQLServerFormatter(configuration, Settings);
     IMigrationProvider migrations = new TestMigrationProvider();
     IHumpbackCommand target = new GenerateSQL(configuration, Settings, formatter, file_writer, migrations);
     //migrations.SetMigrationNumber(9); // add col
     target.Execute();
     Console.WriteLine(file_writer.FileContents);
     Assert.True(file_writer.FileName.Contains("9"));
     Assert.True(file_writer.FileContents.Contains("FK_orders_user_userid"));
     Assert.True(file_writer.FileContents.Contains("ALTER TABLE [Orders] ADD [UserId] INT NOT NULL"));
     Assert.True(file_writer.FileContents.Contains("ALTER TABLE [Orders] ADD CONSTRAINT [FK_orders_user_userid] FOREIGN KEY ([UserId]) REFERENCES [User] ([Id]) ON DELETE NO ACTION ON UPDATE NO ACTION"));
 }
예제 #7
0
 public void SqlFormatterAddTableReferenceTest()
 {
     Configuration configuration = new Configuration(new[] { "-s", "10" });
     TestFileWriter file_writer = new TestFileWriter();
     ISqlFormatter formatter = new SQLServerFormatter(configuration, Settings);
     IMigrationProvider migrations = new TestMigrationProvider();
     IHumpbackCommand target = new GenerateSQL(configuration, Settings, formatter, file_writer, migrations);
     //migrations.SetMigrationNumber(10); // add col
     target.Execute();
     Console.WriteLine(file_writer.FileContents);
     Assert.True(file_writer.FileName.Contains("10"));
     Assert.True(file_writer.FileContents.Contains("FK_applicationcontrol_applicationpage_applicationpageid"));
     Assert.True(file_writer.FileContents.Contains("FK_applicationcontrol_application_applicationid"));
     Assert.True(file_writer.FileContents.Contains("FOREIGN KEY ([ApplicationPageId]) REFERENCES [ApplicationPage] ([Id])"));
     Assert.True(file_writer.FileContents.Contains("FOREIGN KEY ([ApplicationId]) REFERENCES [Application] ([Id])"));
 }
예제 #8
0
 public void GeneratorAddTableNoColumnsSpecified()
 {
     Configuration configuration = new Configuration(new[] { "-g","Users" });
     TestFileWriter file_writer = new TestFileWriter();
     IHumpbackCommand target = new Generator(configuration, Settings, file_writer);
     target.Execute();
     Assert.True(file_writer.FileName.Contains("Users"));
     Assert.True(file_writer.FileContents.Contains("create_table"));
     Assert.True(file_writer.FileContents.Contains("drop_table"));
     Assert.True(file_writer.FileContents.Contains("column_name_here"));
 }
예제 #9
0
 public void GeneratorSqlTest()
 {
     Configuration configuration = new Configuration(new[] { "-g", "SQL", "CREATE TABLE Users (ID {pk}, first_name {string} NOT NULL, price_paid {money})" });
     TestFileWriter file_writer = new TestFileWriter();
     IHumpbackCommand target = new Generator(configuration, Settings, file_writer);
     target.Execute();
     Assert.True(file_writer.FileName.Contains("SQL"));
     Assert.True(file_writer.FileContents.Contains("CREATE TABLE Users (ID {pk}, first_name {string} NOT NULL, price_paid {money})"));
     Assert.True(file_writer.FileContents.Contains("up"));
     Assert.True(file_writer.FileContents.Contains("down"));
     Assert.True(file_writer.FileContents.Contains("\"down\":\"\""));
 }
예제 #10
0
 public void GeneratorRemoveColumn()
 {
     Configuration configuration = new Configuration(new[] { "-g", "Removefirst_nameFromUsers" });
     TestFileWriter file_writer = new TestFileWriter();
     IHumpbackCommand target = new Generator(configuration, Settings, file_writer);
     target.Execute();
     Assert.True(file_writer.FileName.Contains("Users"));
     Assert.True(file_writer.FileName.Contains("RemoveColumn"));
     Assert.True(file_writer.FileContents.Contains("remove_column"));
     Assert.True(file_writer.FileContents.Contains("up"));
     Assert.True(file_writer.FileContents.Contains("first_name"));
 }
예제 #11
0
 public void GeneratorFileTest()
 {
     Configuration configuration = new Configuration(new[] { "-g", "File", "mysqlfile" });
     TestFileWriter file_writer = new TestFileWriter();
     IHumpbackCommand target = new Generator(configuration, Settings, file_writer);
     target.Execute();
     Assert.True(file_writer.FileName.Contains("File"));
     Assert.True(file_writer.FileContents.Contains("file"));
     Assert.True(file_writer.FileContents.Contains("mysqlfile"));
     Assert.True(file_writer.FileContents.Contains("up"));
 }
예제 #12
0
 public void GeneratorDropTable()
 {
     Configuration configuration = new Configuration(new[] { "-g", "DropUsers" });
     TestFileWriter file_writer = new TestFileWriter();
     IHumpbackCommand target = new Generator(configuration, Settings, file_writer);
     target.Execute();
     Assert.True(file_writer.FileName.Contains("Users"));
     Assert.True(file_writer.FileName.Contains("DropTable"));
     Assert.True(file_writer.FileContents.Contains("drop_table"));
     Assert.True(file_writer.FileContents.Contains("up"));
     Assert.True(file_writer.FileContents.Contains("Users"));
 }
예제 #13
0
 public void GeneratorDropIndexTest()
 {
     Configuration configuration = new Configuration(new[] { "-g", "removeindexfromUsers", "first_name", "last_name" });
     TestFileWriter file_writer = new TestFileWriter();
     IHumpbackCommand target = new Generator(configuration, Settings, file_writer);
     target.Execute();
     Assert.True(file_writer.FileName.Contains("Users"));
     Assert.True(file_writer.FileName.Contains("RemoveIndex"));
     Assert.True(file_writer.FileContents.Contains("remove_index"));
     Assert.True(file_writer.FileContents.Contains("up"));
     Assert.True(file_writer.FileContents.Contains("first_name"));
     Assert.True(file_writer.FileContents.Contains("last_name"));
 }
예제 #14
0
 public void SqlFormatterDropTableTest()
 {
     Configuration configuration = new Configuration(new[] { "-s", "2" });
     TestFileWriter file_writer = new TestFileWriter();
     ISqlFormatter formatter = new SQLServerFormatter(configuration, Settings);
     IMigrationProvider migrations = new TestMigrationProvider();
     IHumpbackCommand target = new GenerateSQL(configuration, Settings, formatter, file_writer, migrations);
     migrations.SetMigrationNumber(2); // drop table
     target.Execute();
     Console.WriteLine(file_writer.FileContents);
     Assert.True(file_writer.FileName.Contains("2"));
     Assert.True(file_writer.FileContents.Contains("DROP TABLE [tname]"));
 }
예제 #15
0
 public void GeneratorAddSingleColumnTestDuplicateTo()
 {
     Configuration configuration = new Configuration(new[] { "-g", "addcustomernametoUsers" });
     TestFileWriter file_writer = new TestFileWriter();
     IHumpbackCommand target = new Generator(configuration, Settings, file_writer);
     target.Execute();
     Assert.Null(file_writer.FileContents);
 }
예제 #16
0
 public void GeneratorAddTableMultipleColumn()
 {
     Configuration configuration = new Configuration(new[] { "-g", "Users", "first_name:string", "last_name:string" });
     TestFileWriter file_writer = new TestFileWriter();
     IHumpbackCommand target = new Generator(configuration, Settings, file_writer);
     target.Execute();
     Assert.True(file_writer.FileName.Contains("Users"));
     Assert.True(file_writer.FileContents.Contains("create_table"));
     Assert.True(file_writer.FileContents.Contains("up"));
     Assert.True(file_writer.FileContents.Contains("down"));
     Assert.True(file_writer.FileContents.Contains("drop_table"));
     Assert.True(file_writer.FileContents.Contains("first_name"));
     Assert.True(file_writer.FileContents.Contains("last_name"));
     Assert.True(file_writer.FileContents.Contains("timestamps"));
 }
예제 #17
0
 public void SqlFormatterAddTableTest()
 {
     Configuration configuration = new Configuration(new[] { "-s", "1" });
     TestFileWriter file_writer = new TestFileWriter();
     ISqlFormatter formatter = new SQLServerFormatter(configuration, Settings);
     IMigrationProvider migrations = new TestMigrationProvider();
     IHumpbackCommand target = new GenerateSQL(configuration, Settings, formatter, file_writer, migrations);
     migrations.SetMigrationNumber(1); // create table
     target.Execute();
     Console.WriteLine(file_writer.FileContents);
     Assert.True(file_writer.FileName.Contains("1"));
     Assert.True(file_writer.FileContents.Contains("CREATE TABLE [tname]"));
     Assert.True(file_writer.FileContents.Contains("[first_name] nvarchar(255)"));
     Assert.True(file_writer.FileContents.Contains("[last_name] decimal"));
     Assert.True(file_writer.FileContents.Contains("CreatedOn datetime DEFAULT getutcdate() NOT NULL"));
     Assert.True(file_writer.FileContents.Contains("Id"));
     Assert.True(file_writer.FileContents.Contains("PRIMARY KEY"));
 }
예제 #18
0
 public void GeneratorChangeSingleColumnTest()
 {
     Configuration configuration = new Configuration(new[] { "-g", "ChangeUsers", "first_name:string" });
     TestFileWriter file_writer = new TestFileWriter();
     IHumpbackCommand target = new Generator(configuration, Settings, file_writer);
     target.Execute();
     Assert.True(file_writer.FileName.Contains("Users"));
     Assert.True(file_writer.FileName.Contains("ChangeColumn"));
     Assert.True(file_writer.FileContents.Contains("change_column"));
     Assert.True(file_writer.FileContents.Contains("up"));
     Assert.True(file_writer.FileContents.Contains("first_name"));
     Assert.True(file_writer.FileContents.Contains("down"));
 }
예제 #19
0
 public void SqlFormatterDropIndexTest()
 {
     Configuration configuration = new Configuration(new[] { "-s", "7" });
     TestFileWriter file_writer = new TestFileWriter();
     ISqlFormatter formatter = new SQLServerFormatter(configuration, Settings);
     IMigrationProvider migrations = new TestMigrationProvider();
     IHumpbackCommand target = new GenerateSQL(configuration, Settings, formatter, file_writer, migrations);
     migrations.SetMigrationNumber(6); // add index
     target.Execute();
     Console.WriteLine(file_writer.FileContents);
     Assert.True(file_writer.FileName.Contains("7"));
     Assert.True(file_writer.FileContents.Contains("DROP INDEX [categories].[IX_categories_title_slug]"));
 }