From 4ef25460c7d8f6395a16bf1b396d3cab650726e2 Mon Sep 17 00:00:00 2001 From: luantranminh Date: Wed, 31 Jul 2024 18:23:22 +0700 Subject: [PATCH 1/7] test: add tests for generating schema --- AtlasProvider.sln | 9 ++++ build.cake | 12 +++++ .../Atlas.Provider.Test.csproj | 36 +++++++++++++ .../Atlas.Provider.Test/GenerateSchemaTest.cs | 51 +++++++++++++++++++ test/Atlas.Provider.Test/data/mysql_default | 29 +++++++++++ .../Atlas.Provider.Test/data/postgres_default | 26 ++++++++++ test/Atlas.Provider.Test/data/sqlite_default | 24 +++++++++ .../data/sqlserver_default | 30 +++++++++++ 8 files changed, 217 insertions(+) create mode 100644 test/Atlas.Provider.Test/Atlas.Provider.Test.csproj create mode 100644 test/Atlas.Provider.Test/GenerateSchemaTest.cs create mode 100644 test/Atlas.Provider.Test/data/mysql_default create mode 100644 test/Atlas.Provider.Test/data/postgres_default create mode 100644 test/Atlas.Provider.Test/data/sqlite_default create mode 100644 test/Atlas.Provider.Test/data/sqlserver_default diff --git a/AtlasProvider.sln b/AtlasProvider.sln index af5a47f..d3f269a 100644 --- a/AtlasProvider.sln +++ b/AtlasProvider.sln @@ -9,6 +9,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Atlas.Provider.Loader", "sr EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Atlas.Provider.Core", "src\Atlas.Provider.Core\Atlas.Provider.Core.csproj", "{FAEB024F-B0AA-4B7C-A820-68E497657D0D}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{A0F935A4-52B6-4790-AA08-A86E0CB562E9}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Atlas.Provider.Test", "test\Atlas.Provider.Test\Atlas.Provider.Test.csproj", "{D34350D9-C254-4187-A908-00EA03DDE2B5}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -26,9 +30,14 @@ Global {FAEB024F-B0AA-4B7C-A820-68E497657D0D}.Debug|Any CPU.Build.0 = Debug|Any CPU {FAEB024F-B0AA-4B7C-A820-68E497657D0D}.Release|Any CPU.ActiveCfg = Release|Any CPU {FAEB024F-B0AA-4B7C-A820-68E497657D0D}.Release|Any CPU.Build.0 = Release|Any CPU + {D34350D9-C254-4187-A908-00EA03DDE2B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D34350D9-C254-4187-A908-00EA03DDE2B5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D34350D9-C254-4187-A908-00EA03DDE2B5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D34350D9-C254-4187-A908-00EA03DDE2B5}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {003BD0CC-7AF6-408C-A40D-3FE8F6C73537} = {C41D6C7A-456B-4A0B-ACE1-9931DA092288} {FAEB024F-B0AA-4B7C-A820-68E497657D0D} = {C41D6C7A-456B-4A0B-ACE1-9931DA092288} + {D34350D9-C254-4187-A908-00EA03DDE2B5} = {A0F935A4-52B6-4790-AA08-A86E0CB562E9} EndGlobalSection EndGlobal diff --git a/build.cake b/build.cake index ca8bad6..f859b2e 100644 --- a/build.cake +++ b/build.cake @@ -34,6 +34,18 @@ Task("Build") }); }); +Task("Test") + .Description("Runs unit tests") + .DoesForEach( + GetFiles("./test/**/*.csproj"), + project => + { + DotNetTest(project.ToString(),new DotNetTestSettings() + { + Configuration = configuration, + }); + }).DeferOnError(); + Task("Pack") .Description("Creates NuGet packages and outputs them to the artifacts directory.") .Does(() => diff --git a/test/Atlas.Provider.Test/Atlas.Provider.Test.csproj b/test/Atlas.Provider.Test/Atlas.Provider.Test.csproj new file mode 100644 index 0000000..fc8d1dd --- /dev/null +++ b/test/Atlas.Provider.Test/Atlas.Provider.Test.csproj @@ -0,0 +1,36 @@ + + + + Exe + net6.0 + enable + enable + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + + + + + + + + + + PreserveNewest + + + + \ No newline at end of file diff --git a/test/Atlas.Provider.Test/GenerateSchemaTest.cs b/test/Atlas.Provider.Test/GenerateSchemaTest.cs new file mode 100644 index 0000000..7934a3a --- /dev/null +++ b/test/Atlas.Provider.Test/GenerateSchemaTest.cs @@ -0,0 +1,51 @@ +using Xunit; +using System.Diagnostics; +using System.Reflection; + + +public class GenerateSchemaTest +{ + [Theory] + [InlineData("SqlServer", "data/sqlserver_default")] + [InlineData("Postgres", "data/postgres_default")] + [InlineData("MySql", "data/mysql_default")] + [InlineData("Sqlite", "data/sqlite_default")] + public void Can_generate_script(string providerName, string expectedFile) + { + var dllFileName = Assembly.Load(new AssemblyName("Atlas.Provider.Loader")).Location; + + ProcessStartInfo startInfo = new ProcessStartInfo + { + WorkingDirectory = Path.GetFullPath("../../../../../src/Atlas.Provider.Demo"), + FileName = "dotnet", + Arguments = $"exec {dllFileName} -- {providerName}", + RedirectStandardOutput = true, + RedirectStandardError = true, + UseShellExecute = false, + CreateNoWindow = true + }; + + using (Process process = Process.Start(startInfo)) + { + string output = process.StandardOutput.ReadToEnd(); + string error = process.StandardError.ReadToEnd(); + File.WriteAllText(Path.Combine(Directory.GetCurrentDirectory(), $"{providerName}.sql"), output); + + process.WaitForExit(); + + Assert.Equal(FileReader.Read(expectedFile), output); + Assert.Equal("", error); + } + } +} +internal static class FileReader +{ + public static string Read(string filePath) + { + return File.ReadAllText( + Path.Combine( + Directory.GetCurrentDirectory(), + filePath + )); + } +} \ No newline at end of file diff --git a/test/Atlas.Provider.Test/data/mysql_default b/test/Atlas.Provider.Test/data/mysql_default new file mode 100644 index 0000000..6344571 --- /dev/null +++ b/test/Atlas.Provider.Test/data/mysql_default @@ -0,0 +1,29 @@ +ALTER DATABASE CHARACTER SET utf8mb4; + + +CREATE TABLE `Blogs` ( + `BlogId` int NOT NULL AUTO_INCREMENT, + `Url` varchar(200) CHARACTER SET utf8mb4 NOT NULL, + `Rating` decimal(5,2) NOT NULL, + `Title` longtext CHARACTER SET utf8mb4 NOT NULL, + `Content` longtext CHARACTER SET utf8mb4 NOT NULL, + `Author` varchar(200) CHARACTER SET utf8mb4 NOT NULL DEFAULT 'Anonymous', + CONSTRAINT `PK_Blogs` PRIMARY KEY (`BlogId`), + CONSTRAINT `AK_Blogs_Url` UNIQUE (`Url`) +) CHARACTER SET=utf8mb4; + + +CREATE TABLE `Post` ( + `PostId` int NOT NULL AUTO_INCREMENT, + `Title` longtext CHARACTER SET utf8mb4 NOT NULL, + `Content` longtext CHARACTER SET utf8mb4 NOT NULL, + `BlogUrl` varchar(200) CHARACTER SET utf8mb4 NOT NULL, + CONSTRAINT `PK_Post` PRIMARY KEY (`PostId`), + CONSTRAINT `FK_Post_Blogs_BlogUrl` FOREIGN KEY (`BlogUrl`) REFERENCES `Blogs` (`Url`) ON DELETE CASCADE +) CHARACTER SET=utf8mb4; + + +CREATE INDEX `IX_Post_BlogUrl` ON `Post` (`BlogUrl`); + + + diff --git a/test/Atlas.Provider.Test/data/postgres_default b/test/Atlas.Provider.Test/data/postgres_default new file mode 100644 index 0000000..6abfb7d --- /dev/null +++ b/test/Atlas.Provider.Test/data/postgres_default @@ -0,0 +1,26 @@ +CREATE TABLE "Blogs" ( + "BlogId" integer GENERATED BY DEFAULT AS IDENTITY, + "Url" varchar(200) NOT NULL, + "Rating" numeric(5,2) NOT NULL, + "Title" text NOT NULL, + "Content" text NOT NULL, + "Author" character varying(200) NOT NULL DEFAULT 'Anonymous', + CONSTRAINT "PK_Blogs" PRIMARY KEY ("BlogId"), + CONSTRAINT "AK_Blogs_Url" UNIQUE ("Url") +); + + +CREATE TABLE "Post" ( + "PostId" integer GENERATED BY DEFAULT AS IDENTITY, + "Title" text NOT NULL, + "Content" text NOT NULL, + "BlogUrl" varchar(200) NOT NULL, + CONSTRAINT "PK_Post" PRIMARY KEY ("PostId"), + CONSTRAINT "FK_Post_Blogs_BlogUrl" FOREIGN KEY ("BlogUrl") REFERENCES "Blogs" ("Url") ON DELETE CASCADE +); + + +CREATE INDEX "IX_Post_BlogUrl" ON "Post" ("BlogUrl"); + + + diff --git a/test/Atlas.Provider.Test/data/sqlite_default b/test/Atlas.Provider.Test/data/sqlite_default new file mode 100644 index 0000000..b04d0b6 --- /dev/null +++ b/test/Atlas.Provider.Test/data/sqlite_default @@ -0,0 +1,24 @@ +CREATE TABLE "Blogs" ( + "BlogId" INTEGER NOT NULL CONSTRAINT "PK_Blogs" PRIMARY KEY AUTOINCREMENT, + "Url" varchar(200) NOT NULL, + "Rating" decimal(5, 2) NOT NULL, + "Title" TEXT NOT NULL, + "Content" TEXT NOT NULL, + "Author" TEXT NOT NULL DEFAULT 'Anonymous', + CONSTRAINT "AK_Blogs_Url" UNIQUE ("Url") +); + + +CREATE TABLE "Post" ( + "PostId" INTEGER NOT NULL CONSTRAINT "PK_Post" PRIMARY KEY AUTOINCREMENT, + "Title" TEXT NOT NULL, + "Content" TEXT NOT NULL, + "BlogUrl" varchar(200) NOT NULL, + CONSTRAINT "FK_Post_Blogs_BlogUrl" FOREIGN KEY ("BlogUrl") REFERENCES "Blogs" ("Url") ON DELETE CASCADE +); + + +CREATE INDEX "IX_Post_BlogUrl" ON "Post" ("BlogUrl"); + + + diff --git a/test/Atlas.Provider.Test/data/sqlserver_default b/test/Atlas.Provider.Test/data/sqlserver_default new file mode 100644 index 0000000..deb1b8f --- /dev/null +++ b/test/Atlas.Provider.Test/data/sqlserver_default @@ -0,0 +1,30 @@ +-- atlas:delimiter GO +CREATE TABLE [Blogs] ( + [BlogId] int NOT NULL IDENTITY, + [Url] varchar(200) NOT NULL, + [Rating] decimal(5,2) NOT NULL, + [Title] nvarchar(max) NOT NULL, + [Content] nvarchar(max) NOT NULL, + [Author] nvarchar(200) NOT NULL DEFAULT N'Anonymous', + CONSTRAINT [PK_Blogs] PRIMARY KEY ([BlogId]), + CONSTRAINT [AK_Blogs_Url] UNIQUE ([Url]) +); +GO + + +CREATE TABLE [Post] ( + [PostId] int NOT NULL IDENTITY, + [Title] nvarchar(max) NOT NULL, + [Content] nvarchar(max) NOT NULL, + [BlogUrl] varchar(200) NOT NULL, + CONSTRAINT [PK_Post] PRIMARY KEY ([PostId]), + CONSTRAINT [FK_Post_Blogs_BlogUrl] FOREIGN KEY ([BlogUrl]) REFERENCES [Blogs] ([Url]) ON DELETE CASCADE +); +GO + + +CREATE INDEX [IX_Post_BlogUrl] ON [Post] ([BlogUrl]); +GO + + + From aab28039a27f2c6019bb70cd219a3917f399a6a3 Mon Sep 17 00:00:00 2001 From: luantranminh Date: Wed, 31 Jul 2024 18:26:02 +0700 Subject: [PATCH 2/7] workflows: add job test --- .github/workflows/build.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index afb8b3f..1e2cedf 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -45,6 +45,9 @@ jobs: - name: Dotnet Cake Build shell: pwsh run: dotnet cake --target=Build + - name: Dotnet Cake Test + shell: pwsh + run: dotnet cake --target=Test - name: Dotnet Cake Pack shell: pwsh run: dotnet cake --target=Pack From 4387c859c1fc276d4c2c49733f87a05fbf1b2b55 Mon Sep 17 00:00:00 2001 From: luantranminh Date: Wed, 31 Jul 2024 18:44:27 +0700 Subject: [PATCH 3/7] test: use writeline instead of concat string to add \r on windows --- src/Atlas.Provider.Core/Program.cs | 2 +- test/Atlas.Provider.Test/data/sqlserver_default | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Atlas.Provider.Core/Program.cs b/src/Atlas.Provider.Core/Program.cs index d16105a..59c2345 100644 --- a/src/Atlas.Provider.Core/Program.cs +++ b/src/Atlas.Provider.Core/Program.cs @@ -49,7 +49,7 @@ static void Main( var sql = executor.ScriptDbContext(name); if (ctxInfo["ProviderName"]!.ToString()!.EndsWith("SqlServer")) { - sql = "-- atlas:delimiter GO \n" + sql; + Console.WriteLine("-- atlas:delimiter GO"); } if (!string.IsNullOrEmpty(sql)) { diff --git a/test/Atlas.Provider.Test/data/sqlserver_default b/test/Atlas.Provider.Test/data/sqlserver_default index deb1b8f..a16ee03 100644 --- a/test/Atlas.Provider.Test/data/sqlserver_default +++ b/test/Atlas.Provider.Test/data/sqlserver_default @@ -1,4 +1,4 @@ --- atlas:delimiter GO +-- atlas:delimiter GO CREATE TABLE [Blogs] ( [BlogId] int NOT NULL IDENTITY, [Url] varchar(200) NOT NULL, From cc1ec43c84fb9ace2aefaf091e36a7bc1d0e62f7 Mon Sep 17 00:00:00 2001 From: luantranminh Date: Wed, 31 Jul 2024 18:49:18 +0700 Subject: [PATCH 4/7] src/core: prevent print out delimiter on empty file --- src/Atlas.Provider.Core/Program.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Atlas.Provider.Core/Program.cs b/src/Atlas.Provider.Core/Program.cs index 59c2345..a08cc41 100644 --- a/src/Atlas.Provider.Core/Program.cs +++ b/src/Atlas.Provider.Core/Program.cs @@ -47,12 +47,12 @@ static void Main( continue; } var sql = executor.ScriptDbContext(name); - if (ctxInfo["ProviderName"]!.ToString()!.EndsWith("SqlServer")) - { - Console.WriteLine("-- atlas:delimiter GO"); - } if (!string.IsNullOrEmpty(sql)) { + if (ctxInfo["ProviderName"]!.ToString()!.EndsWith("SqlServer")) + { + Console.WriteLine("-- atlas:delimiter GO"); + } Console.WriteLine(sql); } } From f6d5e700a0bcb32220c26996daed06950be4ca8d Mon Sep 17 00:00:00 2001 From: luantranminh Date: Wed, 31 Jul 2024 19:06:29 +0700 Subject: [PATCH 5/7] test: fix warnings --- src/Atlas.Provider.Demo/Program.cs | 10 +-- .../Atlas.Provider.Test/GenerateSchemaTest.cs | 73 +++++++++---------- 2 files changed, 40 insertions(+), 43 deletions(-) diff --git a/src/Atlas.Provider.Demo/Program.cs b/src/Atlas.Provider.Demo/Program.cs index bcc835a..b6e5371 100644 --- a/src/Atlas.Provider.Demo/Program.cs +++ b/src/Atlas.Provider.Demo/Program.cs @@ -24,7 +24,7 @@ public BloggingContext CreateDbContext(string[] args) } public class BloggingContext : DbContext { - public DbSet Blogs { get; set; } + public DbSet? Blogs { get; set; } private readonly string _provider; public BloggingContext(string provider = "SqlServer") @@ -79,14 +79,14 @@ public class Blog public int BlogId { get; set; } [Column(TypeName = "varchar(200)")] - public string Url { get; set; } + public string? Url { get; set; } [Column(TypeName = "decimal(5, 2)")] public decimal Rating { get; set; } public string Title { get; set; } = string.Empty; public string Content { get; set; } = string.Empty; public string Author { get; set; } = string.Empty; - public List Posts { get; set; } + public List? Posts { get; set; } } public class Post @@ -95,7 +95,7 @@ public class Post public int PostId { get; set; } public string Title { get; set; } = string.Empty; public string Content { get; set; } = string.Empty; - public string BlogUrl { get; set; } - public Blog Blog { get; set; } + public string? BlogUrl { get; set; } + public Blog? Blog { get; set; } } } \ No newline at end of file diff --git a/test/Atlas.Provider.Test/GenerateSchemaTest.cs b/test/Atlas.Provider.Test/GenerateSchemaTest.cs index 7934a3a..9ece262 100644 --- a/test/Atlas.Provider.Test/GenerateSchemaTest.cs +++ b/test/Atlas.Provider.Test/GenerateSchemaTest.cs @@ -5,47 +5,44 @@ public class GenerateSchemaTest { - [Theory] - [InlineData("SqlServer", "data/sqlserver_default")] - [InlineData("Postgres", "data/postgres_default")] - [InlineData("MySql", "data/mysql_default")] - [InlineData("Sqlite", "data/sqlite_default")] - public void Can_generate_script(string providerName, string expectedFile) - { - var dllFileName = Assembly.Load(new AssemblyName("Atlas.Provider.Loader")).Location; - - ProcessStartInfo startInfo = new ProcessStartInfo - { - WorkingDirectory = Path.GetFullPath("../../../../../src/Atlas.Provider.Demo"), - FileName = "dotnet", - Arguments = $"exec {dllFileName} -- {providerName}", - RedirectStandardOutput = true, - RedirectStandardError = true, - UseShellExecute = false, - CreateNoWindow = true - }; - - using (Process process = Process.Start(startInfo)) - { - string output = process.StandardOutput.ReadToEnd(); - string error = process.StandardError.ReadToEnd(); - File.WriteAllText(Path.Combine(Directory.GetCurrentDirectory(), $"{providerName}.sql"), output); + [Theory] + [InlineData("SqlServer", "data/sqlserver_default")] + [InlineData("Postgres", "data/postgres_default")] + [InlineData("MySql", "data/mysql_default")] + [InlineData("Sqlite", "data/sqlite_default")] + public void Can_generate_script(string providerName, string expectedFile) + { + var dllFileName = Assembly.Load(new AssemblyName("Atlas.Provider.Loader")).Location; - process.WaitForExit(); + ProcessStartInfo startInfo = new ProcessStartInfo + { + WorkingDirectory = Path.GetFullPath("../../../../../src/Atlas.Provider.Demo"), + FileName = "dotnet", + Arguments = $"exec {dllFileName} -- {providerName}", + RedirectStandardOutput = true, + RedirectStandardError = true, + UseShellExecute = false, + CreateNoWindow = true + }; - Assert.Equal(FileReader.Read(expectedFile), output); - Assert.Equal("", error); - } - } + using Process? process = Process.Start(startInfo); + Assert.NotNull(process); + string output = process.StandardOutput.ReadToEnd(); + string error = process.StandardError.ReadToEnd(); + File.WriteAllText(Path.Combine(Directory.GetCurrentDirectory(), $"{providerName}.sql"), output); + process.WaitForExit(); + Assert.Equal(FileReader.Read(expectedFile), output); + Assert.Equal("", error); + } } internal static class FileReader { - public static string Read(string filePath) - { - return File.ReadAllText( - Path.Combine( - Directory.GetCurrentDirectory(), - filePath - )); - } + public static string Read(string filePath) + { + return File.ReadAllText( + Path.Combine( + Directory.GetCurrentDirectory(), + filePath + )); + } } \ No newline at end of file From 2997b6ba6bf69511e451d5671d32a0875f03b7a1 Mon Sep 17 00:00:00 2001 From: Tran Minh Luan Date: Wed, 31 Jul 2024 19:08:03 +0700 Subject: [PATCH 6/7] build: update build.cake Co-authored-by: Giau. Tran Minh <12751435+giautm@users.noreply.github.com> --- build.cake | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/build.cake b/build.cake index f859b2e..b60f2ef 100644 --- a/build.cake +++ b/build.cake @@ -35,16 +35,16 @@ Task("Build") }); Task("Test") - .Description("Runs unit tests") - .DoesForEach( - GetFiles("./test/**/*.csproj"), - project => + .Description("Runs unit tests") + .DoesForEach( + GetFiles("./test/**/*.csproj"), + project => + { + DotNetTest(project.ToString(),new DotNetTestSettings() { - DotNetTest(project.ToString(),new DotNetTestSettings() - { - Configuration = configuration, - }); - }).DeferOnError(); + Configuration = configuration, + }); + }).DeferOnError(); Task("Pack") .Description("Creates NuGet packages and outputs them to the artifacts directory.") From 1c41cbe14e4b93dc3407d2e21f07361e0760636b Mon Sep 17 00:00:00 2001 From: luantranminh Date: Wed, 31 Jul 2024 19:19:24 +0700 Subject: [PATCH 7/7] test: remove non null column --- src/Atlas.Provider.Demo/Program.cs | 2 +- test/Atlas.Provider.Test/GenerateSchemaTest.cs | 2 -- test/Atlas.Provider.Test/data/mysql_default | 4 ++-- test/Atlas.Provider.Test/data/postgres_default | 4 ++-- test/Atlas.Provider.Test/data/sqlite_default | 4 ++-- test/Atlas.Provider.Test/data/sqlserver_default | 4 ++-- 6 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/Atlas.Provider.Demo/Program.cs b/src/Atlas.Provider.Demo/Program.cs index b6e5371..ea763ff 100644 --- a/src/Atlas.Provider.Demo/Program.cs +++ b/src/Atlas.Provider.Demo/Program.cs @@ -19,7 +19,7 @@ public BloggingContext CreateDbContext(string[] args) { var provider = args.FirstOrDefault(); - return new BloggingContext(provider); + return new BloggingContext(provider!); } } public class BloggingContext : DbContext diff --git a/test/Atlas.Provider.Test/GenerateSchemaTest.cs b/test/Atlas.Provider.Test/GenerateSchemaTest.cs index 9ece262..88bd8a8 100644 --- a/test/Atlas.Provider.Test/GenerateSchemaTest.cs +++ b/test/Atlas.Provider.Test/GenerateSchemaTest.cs @@ -2,7 +2,6 @@ using System.Diagnostics; using System.Reflection; - public class GenerateSchemaTest { [Theory] @@ -29,7 +28,6 @@ public void Can_generate_script(string providerName, string expectedFile) Assert.NotNull(process); string output = process.StandardOutput.ReadToEnd(); string error = process.StandardError.ReadToEnd(); - File.WriteAllText(Path.Combine(Directory.GetCurrentDirectory(), $"{providerName}.sql"), output); process.WaitForExit(); Assert.Equal(FileReader.Read(expectedFile), output); Assert.Equal("", error); diff --git a/test/Atlas.Provider.Test/data/mysql_default b/test/Atlas.Provider.Test/data/mysql_default index 6344571..2816e20 100644 --- a/test/Atlas.Provider.Test/data/mysql_default +++ b/test/Atlas.Provider.Test/data/mysql_default @@ -17,9 +17,9 @@ CREATE TABLE `Post` ( `PostId` int NOT NULL AUTO_INCREMENT, `Title` longtext CHARACTER SET utf8mb4 NOT NULL, `Content` longtext CHARACTER SET utf8mb4 NOT NULL, - `BlogUrl` varchar(200) CHARACTER SET utf8mb4 NOT NULL, + `BlogUrl` varchar(200) CHARACTER SET utf8mb4 NULL, CONSTRAINT `PK_Post` PRIMARY KEY (`PostId`), - CONSTRAINT `FK_Post_Blogs_BlogUrl` FOREIGN KEY (`BlogUrl`) REFERENCES `Blogs` (`Url`) ON DELETE CASCADE + CONSTRAINT `FK_Post_Blogs_BlogUrl` FOREIGN KEY (`BlogUrl`) REFERENCES `Blogs` (`Url`) ) CHARACTER SET=utf8mb4; diff --git a/test/Atlas.Provider.Test/data/postgres_default b/test/Atlas.Provider.Test/data/postgres_default index 6abfb7d..c3b2c78 100644 --- a/test/Atlas.Provider.Test/data/postgres_default +++ b/test/Atlas.Provider.Test/data/postgres_default @@ -14,9 +14,9 @@ CREATE TABLE "Post" ( "PostId" integer GENERATED BY DEFAULT AS IDENTITY, "Title" text NOT NULL, "Content" text NOT NULL, - "BlogUrl" varchar(200) NOT NULL, + "BlogUrl" varchar(200) NULL, CONSTRAINT "PK_Post" PRIMARY KEY ("PostId"), - CONSTRAINT "FK_Post_Blogs_BlogUrl" FOREIGN KEY ("BlogUrl") REFERENCES "Blogs" ("Url") ON DELETE CASCADE + CONSTRAINT "FK_Post_Blogs_BlogUrl" FOREIGN KEY ("BlogUrl") REFERENCES "Blogs" ("Url") ); diff --git a/test/Atlas.Provider.Test/data/sqlite_default b/test/Atlas.Provider.Test/data/sqlite_default index b04d0b6..bb1e825 100644 --- a/test/Atlas.Provider.Test/data/sqlite_default +++ b/test/Atlas.Provider.Test/data/sqlite_default @@ -13,8 +13,8 @@ CREATE TABLE "Post" ( "PostId" INTEGER NOT NULL CONSTRAINT "PK_Post" PRIMARY KEY AUTOINCREMENT, "Title" TEXT NOT NULL, "Content" TEXT NOT NULL, - "BlogUrl" varchar(200) NOT NULL, - CONSTRAINT "FK_Post_Blogs_BlogUrl" FOREIGN KEY ("BlogUrl") REFERENCES "Blogs" ("Url") ON DELETE CASCADE + "BlogUrl" varchar(200) NULL, + CONSTRAINT "FK_Post_Blogs_BlogUrl" FOREIGN KEY ("BlogUrl") REFERENCES "Blogs" ("Url") ); diff --git a/test/Atlas.Provider.Test/data/sqlserver_default b/test/Atlas.Provider.Test/data/sqlserver_default index a16ee03..1bb5718 100644 --- a/test/Atlas.Provider.Test/data/sqlserver_default +++ b/test/Atlas.Provider.Test/data/sqlserver_default @@ -16,9 +16,9 @@ CREATE TABLE [Post] ( [PostId] int NOT NULL IDENTITY, [Title] nvarchar(max) NOT NULL, [Content] nvarchar(max) NOT NULL, - [BlogUrl] varchar(200) NOT NULL, + [BlogUrl] varchar(200) NULL, CONSTRAINT [PK_Post] PRIMARY KEY ([PostId]), - CONSTRAINT [FK_Post_Blogs_BlogUrl] FOREIGN KEY ([BlogUrl]) REFERENCES [Blogs] ([Url]) ON DELETE CASCADE + CONSTRAINT [FK_Post_Blogs_BlogUrl] FOREIGN KEY ([BlogUrl]) REFERENCES [Blogs] ([Url]) ); GO