From abb1149aece362af8621f47edfd336d702658bf1 Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Tue, 30 Apr 2019 06:57:45 -0500 Subject: [PATCH] data int test wip --- docker-compose.prod.yml | 2 ++ docker-compose.tests.data.yml | 23 +++++++++++++++++++ docker-compose.yml | 4 ++++ src/FilterLists.Api/Dockerfile | 4 +++- .../FilterLists.Data.Tests.csproj | 1 + .../SeedFilterListsDbContextTests.cs | 20 +++++----------- 6 files changed, 39 insertions(+), 15 deletions(-) create mode 100644 docker-compose.tests.data.yml diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index cf45102ac..f51c3c989 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -1,3 +1,5 @@ +# For running pre-build instances of all modules from Hub + version: "3.7" services: diff --git a/docker-compose.tests.data.yml b/docker-compose.tests.data.yml new file mode 100644 index 000000000..5f57ed4ab --- /dev/null +++ b/docker-compose.tests.data.yml @@ -0,0 +1,23 @@ +# For running data integration tests in FilterLists.Data.Tests + +version: "3.7" + +services: + api: + build: + context: . + dockerfile: src/FilterLists.Api/Dockerfile + target: test-data + depends_on: + - mariadb + + mariadb: + image: mariadb:10 + environment: + MYSQL_ROOT_PASSWORD: filterlists + command: + [ + "mysqld", + "--character-set-server=utf8mb4", + "--collation-server=utf8mb4_unicode_520_ci" + ] diff --git a/docker-compose.yml b/docker-compose.yml index 6e8a20cfb..604f69574 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,3 +1,5 @@ +# For building and running all modules + version: "3.7" services: @@ -17,6 +19,7 @@ services: build: context: . dockerfile: src/FilterLists.Web/Dockerfile + target: final networks: - reverse-proxy depends_on: @@ -28,6 +31,7 @@ services: build: context: . dockerfile: src/FilterLists.Api/Dockerfile + target: final networks: - reverse-proxy - api diff --git a/src/FilterLists.Api/Dockerfile b/src/FilterLists.Api/Dockerfile index 6dd3ed03e..2c939d97a 100644 --- a/src/FilterLists.Api/Dockerfile +++ b/src/FilterLists.Api/Dockerfile @@ -25,7 +25,8 @@ COPY src/FilterLists.Data/. ./FilterLists.Data/ COPY src/FilterLists.Services/. ./FilterLists.Services/ WORKDIR /src/FilterLists.Api/ COPY src/FilterLists.Api/. ./ -RUN dotnet publish -c Release -o out --no-restore +RUN dotnet build -c Release --no-restore +RUN dotnet publish -c Release -o out --no-restore --no-build # build data tests FROM build AS test-data @@ -34,6 +35,7 @@ COPY tests/FilterLists.Data.Tests/FilterLists.Data.Tests.csproj ./ RUN dotnet restore COPY tests/FilterLists.Data.Tests/. ./ RUN dotnet build -c Release --no-restore +COPY data/. ./data/ ENTRYPOINT ["dotnet", "test"] # build services tests diff --git a/tests/FilterLists.Data.Tests/FilterLists.Data.Tests.csproj b/tests/FilterLists.Data.Tests/FilterLists.Data.Tests.csproj index 8d8e6a229..a35662227 100644 --- a/tests/FilterLists.Data.Tests/FilterLists.Data.Tests.csproj +++ b/tests/FilterLists.Data.Tests/FilterLists.Data.Tests.csproj @@ -38,6 +38,7 @@ + diff --git a/tests/FilterLists.Data.Tests/SeedFilterListsDbContextTests.cs b/tests/FilterLists.Data.Tests/SeedFilterListsDbContextTests.cs index a90b1b4a6..9c9050d71 100644 --- a/tests/FilterLists.Data.Tests/SeedFilterListsDbContextTests.cs +++ b/tests/FilterLists.Data.Tests/SeedFilterListsDbContextTests.cs @@ -1,3 +1,4 @@ +using System; using System.IO; using FilterLists.Data.Seed.Extensions; using Microsoft.EntityFrameworkCore; @@ -8,35 +9,26 @@ namespace FilterLists.Data.Tests { public class SeedFilterListsDbContextTests { - private const string CiTestServerConnString = "Server=localhost;Uid=travis;"; - private const string CiTestDatabaseConnString = CiTestServerConnString + "Database=filterlistsdatatest;"; - - /// - /// requires "CREATE USER 'travis'@'localhost';" on non-Travis mysql instance - /// [Fact] public async void SeedOrUpdateAsync_DoesNotThrowException() { + var connString = "Server=mariadb;Database=filterlists;Uid=root;Pwd=filterlists;"; var options = new DbContextOptionsBuilder() - .UseMySql(CiTestDatabaseConnString, m => m.MigrationsAssembly("FilterLists.Api")) + .UseMySql(connString, m => m.MigrationsAssembly("FilterLists.Api")) .Options; using (var context = new FilterListsDbContext(options)) { - await context.Database.EnsureDeletedAsync(); - using (var conn = new MySqlConnection(CiTestServerConnString)) + using (var conn = new MySqlConnection(connString)) { await conn.OpenAsync(); var cmd = new MySqlCommand( - "CREATE DATABASE filterlistsdatatest CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;", + "CREATE DATABASE filterlists CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;", conn); await cmd.ExecuteNonQueryAsync(); } await context.Database.MigrateAsync(); - if (Directory.Exists("../../../../../data")) - await SeedFilterListsDbContext.SeedOrUpdateAsync(context, "../../../../../data"); - else - await SeedFilterListsDbContext.SeedOrUpdateAsync(context, "../../../../../../../../data"); + await SeedFilterListsDbContext.SeedOrUpdateAsync(context, "../../../data"); } } }