-
Notifications
You must be signed in to change notification settings - Fork 3
/
WhenValidatingSchemaGivenIncorrectColumnNullability.cs
94 lines (83 loc) · 5.1 KB
/
WhenValidatingSchemaGivenIncorrectColumnNullability.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
using System;
using Aranasoft.Cobweb.EntityFrameworkCore.Validation.Tests.Support.Migrations;
using Aranasoft.Cobweb.EntityFrameworkCore.Validation.Tests.Support.Sqlite;
using FluentAssertions;
using Xunit;
namespace Aranasoft.Cobweb.EntityFrameworkCore.Validation.Tests.Sqlite {
public class WhenValidatingSchemaGivenIncorrectColumnNullability : IClassFixture<SqliteMigrationsFixture<MigrationsWithIncorrectColumnNullability>> {
private readonly SqliteMigrationsFixture<MigrationsWithIncorrectColumnNullability> _fixture;
public WhenValidatingSchemaGivenIncorrectColumnNullability(SqliteMigrationsFixture<MigrationsWithIncorrectColumnNullability> fixture) {
_fixture = fixture;
}
[Fact]
public void ItShouldThrowValidationException() {
var context = _fixture.GetContext();
Action validatingSchema = () => context.ValidateSchema(new SchemaValidationOptions {ValidateForeignKeys = false});
validatingSchema.Should().ThrowExactly<SchemaValidationException>();
}
[Fact]
public void ItShouldHaveValidationErrors() {
var context = _fixture.GetContext();
Action validatingSchema = () => context.ValidateSchema(new SchemaValidationOptions {ValidateForeignKeys = false});
validatingSchema.Should().Throw<SchemaValidationException>()
.Which.ValidationErrors
.Should().NotBeEmpty();
}
[Fact]
public void ItShouldNotHaveMissingTableErrors() {
var context = _fixture.GetContext();
Action validatingSchema = () => context.ValidateSchema(new SchemaValidationOptions {ValidateForeignKeys = false});
validatingSchema.Should().Throw<SchemaValidationException>()
.Which.ValidationErrors
.Should().NotContain(error => error.StartsWith("Missing Table", StringComparison.InvariantCultureIgnoreCase));
}
[Fact]
public void ItShouldNotHaveMissingViewErrors() {
var context = _fixture.GetContext();
Action validatingSchema = () => context.ValidateSchema(new SchemaValidationOptions {ValidateForeignKeys = false});
validatingSchema.Should().Throw<SchemaValidationException>()
.Which.ValidationErrors
.Should().NotContain(error => error.StartsWith("Missing View", StringComparison.InvariantCultureIgnoreCase));
}
[Fact]
public void ItShouldNotHaveMissingColumnErrors() {
var context = _fixture.GetContext();
Action validatingSchema = () => context.ValidateSchema(new SchemaValidationOptions {ValidateForeignKeys = false});
validatingSchema.Should().Throw<SchemaValidationException>()
.Which.ValidationErrors
.Should().NotContain(error => error.StartsWith("Missing Column", StringComparison.InvariantCultureIgnoreCase));
}
[Fact]
public void ItShouldNotHaveColumnTypeMismatchErrors() {
var context = _fixture.GetContext();
Action validatingSchema = () => context.ValidateSchema(new SchemaValidationOptions {ValidateForeignKeys = false});
validatingSchema.Should().Throw<SchemaValidationException>()
.Which.ValidationErrors
.Should().NotContain(error => error.StartsWith("Column type mismatch", StringComparison.InvariantCultureIgnoreCase));
}
[Fact]
public void ItShouldOnlyHaveColumnNullabilityMismatchErrors() {
var context = _fixture.GetContext();
Action validatingSchema = () => context.ValidateSchema(new SchemaValidationOptions {ValidateForeignKeys = false});
validatingSchema.Should().Throw<SchemaValidationException>()
.Which.ValidationErrors
.Should().OnlyContain(error => error.StartsWith("Column nullability mismatch", StringComparison.InvariantCultureIgnoreCase));
}
[Fact]
public void ItShouldNotHaveMissingIndexErrors() {
var context = _fixture.GetContext();
Action validatingSchema = () => context.ValidateSchema(new SchemaValidationOptions {ValidateForeignKeys = false});
validatingSchema.Should().Throw<SchemaValidationException>()
.Which.ValidationErrors
.Should().NotContain(error => error.StartsWith("Missing Index", StringComparison.InvariantCultureIgnoreCase));
}
[Fact]
public void ItShouldNotHaveMissingForeignKeyErrors() {
var context = _fixture.GetContext();
Action validatingSchema = () => context.ValidateSchema(new SchemaValidationOptions {ValidateForeignKeys = false});
validatingSchema.Should().Throw<SchemaValidationException>()
.Which.ValidationErrors
.Should().NotContain(error => error.StartsWith("Missing Foreign Key", StringComparison.InvariantCultureIgnoreCase));
}
}
}