data int test wip

This commit is contained in:
Collin M. Barrett 2019-04-30 06:57:45 -05:00
parent b74dcdd956
commit abb1149aec
6 changed files with 39 additions and 15 deletions

View file

@ -1,3 +1,5 @@
# For running pre-build instances of all modules from Hub
version: "3.7"
services:

View file

@ -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"
]

View file

@ -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

View file

@ -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

View file

@ -38,6 +38,7 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\FilterLists.Api\FilterLists.Api.csproj" />
<ProjectReference Include="..\..\src\FilterLists.Data\FilterLists.Data.csproj" />
</ItemGroup>

View file

@ -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;";
/// <summary>
/// requires "CREATE USER 'travis'@'localhost';" on non-Travis mysql instance
/// </summary>
[Fact]
public async void SeedOrUpdateAsync_DoesNotThrowException()
{
var connString = "Server=mariadb;Database=filterlists;Uid=root;Pwd=filterlists;";
var options = new DbContextOptionsBuilder<FilterListsDbContext>()
.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");
}
}
}