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");
}
}
}