modification des tests
continuous-integration/drone/push Build is passing Details

API
Damien NORTIER 1 year ago
parent 75b494cc30
commit eb2e2154c9

@ -14,11 +14,12 @@ var opt = new DbContextOptionsBuilder<StubbedDbContext>()
.UseSqlite(connection) .UseSqlite(connection)
.Options; .Options;
using var context = new StubbedDbContext(); using var context = new StubbedDbContext();
context.Database.EnsureCreated();
/// <summary> /// <summary>
/// test of the 'addAnswer' method of an AnswerManager /// test of the 'addAnswer' method of an AnswerManager
/// </summary> /// </summary>
async Task TestAddAnswer() void TestAddAnswer()
{ {
var connection = new SqliteConnection("DataSource=:memory:"); var connection = new SqliteConnection("DataSource=:memory:");
@ -27,12 +28,12 @@ async Task TestAddAnswer()
var opt = new DbContextOptionsBuilder<MyDbContext>() var opt = new DbContextOptionsBuilder<MyDbContext>()
.UseSqlite(connection) .UseSqlite(connection)
.Options; .Options;
using (var dbContext = new MyDbContext(opt)) using (var context = new MyDbContext(opt))
{ {
await dbContext.Database.EnsureCreatedAsync(); context.Database.EnsureCreated();
var manager = new AnswerEntityManager(dbContext); var manager = new AnswerEntityManager(context);
var answerToAdd = new AnswerEntity { Id = 1, Content = "chateîgne" }; var answerToAdd = new AnswerEntity { Id = 1, Content = "chateîgne" };
var a = await manager.addAnswer(answerToAdd); var a = manager.addAnswer(answerToAdd).Result;
// 1) normal insertion // 1) normal insertion
// WF : a is the same // WF : a is the same
// as answerToAdd // as answerToAdd
@ -50,7 +51,7 @@ async Task TestAddAnswer()
} }
answerToAdd = new AnswerEntity { Id = 5, Content = "damien" }; answerToAdd = new AnswerEntity { Id = 5, Content = "damien" };
a = await manager.addAnswer(answerToAdd); a = manager.addAnswer(answerToAdd).Result;
// 2) with a random id greater than 0 // 2) with a random id greater than 0
// WF : 'a' content is equal to the // WF : 'a' content is equal to the
// content of 'answerToAdd' // content of 'answerToAdd'
@ -70,7 +71,7 @@ async Task TestAddAnswer()
} }
answerToAdd = new AnswerEntity { Id = 7, Content = "chateîgne" }; answerToAdd = new AnswerEntity { Id = 7, Content = "chateîgne" };
a = await manager.addAnswer(answerToAdd); a = manager.addAnswer(answerToAdd).Result;
// 3) with a content that we already have added // 3) with a content that we already have added
// WF : the function return the answer which already // WF : the function return the answer which already
// have the same content so the content of 'a' is "châteigne" // have the same content so the content of 'a' is "châteigne"
@ -89,7 +90,7 @@ async Task TestAddAnswer()
} }
answerToAdd = new AnswerEntity { Id = 7, Content = "CHATEÎGNE" }; answerToAdd = new AnswerEntity { Id = 7, Content = "CHATEÎGNE" };
a = await manager.addAnswer(answerToAdd); a = manager.addAnswer(answerToAdd).Result;
// 3) with a content that we already have added // 3) with a content that we already have added
// but in upperCase instead of lowerCase // but in upperCase instead of lowerCase
// WF : the function return the answer which // WF : the function return the answer which
@ -108,17 +109,17 @@ async Task TestAddAnswer()
Console.ResetColor(); Console.ResetColor();
} }
foreach (var item in context.Answers) context.Answers.Remove(item); // we remove all database answers foreach (var item in context.Answers) context.Answers.Remove(item); // we remove all database answers
await context.SaveChangesAsync(); context.SaveChanges();
} }
} }
/// <summary> /// <summary>
/// test of the 'supprimerAnswer' method of an AnswerManager /// test of the 'supprimerAnswer' method of an AnswerManager
/// </summary> /// </summary>
async Task TestRemoveAnswerById(MyDbContext context) void TestRemoveAnswerById(MyDbContext context)
{ {
var mgr = new AnswerEntityManager(context); var mgr = new AnswerEntityManager(context);
var a = await mgr.removeAnswer(context.Answers.Select(a => a.Id).Max() + 1); var a = mgr.removeAnswer(context.Answers.Select(a => a.Id).Max() + 1).Result;
// 1) with an id greater or equal // 1) with an id greater or equal
// to the number of element // to the number of element
// WF : it don't works so 'a' is null, // WF : it don't works so 'a' is null,
@ -135,12 +136,12 @@ async Task TestRemoveAnswerById(MyDbContext context)
Console.ResetColor(); Console.ResetColor();
} }
a = await mgr.removeAnswer(context.Answers.Select(a => a.Id).Min()); a = mgr.removeAnswer(context.Answers.Select(a => a.Id).Min()).Result;
// 1) with an id that is allowed to an answer // 1) with an id that is allowed to an answer
// WF : it works so 'a' is not null, // WF : it works so 'a' is not null,
// and since we've delete the answer with // and since we've delete the answer with
// the id 1, the content is "châteigne" // the id 1, the content is "châteigne"
if (a.Content == context.Answers.Single(a => a.Id == context.Answers.Select(a => a.Id).Min()).Content if (a != null && a.Content == context.Answers.Single(a => a.Id == context.Answers.Select(a => a.Id).Min()).Content
&& a.Id == context.Answers.Select(a => a.Id).Min()) && a.Id == context.Answers.Select(a => a.Id).Min())
{ {
Console.ForegroundColor = ConsoleColor.Green; Console.ForegroundColor = ConsoleColor.Green;
@ -158,26 +159,26 @@ async Task TestRemoveAnswerById(MyDbContext context)
/// <summary> /// <summary>
/// test of the 'getNbElement' method of an AnswerManager /// test of the 'getNbElement' method of an AnswerManager
/// </summary> /// </summary>
async Task TestGetNbAnswers(MyDbContext context) void TestGetNbAnswers(MyDbContext context)
{ {
await context.Database.EnsureCreatedAsync();
var mgr = new AnswerEntityManager(context); var mgr = new AnswerEntityManager(context);
if (mgr.getNbAnswers() != 0 || fakeAnswers.datas == null) throw new Exception("not ready"); int count = context.Answers.CountAsync().Result;
int count = 0; int nb = 0;
foreach (var answer in fakeAnswers.datas) foreach (var answer in fakeAnswers.datas)
{ {
await mgr.addAnswer(answer); var tmp = mgr.addAnswer(answer).Result;
count++; count++;
nb++;
if (mgr.getNbAnswers() == count) if (mgr.getNbAnswers() == count)
{ // ok, it's incremented { // ok, it's incremented
Console.ForegroundColor = ConsoleColor.Green; Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine($"test {count} AnswerEntityManager.addAnswer OK"); Console.WriteLine($"test {nb} AnswerEntityManager.getNbAnswers OK");
Console.ResetColor(); Console.ResetColor();
} }
else else
{ {
Console.ForegroundColor = ConsoleColor.Red; Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine($"test {count} AnswerEntityManager.addAnswer KO"); Console.WriteLine($"test {nb} AnswerEntityManager.getNbAnswers KO");
Console.ResetColor(); Console.ResetColor();
} }
} }
@ -207,12 +208,12 @@ IEnumerable<Object?[]> TestGetAnswer_Datas()
/// <param name="id">identifiant of the answer to get</param> /// <param name="id">identifiant of the answer to get</param>
/// <param name="waiting">answer expected</param> /// <param name="waiting">answer expected</param>
/// <returns>nothing but a Task</returns> /// <returns>nothing but a Task</returns>
async Task TestGetAnswer(MyDbContext context, int numTest, int id, AnswerEntity? waiting) void TestGetAnswer(MyDbContext context, int numTest, int id, AnswerEntity? waiting)
{ {
await context.Database.EnsureCreatedAsync(); context.Database.EnsureCreated();
var mgr = new AnswerEntityManager(context); var mgr = new AnswerEntityManager(context);
var tmp = await mgr.getAnswer(id + 2); var tmp = mgr.getAnswer(id + 2).Result;
if (tmp?.Content == waiting?.Content) if (tmp?.Content == waiting?.Content)
{ {
Console.ForegroundColor = ConsoleColor.Green; Console.ForegroundColor = ConsoleColor.Green;
@ -283,13 +284,13 @@ static IEnumerable<Object?[]> TestGetSomeAnswers_Datas()
/// <param name="waiting">set of answers expected</param> /// <param name="waiting">set of answers expected</param>
/// <param name="orderCriteria">the order criteria</param> /// <param name="orderCriteria">the order criteria</param>
/// <returns>nothing but a Task</returns> /// <returns>nothing but a Task</returns>
async Task TestGetSomeAnswers(MyDbContext context, int numTest, int num, int count, IEnumerable<AnswerEntity>? waiting, AnswerOrderCriteria orderCriteria = AnswerOrderCriteria.ById) void TestGetSomeAnswers(MyDbContext context, int numTest, int num, int count, IEnumerable<AnswerEntity>? waiting, AnswerOrderCriteria orderCriteria = AnswerOrderCriteria.ById)
{ {
await context.Database.EnsureCreatedAsync(); context.Database.EnsureCreated();
var mgr = new AnswerEntityManager(context); var mgr = new AnswerEntityManager(context);
var nbPages = count == 0 ? -1 : mgr.getNbAnswers() / count; var nbPages = count == 0 ? -1 : mgr.getNbAnswers() / count;
var tmp = await mgr.getAnswers(num, count, orderCriteria); var tmp = mgr.getAnswers(num, count, orderCriteria).Result;
if(tmp.nbPages == nbPages){ if(tmp.nbPages == nbPages){
Console.ForegroundColor = ConsoleColor.Green; Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine($"test {numTest} AnswerEntityManager.getSomeAnswers OK"); Console.WriteLine($"test {numTest} AnswerEntityManager.getSomeAnswers OK");
@ -330,7 +331,7 @@ async Task TestGetSomeAnswers(MyDbContext context, int numTest, int num, int cou
var nbFautes = 0; var nbFautes = 0;
for (var i = 0; i < count; i++) for (var i = 0; i < count; i++)
{ {
var e1 = waiting.ElementAt(i); var e1 = waiting!.ElementAt(i);
var e2 = tmp.answers.ElementAt(i); var e2 = tmp.answers.ElementAt(i);
if(e2.Content != e1.Content || e2.IdQuestion != e1.IdQuestion) nbFautes++; if(e2.Content != e1.Content || e2.IdQuestion != e1.IdQuestion) nbFautes++;
} }
@ -355,19 +356,21 @@ async Task TestGetSomeAnswers(MyDbContext context, int numTest, int num, int cou
Console.ResetColor(); Console.ResetColor();
} }
} }
// Tests of an answer
{ {
await TestAddAnswer(); TestAddAnswer();
await TestRemoveAnswerById(context); TestRemoveAnswerById(context);
await TestGetNbAnswers(context); TestGetNbAnswers(context);
var tmp = TestGetAnswer_Datas(); var tmp = TestGetAnswer_Datas();
for (int i = 0; i < tmp.Count(); i++) for (int i = 0; i < tmp.Count(); i++)
{ {
await TestGetAnswer(context, i, (int)tmp.ElementAt(i).ElementAt(0)!, (AnswerEntity)tmp.ElementAt(i).ElementAt(1)!); TestGetAnswer(context, i, (int)tmp.ElementAt(i).ElementAt(0)!, (AnswerEntity)tmp.ElementAt(i).ElementAt(1)!);
} }
tmp = TestGetSomeAnswers_Datas(); tmp = TestGetSomeAnswers_Datas();
for (int i = 0; i < tmp.Count(); i++) for (int i = 0; i < tmp.Count(); i++)
{ {
await TestGetSomeAnswers(context, i, (int)tmp.ElementAt(i).ElementAt(0)!, (int)tmp.ElementAt(i).ElementAt(1)!, TestGetSomeAnswers(context, i, (int)tmp.ElementAt(i).ElementAt(0)!, (int)tmp.ElementAt(i).ElementAt(1)!,
(IEnumerable<AnswerEntity>?)tmp.ElementAt(i).ElementAtOrDefault(2), (IEnumerable<AnswerEntity>?)tmp.ElementAt(i).ElementAtOrDefault(2),
(AnswerOrderCriteria)(tmp.ElementAt(i).ElementAtOrDefault(i) ?? AnswerOrderCriteria.ById) (AnswerOrderCriteria)(tmp.ElementAt(i).ElementAtOrDefault(i) ?? AnswerOrderCriteria.ById)
); );

Loading…
Cancel
Save