Merge branch 'master' of https://codefirst.iut.uca.fr/git/corentin.richard/EntityFramework_ConsoDeServices_TP
continuous-integration/drone/push Build is failing Details

pull/21/head
Pierre Ferreira 2 years ago
commit f8fa13a661

@ -2,8 +2,12 @@ using API_LoL.Controllers;
using DTO;
using FluentAssertions;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore.Query;
using Model;
using StubLib;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
namespace Api_UT
{
@ -34,7 +38,7 @@ namespace Api_UT
IActionResult a = await api.Post(new ChampionDTO("nom","bio","icon"));
Assert.IsNotNull(a);
ChampionDTO champ = new ChampionDTO("nom", "bio", "icon");
//Assert.AreEqual<ChampionDTO>(champ,((CreatedAtActionResult)a).Value);
Assert.IsTrue(champ.equals((ChampionDTO)((CreatedAtActionResult)a).Value));
}
}

@ -0,0 +1,20 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Mvc.Core" Version="2.2.5" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\DTO\DTO.csproj" />
<ProjectReference Include="..\Model\Model.csproj" />
</ItemGroup>
</Project>

@ -0,0 +1,194 @@
// See https://aka.ms/new-console-template for more information
using System.Net.Security;
using Model;
using System.Net.Http;
using System.Reflection.Metadata;
using Newtonsoft.Json;
using DTO;
using System.Text.Json;
using Microsoft.AspNetCore.Mvc;
using System.Net.Http.Json;
class APIResponse
{
public string status { get; set; }
public List<string> champions { get; set; }
}
static class Program
{
static HttpClient client = new HttpClient();
static async Task Main(string[] args) {
HttpClient client = new HttpClient();
await DisplayMainMenu();
}
public static async Task DisplayMainMenu()
{
Dictionary<int, string> choices = new Dictionary<int, string>()
{
[1] = "1- Manage Champions",
[2] = "2- Manage Skins",
[3] = "3- Manage Runes",
[4] = "4- Manage Rune Pages",
[99] = "99- Quit"
};
while (true)
{
int input = DisplayAMenu(choices);
switch (input)
{
case 1:
await DisplayChampionsMenu();
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 99:
Console.WriteLine("Bye bye!");
return;
default:
break;
}
}
}
private static int DisplayAMenu(Dictionary<int, string> choices)
{
int input = -1;
while (true)
{
Console.WriteLine("What is your choice?");
Console.WriteLine("--------------------");
foreach (var choice in choices.OrderBy(kvp => kvp.Key).Select(kvp => kvp.Value))
{
Console.WriteLine(choice);
}
if (!int.TryParse(Console.ReadLine(), out input) || input == -1)
{
Console.WriteLine("I do not understand what your choice is. Please try again.");
continue;
}
break;
}
Console.WriteLine($"You have chosen: {choices[input]}");
Console.WriteLine();
return input;
}
public static async Task DisplayChampionsMenu()
{
Dictionary<int, string> choices = new Dictionary<int, string>()
{
[0] = "0- Get number of champions",
[1] = "1- Get champions",
[2] = "2- Find champions by name",
[3] = "3- Find champions by characteristic",
[4] = "4- Find champions by class",
[5] = "5- Find champions by skill",
[6] = "6- Add new champion",
[7] = "7- Delete a champion",
[8] = "8- Update a champion",
};
int input = DisplayAMenu(choices);
switch (input)
{
case 0:
case 1:
{
var response = await client.GetFromJsonAsync<Object>(
"https://localhost:7144/api/Champions");
Console.WriteLine(response.ToString());
string? json = response.ToString();
List<ChampionDTO> f = System.Text.Json.JsonSerializer.Deserialize<List<ChampionDTO>>(json: json);
foreach(var c in f)
{
Console.WriteLine(c.ToString());
}
}
break;
case 2:
{
}
break;
case 3:
{
}
break;
case 4:
{
}
break;
case 5:
{
}
break;
case 6:
{
}
break;
case 7:
{
}
break;
case 8:
{
}
break;
default:
break;
}
}
public static void DisplayCreationChampionMenu(Champion champion)
{
Dictionary<int, string> choices = new Dictionary<int, string>()
{
[1] = "1- Add a skill",
[2] = "2- Add a skin",
[3] = "3- Add a characteristic",
[99] = "99- Finish"
};
while (true)
{
int input = DisplayAMenu(choices);
switch (input)
{
case 1:
case 2:
case 3:
case 99:
return;
default:
break;
}
}
}
}

@ -1,4 +1,6 @@
namespace DTO
using Model;
namespace DTO
{
public class ChampionDTO
{
@ -11,10 +13,20 @@
public string Name { get; set; }
public string Bio { get; set; }
//public ChampionClass Class { get; set; }
public string Icon { get; set; }
public bool equals(ChampionDTO other)
{
return other.Name==this.Name && other.Bio==this.Bio && other.Icon==this.Icon;
}
public string toString()
{
return Name + Bio + Icon;
}
}
}

