Skip to content
Snippets Groups Projects
Commit 5e1dedac authored by Lukáš Daubner's avatar Lukáš Daubner :radioactive:
Browse files

Fixed empty database behavior

parent 8fa7f334
No related branches found
No related tags found
No related merge requests found
Pipeline #121909 passed
using System;
using Microsoft.EntityFrameworkCore;
using Demo.DockerDeployment.Server.Entities;
using System.Threading.Tasks;
namespace Demo.DockerDeployment.Server.Tests
{
......@@ -11,14 +12,10 @@ namespace Demo.DockerDeployment.Server.Tests
Database.EnsureCreated();
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
public override void Dispose()
{
modelBuilder.Entity<WeatherForecast>().HasData(
new WeatherForecast { Id = 1, Date = new DateTime(1234, 1, 1), TemperatureC = 0, Summary = "Bla" },
new WeatherForecast { Id = 2, Date = new DateTime(1234, 1, 2), TemperatureC = 0, Summary = "Blu" },
new WeatherForecast { Id = 3, Date = new DateTime(1234, 1, 3), TemperatureC = 0, Summary = "Bli" },
new WeatherForecast { Id = 4, Date = new DateTime(1234, 1, 4), TemperatureC = 0, Summary = "Ble" },
new WeatherForecast { Id = 5, Date = new DateTime(1234, 1, 5), TemperatureC = 0, Summary = "Blo" });
Database.EnsureDeleted();
base.Dispose();
}
}
}
......@@ -5,6 +5,7 @@ using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using System.Linq;
using System;
namespace Demo.DockerDeployment.Server.Tests
{
......@@ -15,21 +16,46 @@ namespace Demo.DockerDeployment.Server.Tests
public WeatherForecastControllerTests()
{
_mockFactory = new Mock<IDbContextFactory<WeatherDbContext>>();
_nullLogger = new NullLoggerFactory().CreateLogger<WeatherForecastController>();
}
[Fact]
public void Get_DatabaseConnected_DataReturned()
{
_mockFactory.Setup(x => x.CreateDbContext())
.Returns(new TestDbContext(new DbContextOptionsBuilder<WeatherDbContext>()
.UseInMemoryDatabase("TestDb").Options));
InitializeDb(_mockFactory.Object);
var contoller = new WeatherForecastController(_mockFactory.Object, _nullLogger);
_nullLogger = new NullLoggerFactory().CreateLogger<WeatherForecastController>();
var actual = contoller.Get();
Assert.True(actual.Count() == 5);
}
[Fact]
public void Get_DatabaseConnected_DataReturned()
public void Get_EmptyDatabase_EmptyArrayReturned()
{
_mockFactory.Setup(x => x.CreateDbContext())
.Returns(new TestDbContext(new DbContextOptionsBuilder<WeatherDbContext>()
.UseInMemoryDatabase("TestDb").Options));
var contoller = new WeatherForecastController(_mockFactory.Object, _nullLogger);
var actual = contoller.Get();
Assert.True(actual.Count() == 5);
Assert.Empty(actual);
}
private void InitializeDb(IDbContextFactory<WeatherDbContext> dbContextFactory)
{
var context = dbContextFactory.CreateDbContext();
context.AddRange(
new Entities.WeatherForecast { Id = 1, Date = new DateTime(1234, 1, 1), TemperatureC = 0, Summary = "Bla" },
new Entities.WeatherForecast { Id = 2, Date = new DateTime(1234, 1, 2), TemperatureC = 0, Summary = "Blu" },
new Entities.WeatherForecast { Id = 3, Date = new DateTime(1234, 1, 3), TemperatureC = 0, Summary = "Bli" },
new Entities.WeatherForecast { Id = 4, Date = new DateTime(1234, 1, 4), TemperatureC = 0, Summary = "Ble" },
new Entities.WeatherForecast { Id = 5, Date = new DateTime(1234, 1, 5), TemperatureC = 0, Summary = "Blo" });
context.SaveChanges();
}
}
}
\ No newline at end of file
......@@ -24,7 +24,7 @@ namespace Demo.DockerDeployment.Server.Controllers
IEnumerable<Entities.WeatherForecast> entities;
using (var context = _contextFactory.CreateDbContext())
{
entities = context.WeatherForecasts?.Take(5).ToArray() ?? new Entities.WeatherForecast[];
entities = context.WeatherForecasts?.Take(5).ToArray() ?? Array.Empty<Entities.WeatherForecast>();
}
return entities.Select(e => new WeatherForecast
......
......@@ -26,10 +26,11 @@ spec:
- name: DemoDockerDeployment_Hello__Hello
value: Tere
- name: DemoDockerDeployment_Database__ConnectionString
valueFrom:
secretKeyRef:
name: pv179-deployment-demo-secret
key: connectionString
value: Data Source=147.251.253.244:1433;Initial Catalog=demo;Integrated Security=True;User Id=sa;Password=MyC0m9l&xP@ssw0rd;
# valueFrom:
# secretKeyRef:
# name: pv179-deployment-demo-secret
# key: connectionString
# SEE: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
# kubectl create secret docker-registry regcred --docker-server=registry.gitlab.ics.muni.cz:443 --docker-username=410034@mail.muni.cz --docker-password=PASS --docker-email=410034@mail.muni.cz
imagePullSecrets:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment