@ -1,52 +1,67 @@
using EFLol ;
using EFLol ;
using Microsoft.Data.Sqlite ;
using Microsoft.Data.Sqlite ;
using Microsoft.EntityFrameworkCore ;
using Microsoft.EntityFrameworkCore ;
namespace TestUnitaire
namespace TestUnitaire
{
{
public class TestEfLol
public class TestEfLol
{
{
[Theory]
[Theory]
[InlineData("zeus","dieu")]
[InlineData("Zeus", "Dieu de la foudre", true)]
[InlineData("zeus", "dieu")]
[InlineData("Hades", "Dieu des enfers", true)]
[InlineData("zeus", "dieu")]
[InlineData("Aphrodite", "Déesse de l'amour", true)]
public async Task TestAddInMemory ( String name , String bio )
[ InlineData ( "AresAresAresAresAresAresAresAresAresAres" ,
{
"Dieu de la guerreDieu de la guerreDieu de la guerreDieu de la guerreDieu de la guerreDieu de la guerreDieu de la guerreDieu de la guerreDieu de la guerreDieu de la guerre" +
// Arrange
"Dieu de la guerreDieu de la guerreDieu de la guerreDieu de la guerreDieu de la guerreDieu de la guerreDieu de la guerreDieu de la guerreDieu de la guerreDieu de la guerre" +
var connection = new SqliteConnection ( "DataSource=:memory:" ) ;
"Dieu de la guerreDieu de la guerreDieu de la guerreDieu de la guerreDieu de la guerreDieu de la guerreDieu de la guerreDieu de la guerreDieu de la guerreDieu de la guerre" , false ) ]
connection . Open ( ) ;
public async Task TestAddInMemory ( String name , String bio , bool expected )
{
var options = new DbContextOptionsBuilder < ChampionContext > ( )
var connection = new SqliteConnection ( "DataSource=:memory:" ) ;
. UseSqlite ( connection )
connection . Open ( ) ;
. Options ;
var options = new DbContextOptionsBuilder < ChampionContext > ( )
// Act
. UseSqlite ( connection )
using ( var context = new ChampionContext ( options ) )
. Options ;
{
await context . Database . EnsureCreatedAsync ( ) ;
using ( var context = new ChampionContext ( options ) )
var Dieu = new ChampionEntity
{
{
await context . Database . EnsureCreatedAsync ( ) ;
Name = name ,
var Dieu = new ChampionEntity
Bio = bio
{
} ;
Name = name ,
Bio = bio
ChampionEntity found = await context . Champions . SingleOrDefaultAsync ( c = > c . Name = = "Zeus" ) ;
} ;
Assert . Null ( found ) ;
ChampionEntity found = await context . Champions . SingleOrDefaultAsync ( c = > c . Name = = "Zeus" ) ;
await context . Champions . AddAsync ( Dieu ) ;
Assert . Null ( found ) ;
await context . SaveChangesAsync ( ) ;
await context . Champions . AddAsync ( Dieu ) ;
found = await context . Champions . SingleOrDefaultAsync ( c = > c . Name = = name ) ;
await context . SaveChangesAsync ( ) ;
Assert . NotNull ( found ) ;
found = await context . Champions . SingleOrDefaultAsync ( c = > c . Name = = name ) ;
Assert . Equal ( 1 , await context . Champions . CountAsync ( ) ) ;
Assert . NotNull ( found ) ;
Assert . Equal ( name , found . Name ) ;
}
Assert . Equal ( 1 , await context . Champions . CountAsync ( ) ) ;
}
Assert . Equal ( name , found . Name ) ;
[Fact]
// Test if the max length of the name is respected (30) and the max length of the bio is respected (256)
if ( expected )
{
Assert . True ( found . Name . Length < = 30 ) ;
Assert . True ( found . Bio . Length < = 256 ) ;
}
else
{
Assert . False ( found . Bio . Length < = 256 ) ;
Assert . False ( found . Name . Length < = 30 ) ;
}
}
}
[Fact]
public void ModifyTestInMemory ( )
public void ModifyTestInMemory ( )
{ //connection must be opened to use In-memory database
{
var connection = new SqliteConnection ( "DataSource=:memory:" ) ;
var connection = new SqliteConnection ( "DataSource=:memory:" ) ;
connection . Open ( ) ;
connection . Open ( ) ;
@ -96,9 +111,5 @@ namespace TestUnitaire
Assert . Equal ( 1 , context . Champions . Where ( n = > n . Name . ToLower ( ) . Contains ( nameToFind ) ) . Count ( ) ) ;
Assert . Equal ( 1 , context . Champions . Where ( n = > n . Name . ToLower ( ) . Contains ( nameToFind ) ) . Count ( ) ) ;
}
}
}
}
}
}
}
}