@ -23,9 +23,9 @@ namespace EF_UT
using (var context = new LoLDbContext(options))
{
ChampionEntity chewie = new ChampionEntity("Chewbacca");
ChampionEntity yoda = new ChampionEntity("Yoda");
ChampionEntity ewok = new ChampionEntity("Ewok");
ChampionEntity chewie = new ChampionEntity("Chewbacca","","");
ChampionEntity yoda = new ChampionEntity("Yoda", "", "");
ChampionEntity ewok = new ChampionEntity("Ewok", "", "");
Console.WriteLine("Creates and inserts new Champion for tests");
@ -39,7 +39,7 @@ namespace EF_UT
using (var context = new LoLDbContext(options))
{
Assert.AreEqual(3, context.Champions.Count());
Assert.AreEqual("Chewbacca", context.Champions.First().name);
Assert.AreEqual("Chewbacca", context.Champions.First().Name);
}
}
[TestMethod]
@ -52,9 +52,9 @@ namespace EF_UT
//prepares the database with one instance of the context
using (var context = new LoLDbContext(options))
{
ChampionEntity chewie = new ChampionEntity ("Chewbacca");
ChampionEntity yoda = new ChampionEntity ("Yoda");
ChampionEntity ewok = new ChampionEntity("Ewok");
ChampionEntity chewie = new ChampionEntity ("Chewbacca", "", "");
ChampionEntity yoda = new ChampionEntity ("Yoda", "", "");
ChampionEntity ewok = new ChampionEntity("Ewok", "", "");
context.Add(chewie);
context.Add(yoda);
@ -65,22 +65,22 @@ namespace EF_UT
//prepares the database with one instance of the context
using (var context = new LoLDbContext(options))
{
string nameToFind = "ew";
Assert.AreEqual(2, context.Champions.Where(n => n.name.ToLower().Contains(nameToFind)).Count());
nameToFind = "ewo";
Assert.AreEqual(1, context.Champions.Where(n => n.name.ToLower().Contains(nameToFind)).Count());
var ewok = context.Champions.Where(n => n.name.ToLower().Contains(nameToFind)).First();
ewok.name = "Wicket";
string NameToFind = "ew";
Assert.AreEqual(2, context.Champions.Where(n => n.Name.ToLower().Contains(NameToFind)).Count());
NameToFind = "ewo";
Assert.AreEqual(1, context.Champions.Where(n => n.Name.ToLower().Contains(NameToFind)).Count());
var ewok = context.Champions.Where(n => n.Name.ToLower().Contains(NameToFind)).First();
ewok.Name = "Wicket";
context.SaveChanges();
}
//prepares the database with one instance of the context
using (var context = new LoLDbContext(options))
{
string nameToFind = "ew";
Assert.AreEqual(1, context.Champions.Where(n => n.name.ToLower().Contains(nameToFind)).Count());
nameToFind = "wick";
Assert.AreEqual(1, context.Champions.Where(n => n.name.ToLower().Contains(nameToFind)).Count());
string NameToFind = "ew";
Assert.AreEqual(1, context.Champions.Where(n => n.Name.ToLower().Contains(NameToFind)).Count());
NameToFind = "wick";
Assert.AreEqual(1, context.Champions.Where(n => n.Name.ToLower().Contains(NameToFind)).Count());
}
}
}

@ -15,14 +15,31 @@ namespace EntityFramework
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string name { get; set; }
public ChampionClass Class { get; set; }
[Required]
[MaxLength(50)]
public string Name { get; set; }
[MaxLength(500)]
[Column("Bio", TypeName = "string")]
public string Bio { get; set; }
[Required]
public string Icon { get; set; }
public ImmutableHashSet<Skill> Skills => skills.ToImmutableHashSet();
private HashSet<Skill> skills = new HashSet<Skill>();
public ChampionEntity(string name) {
this.name = name;
public ChampionEntity(string name,string bio,string icon) {
this.Name = name;
this.Bio = bio;
this.Icon = icon;
}
public override string ToString()
{
return Name;
}

@ -26,5 +26,28 @@ namespace EntityFramework
options.UseSqlite("Data Source=champion.db");
}
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<ChampionEntity>().HasKey(entity => entity.Id);
modelBuilder.Entity<ChampionEntity>().ToTable("Champion");
modelBuilder.Entity<ChampionEntity>().Property(entity => entity.Id)
.ValueGeneratedOnAdd();
modelBuilder.Entity<ChampionEntity>().Property(entity => entity.Name)
.IsRequired()
.HasMaxLength(50);
modelBuilder.Entity<ChampionEntity>().Property(entity => entity.Bio)
.HasMaxLength(500)
.HasColumnName("Bio")
.HasColumnType("string");
modelBuilder.Entity<ChampionEntity>().Property(entity => entity.Icon)
.IsRequired();
}
}
}

@ -1,10 +1,21 @@
// See https://aka.ms/new-console-template for more information
using EntityFramework;
Console.WriteLine("Hello, World!");
using( var context = new LoLDbContext())
{
context.Add(new ChampionEntity("test") );
context.Add(new ChampionEntity("test","test","test") );
context.SaveChanges();
}
ChampionEntity champ = context.Find<ChampionEntity>(1);
if( champ != null)
{
Console
.WriteLine(champ.ToString());
}
else
{
Console.WriteLine("Not Found");
}
}

Loading…
Cancel
Save