Adding simple tests on Runes
continuous-integration/drone/push Build is passing Details

pull/6/head
Arthur VALIN 2 years ago
parent aa7967839c
commit 79b7bf3603

@ -1,4 +1,5 @@
using EntityMapper;
using Microsoft.EntityFrameworkCore;
using Model;
using Shared;
@ -14,14 +15,33 @@ namespace Business
=> this.parent = parent;
public async Task<Rune?> AddItem(Rune? item)
{
await parent.DbContext.runes.AddAsync(item.ToEntity());
try
{
await parent.DbContext.runes.AddAsync(item.ToEntity(parent.DbContext));
parent.DbContext.SaveChanges();
}
catch (OperationCanceledException) {}
catch (DbUpdateException) { }
return item;
}
public async Task<bool> DeleteItem(Rune? item)
{
parent.DbContext.runes.Remove(item.ToEntity());
return true;
try
{
var toDelete = parent.DbContext.runes.Find(item?.Name);
if (toDelete != null)
{
parent.DbContext.runes.Remove(item?.ToEntity(parent.DbContext));
parent.DbContext.SaveChanges();
return true;
}
return false;
}
catch (DbUpdateException)
{
return false;
}
}
public async Task<IEnumerable<Rune?>> GetItems(int index, int count, string? orderingPropertyName = null, bool descending = false)
@ -65,8 +85,15 @@ namespace Business
public async Task<Rune?> UpdateItem(Rune? oldItem, Rune? newItem)
{
parent.DbContext.runes.Remove(oldItem.ToEntity());
parent.DbContext.runes.Add(newItem.ToEntity());
var toUpdate = parent.DbContext.runes.Find(oldItem.Name);
try
{
toUpdate.Description = newItem.Description;
toUpdate.RuneFamily = newItem.Family;
parent.DbContext.SaveChanges();
}
catch (DbUpdateException) {}
return newItem;
}
}

@ -1,411 +0,0 @@
// <auto-generated />
using System;
using Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace Entities.Migrations
{
[DbContext(typeof(LolDbContext))]
[Migration("20230301162639_myFirstMigration")]
partial class myFirstMigration
{
/// <inheritdoc />
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder.HasAnnotation("ProductVersion", "7.0.2");
modelBuilder.Entity("ChampionEntityRunePageEntity", b =>
{
b.Property<string>("championsName")
.HasColumnType("TEXT");
b.Property<Guid>("runepagesId")
.HasColumnType("TEXT");
b.HasKey("championsName", "runepagesId");
b.HasIndex("runepagesId");
b.ToTable("ChampionEntityRunePageEntity");
});
modelBuilder.Entity("ChampionEntitySkillEntity", b =>
{
b.Property<string>("ChampionsName")
.HasColumnType("TEXT");
b.Property<string>("SkillsName")
.HasColumnType("TEXT");
b.HasKey("ChampionsName", "SkillsName");
b.HasIndex("SkillsName");
b.ToTable("ChampionEntitySkillEntity");
});
modelBuilder.Entity("Entities.ChampionEntity", b =>
{
b.Property<string>("Name")
.HasMaxLength(256)
.HasColumnType("TEXT");
b.Property<string>("Bio")
.IsRequired()
.HasMaxLength(500)
.HasColumnType("TEXT");
b.Property<int>("Class")
.HasColumnType("INTEGER");
b.Property<string>("Icon")
.HasColumnType("TEXT");
b.Property<Guid?>("ImageId")
.HasColumnType("TEXT");
b.HasKey("Name");
b.HasIndex("ImageId");
b.ToTable("champions");
b.HasData(
new
{
Name = "Dave",
Bio = "Le meilleur Jazzman de France",
Class = 2
},
new
{
Name = "Armure",
Bio = "Solide",
Class = 6
});
});
modelBuilder.Entity("Entities.CharacteristicEntity", b =>
{
b.Property<string>("Name")
.HasMaxLength(256)
.HasColumnType("TEXT");
b.Property<string>("ChampionForeignKey")
.HasColumnType("TEXT");
b.Property<int>("Value")
.HasColumnType("INTEGER");
b.HasKey("Name", "ChampionForeignKey");
b.HasIndex("ChampionForeignKey");
b.ToTable("characteristics");
b.HasData(
new
{
Name = "Force",
ChampionForeignKey = "Dave",
Value = 50
},
new
{
Name = "Défense",
ChampionForeignKey = "Armure",
Value = 75
});
});
modelBuilder.Entity("Entities.LargeImageEntity", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("TEXT");
b.Property<string>("Base64")
.IsRequired()
.HasColumnType("TEXT");
b.HasKey("Id");
b.ToTable("largeimages");
b.HasData(
new
{
Id = new Guid("d3a490c6-fb49-475a-9134-47c2de9888d2"),
Base64 = "aaa"
});
});
modelBuilder.Entity("Entities.RuneEntity", b =>
{
b.Property<string>("Name")
.HasMaxLength(256)
.HasColumnType("TEXT");
b.Property<string>("Description")
.IsRequired()
.HasMaxLength(500)
.HasColumnType("TEXT");
b.Property<Guid?>("ImageId")
.HasColumnType("TEXT");
b.Property<int>("RuneFamily")
.HasColumnType("INTEGER");
b.HasKey("Name");
b.HasIndex("ImageId");
b.ToTable("runes");
b.HasData(
new
{
Name = "Bullseye",
Description = "Steady shot",
RuneFamily = 1
},
new
{
Name = "Alkatraz",
Description = "Lock effect",
RuneFamily = 2
});
});
modelBuilder.Entity("Entities.RunePageEntity", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("TEXT");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("TEXT");
b.HasKey("Id");
b.ToTable("runepages");
b.HasData(
new
{
Id = new Guid("4ea04d4f-0a64-4d28-8d74-4499dbc541f2"),
Name = "Runepage_1"
});
});
modelBuilder.Entity("Entities.RunePageRuneEntity", b =>
{
b.Property<Guid>("runepagesId")
.HasColumnType("TEXT");
b.Property<string>("runesName")
.HasColumnType("TEXT");
b.Property<int>("Category")
.HasColumnType("INTEGER");
b.HasKey("runepagesId", "runesName");
b.HasIndex("runesName");
b.ToTable("RunePageRuneEntity");
});
modelBuilder.Entity("Entities.SkillEntity", b =>
{
b.Property<string>("Name")
.HasMaxLength(256)
.HasColumnType("TEXT");
b.Property<string>("Description")
.IsRequired()
.HasMaxLength(500)
.HasColumnType("TEXT");
b.Property<int>("SkillType")
.HasColumnType("INTEGER");
b.HasKey("Name");
b.ToTable("skills");
b.HasData(
new
{
Name = "Boule de feu",
Description = "Fire!",
SkillType = 1
},
new
{
Name = "White Star",
Description = "Random damage",
SkillType = 3
});
});
modelBuilder.Entity("Entities.SkinEntity", b =>
{
b.Property<string>("Name")
.HasMaxLength(256)
.HasColumnType("TEXT");
b.Property<string>("ChampionForeignKey")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("Description")
.IsRequired()
.HasMaxLength(500)
.HasColumnType("TEXT");
b.Property<string>("Icon")
.IsRequired()
.HasColumnType("TEXT");
b.Property<Guid?>("ImageId")
.HasColumnType("TEXT");
b.Property<float>("Price")
.HasColumnType("REAL");
b.HasKey("Name");
b.HasIndex("ChampionForeignKey");
b.HasIndex("ImageId");
b.ToTable("skins");
b.HasData(
new
{
Name = "Dave de glace",
ChampionForeignKey = "Dave",
Description = "Enneigé",
Icon = "aaa",
Price = 7.99f
},
new
{
Name = "Armure Fullspeed",
ChampionForeignKey = "Armure",
Description = "Deja vu",
Icon = "aaa",
Price = 9.99f
});
});
modelBuilder.Entity("ChampionEntityRunePageEntity", b =>
{
b.HasOne("Entities.ChampionEntity", null)
.WithMany()
.HasForeignKey("championsName")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Entities.RunePageEntity", null)
.WithMany()
.HasForeignKey("runepagesId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("ChampionEntitySkillEntity", b =>
{
b.HasOne("Entities.ChampionEntity", null)
.WithMany()
.HasForeignKey("ChampionsName")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Entities.SkillEntity", null)
.WithMany()
.HasForeignKey("SkillsName")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("Entities.ChampionEntity", b =>
{
b.HasOne("Entities.LargeImageEntity", "Image")
.WithMany()
.HasForeignKey("ImageId");
b.Navigation("Image");
});
modelBuilder.Entity("Entities.CharacteristicEntity", b =>
{
b.HasOne("Entities.ChampionEntity", "Champion")
.WithMany("Characteristics")
.HasForeignKey("ChampionForeignKey")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Champion");
});
modelBuilder.Entity("Entities.RuneEntity", b =>
{
b.HasOne("Entities.LargeImageEntity", "Image")
.WithMany()
.HasForeignKey("ImageId");
b.Navigation("Image");
});
modelBuilder.Entity("Entities.RunePageRuneEntity", b =>
{
b.HasOne("Entities.RunePageEntity", null)
.WithMany()
.HasForeignKey("runepagesId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Entities.RuneEntity", null)
.WithMany()
.HasForeignKey("runesName")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("Entities.SkinEntity", b =>
{
b.HasOne("Entities.ChampionEntity", "Champion")
.WithMany()
.HasForeignKey("ChampionForeignKey")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Entities.LargeImageEntity", "Image")
.WithMany()
.HasForeignKey("ImageId");
b.Navigation("Champion");
b.Navigation("Image");
});
modelBuilder.Entity("Entities.ChampionEntity", b =>
{
b.Navigation("Characteristics");
});
#pragma warning restore 612, 618
}
}
}

@ -1,341 +0,0 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional
namespace Entities.Migrations
{
/// <inheritdoc />
public partial class myFirstMigration : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "largeimages",
columns: table => new
{
Id = table.Column<Guid>(type: "TEXT", nullable: false),
Base64 = table.Column<string>(type: "TEXT", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_largeimages", x => x.Id);
});
migrationBuilder.CreateTable(
name: "runepages",
columns: table => new
{
Id = table.Column<Guid>(type: "TEXT", nullable: false),
Name = table.Column<string>(type: "TEXT", maxLength: 256, nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_runepages", x => x.Id);
});
migrationBuilder.CreateTable(
name: "skills",
columns: table => new
{
Name = table.Column<string>(type: "TEXT", maxLength: 256, nullable: false),
Description = table.Column<string>(type: "TEXT", maxLength: 500, nullable: false),
SkillType = table.Column<int>(type: "INTEGER", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_skills", x => x.Name);
});
migrationBuilder.CreateTable(
name: "champions",
columns: table => new
{
Name = table.Column<string>(type: "TEXT", maxLength: 256, nullable: false),
Bio = table.Column<string>(type: "TEXT", maxLength: 500, nullable: false),
Icon = table.Column<string>(type: "TEXT", nullable: true),
Class = table.Column<int>(type: "INTEGER", nullable: false),
ImageId = table.Column<Guid>(type: "TEXT", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_champions", x => x.Name);
table.ForeignKey(
name: "FK_champions_largeimages_ImageId",
column: x => x.ImageId,
principalTable: "largeimages",
principalColumn: "Id");
});
migrationBuilder.CreateTable(
name: "runes",
columns: table => new
{
Name = table.Column<string>(type: "TEXT", maxLength: 256, nullable: false),
Description = table.Column<string>(type: "TEXT", maxLength: 500, nullable: false),
RuneFamily = table.Column<int>(type: "INTEGER", nullable: false),
ImageId = table.Column<Guid>(type: "TEXT", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_runes", x => x.Name);
table.ForeignKey(
name: "FK_runes_largeimages_ImageId",
column: x => x.ImageId,
principalTable: "largeimages",
principalColumn: "Id");
});
migrationBuilder.CreateTable(
name: "ChampionEntityRunePageEntity",
columns: table => new
{
championsName = table.Column<string>(type: "TEXT", nullable: false),
runepagesId = table.Column<Guid>(type: "TEXT", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_ChampionEntityRunePageEntity", x => new { x.championsName, x.runepagesId });
table.ForeignKey(
name: "FK_ChampionEntityRunePageEntity_champions_championsName",
column: x => x.championsName,
principalTable: "champions",
principalColumn: "Name",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_ChampionEntityRunePageEntity_runepages_runepagesId",
column: x => x.runepagesId,
principalTable: "runepages",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "ChampionEntitySkillEntity",
columns: table => new
{
ChampionsName = table.Column<string>(type: "TEXT", nullable: false),
SkillsName = table.Column<string>(type: "TEXT", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_ChampionEntitySkillEntity", x => new { x.ChampionsName, x.SkillsName });
table.ForeignKey(
name: "FK_ChampionEntitySkillEntity_champions_ChampionsName",
column: x => x.ChampionsName,
principalTable: "champions",
principalColumn: "Name",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_ChampionEntitySkillEntity_skills_SkillsName",
column: x => x.SkillsName,
principalTable: "skills",
principalColumn: "Name",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "characteristics",
columns: table => new
{
Name = table.Column<string>(type: "TEXT", maxLength: 256, nullable: false),
ChampionForeignKey = table.Column<string>(type: "TEXT", nullable: false),
Value = table.Column<int>(type: "INTEGER", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_characteristics", x => new { x.Name, x.ChampionForeignKey });
table.ForeignKey(
name: "FK_characteristics_champions_ChampionForeignKey",
column: x => x.ChampionForeignKey,
principalTable: "champions",
principalColumn: "Name",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "skins",
columns: table => new
{
Name = table.Column<string>(type: "TEXT", maxLength: 256, nullable: false),
Description = table.Column<string>(type: "TEXT", maxLength: 500, nullable: false),
Icon = table.Column<string>(type: "TEXT", nullable: false),
Price = table.Column<float>(type: "REAL", nullable: false),
ChampionForeignKey = table.Column<string>(type: "TEXT", nullable: false),
ImageId = table.Column<Guid>(type: "TEXT", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_skins", x => x.Name);
table.ForeignKey(
name: "FK_skins_champions_ChampionForeignKey",
column: x => x.ChampionForeignKey,
principalTable: "champions",
principalColumn: "Name",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_skins_largeimages_ImageId",
column: x => x.ImageId,
principalTable: "largeimages",
principalColumn: "Id");
});
migrationBuilder.CreateTable(
name: "RunePageRuneEntity",
columns: table => new
{
runepagesId = table.Column<Guid>(type: "TEXT", nullable: false),
runesName = table.Column<string>(type: "TEXT", nullable: false),
Category = table.Column<int>(type: "INTEGER", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_RunePageRuneEntity", x => new { x.runepagesId, x.runesName });
table.ForeignKey(
name: "FK_RunePageRuneEntity_runepages_runepagesId",
column: x => x.runepagesId,
principalTable: "runepages",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_RunePageRuneEntity_runes_runesName",
column: x => x.runesName,
principalTable: "runes",
principalColumn: "Name",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.InsertData(
table: "champions",
columns: new[] { "Name", "Bio", "Class", "Icon", "ImageId" },
values: new object[,]
{
{ "Armure", "Solide", 6, null, null },
{ "Dave", "Le meilleur Jazzman de France", 2, null, null }
});
migrationBuilder.InsertData(
table: "largeimages",
columns: new[] { "Id", "Base64" },
values: new object[] { new Guid("d3a490c6-fb49-475a-9134-47c2de9888d2"), "aaa" });
migrationBuilder.InsertData(
table: "runepages",
columns: new[] { "Id", "Name" },
values: new object[] { new Guid("4ea04d4f-0a64-4d28-8d74-4499dbc541f2"), "Runepage_1" });
migrationBuilder.InsertData(
table: "runes",
columns: new[] { "Name", "Description", "ImageId", "RuneFamily" },
values: new object[,]
{
{ "Alkatraz", "Lock effect", null, 2 },
{ "Bullseye", "Steady shot", null, 1 }
});
migrationBuilder.InsertData(
table: "skills",
columns: new[] { "Name", "Description", "SkillType" },
values: new object[,]
{
{ "Boule de feu", "Fire!", 1 },
{ "White Star", "Random damage", 3 }
});
migrationBuilder.InsertData(
table: "characteristics",
columns: new[] { "ChampionForeignKey", "Name", "Value" },
values: new object[,]
{
{ "Armure", "Défense", 75 },
{ "Dave", "Force", 50 }
});
migrationBuilder.InsertData(
table: "skins",
columns: new[] { "Name", "ChampionForeignKey", "Description", "Icon", "ImageId", "Price" },
values: new object[,]
{
{ "Armure Fullspeed", "Armure", "Deja vu", "aaa", null, 9.99f },
{ "Dave de glace", "Dave", "Enneigé", "aaa", null, 7.99f }
});
migrationBuilder.CreateIndex(
name: "IX_ChampionEntityRunePageEntity_runepagesId",
table: "ChampionEntityRunePageEntity",
column: "runepagesId");
migrationBuilder.CreateIndex(
name: "IX_ChampionEntitySkillEntity_SkillsName",
table: "ChampionEntitySkillEntity",
column: "SkillsName");
migrationBuilder.CreateIndex(
name: "IX_champions_ImageId",
table: "champions",
column: "ImageId");
migrationBuilder.CreateIndex(
name: "IX_characteristics_ChampionForeignKey",
table: "characteristics",
column: "ChampionForeignKey");
migrationBuilder.CreateIndex(
name: "IX_RunePageRuneEntity_runesName",
table: "RunePageRuneEntity",
column: "runesName");
migrationBuilder.CreateIndex(
name: "IX_runes_ImageId",
table: "runes",
column: "ImageId");
migrationBuilder.CreateIndex(
name: "IX_skins_ChampionForeignKey",
table: "skins",
column: "ChampionForeignKey");
migrationBuilder.CreateIndex(
name: "IX_skins_ImageId",
table: "skins",
column: "ImageId");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "ChampionEntityRunePageEntity");
migrationBuilder.DropTable(
name: "ChampionEntitySkillEntity");
migrationBuilder.DropTable(
name: "characteristics");
migrationBuilder.DropTable(
name: "RunePageRuneEntity");
migrationBuilder.DropTable(
name: "skins");
migrationBuilder.DropTable(
name: "skills");
migrationBuilder.DropTable(
name: "runepages");
migrationBuilder.DropTable(
name: "runes");
migrationBuilder.DropTable(
name: "champions");
migrationBuilder.DropTable(
name: "largeimages");
}
}
}

@ -1,408 +0,0 @@
// <auto-generated />
using System;
using Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace Entities.Migrations
{
[DbContext(typeof(LolDbContext))]
partial class LolDbContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder.HasAnnotation("ProductVersion", "7.0.2");
modelBuilder.Entity("ChampionEntityRunePageEntity", b =>
{
b.Property<string>("championsName")
.HasColumnType("TEXT");
b.Property<Guid>("runepagesId")
.HasColumnType("TEXT");
b.HasKey("championsName", "runepagesId");
b.HasIndex("runepagesId");
b.ToTable("ChampionEntityRunePageEntity");
});
modelBuilder.Entity("ChampionEntitySkillEntity", b =>
{
b.Property<string>("ChampionsName")
.HasColumnType("TEXT");
b.Property<string>("SkillsName")
.HasColumnType("TEXT");
b.HasKey("ChampionsName", "SkillsName");
b.HasIndex("SkillsName");
b.ToTable("ChampionEntitySkillEntity");
});
modelBuilder.Entity("Entities.ChampionEntity", b =>
{
b.Property<string>("Name")
.HasMaxLength(256)
.HasColumnType("TEXT");
b.Property<string>("Bio")
.IsRequired()
.HasMaxLength(500)
.HasColumnType("TEXT");
b.Property<int>("Class")
.HasColumnType("INTEGER");
b.Property<string>("Icon")
.HasColumnType("TEXT");
b.Property<Guid?>("ImageId")
.HasColumnType("TEXT");
b.HasKey("Name");
b.HasIndex("ImageId");
b.ToTable("champions");
b.HasData(
new
{
Name = "Dave",
Bio = "Le meilleur Jazzman de France",
Class = 2
},
new
{
Name = "Armure",
Bio = "Solide",
Class = 6
});
});
modelBuilder.Entity("Entities.CharacteristicEntity", b =>
{
b.Property<string>("Name")
.HasMaxLength(256)
.HasColumnType("TEXT");
b.Property<string>("ChampionForeignKey")
.HasColumnType("TEXT");
b.Property<int>("Value")
.HasColumnType("INTEGER");
b.HasKey("Name", "ChampionForeignKey");
b.HasIndex("ChampionForeignKey");
b.ToTable("characteristics");
b.HasData(
new
{
Name = "Force",
ChampionForeignKey = "Dave",
Value = 50
},
new
{
Name = "Défense",
ChampionForeignKey = "Armure",
Value = 75
});
});
modelBuilder.Entity("Entities.LargeImageEntity", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("TEXT");
b.Property<string>("Base64")
.IsRequired()
.HasColumnType("TEXT");
b.HasKey("Id");
b.ToTable("largeimages");
b.HasData(
new
{
Id = new Guid("d3a490c6-fb49-475a-9134-47c2de9888d2"),
Base64 = "aaa"
});
});
modelBuilder.Entity("Entities.RuneEntity", b =>
{
b.Property<string>("Name")
.HasMaxLength(256)
.HasColumnType("TEXT");
b.Property<string>("Description")
.IsRequired()
.HasMaxLength(500)
.HasColumnType("TEXT");
b.Property<Guid?>("ImageId")
.HasColumnType("TEXT");
b.Property<int>("RuneFamily")
.HasColumnType("INTEGER");
b.HasKey("Name");
b.HasIndex("ImageId");
b.ToTable("runes");
b.HasData(
new
{
Name = "Bullseye",
Description = "Steady shot",
RuneFamily = 1
},
new
{
Name = "Alkatraz",
Description = "Lock effect",
RuneFamily = 2
});
});
modelBuilder.Entity("Entities.RunePageEntity", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("TEXT");
b.Property<string>("Name")
.IsRequired()
.HasMaxLength(256)
.HasColumnType("TEXT");
b.HasKey("Id");
b.ToTable("runepages");
b.HasData(
new
{
Id = new Guid("4ea04d4f-0a64-4d28-8d74-4499dbc541f2"),
Name = "Runepage_1"
});
});
modelBuilder.Entity("Entities.RunePageRuneEntity", b =>
{
b.Property<Guid>("runepagesId")
.HasColumnType("TEXT");
b.Property<string>("runesName")
.HasColumnType("TEXT");
b.Property<int>("Category")
.HasColumnType("INTEGER");
b.HasKey("runepagesId", "runesName");
b.HasIndex("runesName");
b.ToTable("RunePageRuneEntity");
});
modelBuilder.Entity("Entities.SkillEntity", b =>
{
b.Property<string>("Name")
.HasMaxLength(256)
.HasColumnType("TEXT");
b.Property<string>("Description")
.IsRequired()
.HasMaxLength(500)
.HasColumnType("TEXT");
b.Property<int>("SkillType")
.HasColumnType("INTEGER");
b.HasKey("Name");
b.ToTable("skills");
b.HasData(
new
{
Name = "Boule de feu",
Description = "Fire!",
SkillType = 1
},
new
{
Name = "White Star",
Description = "Random damage",
SkillType = 3
});
});
modelBuilder.Entity("Entities.SkinEntity", b =>
{
b.Property<string>("Name")
.HasMaxLength(256)
.HasColumnType("TEXT");
b.Property<string>("ChampionForeignKey")
.IsRequired()
.HasColumnType("TEXT");
b.Property<string>("Description")
.IsRequired()
.HasMaxLength(500)
.HasColumnType("TEXT");
b.Property<string>("Icon")
.IsRequired()
.HasColumnType("TEXT");
b.Property<Guid?>("ImageId")
.HasColumnType("TEXT");
b.Property<float>("Price")
.HasColumnType("REAL");
b.HasKey("Name");
b.HasIndex("ChampionForeignKey");
b.HasIndex("ImageId");
b.ToTable("skins");
b.HasData(
new
{
Name = "Dave de glace",
ChampionForeignKey = "Dave",
Description = "Enneigé",
Icon = "aaa",
Price = 7.99f
},
new
{
Name = "Armure Fullspeed",
ChampionForeignKey = "Armure",
Description = "Deja vu",
Icon = "aaa",
Price = 9.99f
});
});
modelBuilder.Entity("ChampionEntityRunePageEntity", b =>
{
b.HasOne("Entities.ChampionEntity", null)
.WithMany()
.HasForeignKey("championsName")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Entities.RunePageEntity", null)
.WithMany()
.HasForeignKey("runepagesId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("ChampionEntitySkillEntity", b =>
{
b.HasOne("Entities.ChampionEntity", null)
.WithMany()
.HasForeignKey("ChampionsName")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Entities.SkillEntity", null)
.WithMany()
.HasForeignKey("SkillsName")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("Entities.ChampionEntity", b =>
{
b.HasOne("Entities.LargeImageEntity", "Image")
.WithMany()
.HasForeignKey("ImageId");
b.Navigation("Image");
});
modelBuilder.Entity("Entities.CharacteristicEntity", b =>
{
b.HasOne("Entities.ChampionEntity", "Champion")
.WithMany("Characteristics")
.HasForeignKey("ChampionForeignKey")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("Champion");
});
modelBuilder.Entity("Entities.RuneEntity", b =>
{
b.HasOne("Entities.LargeImageEntity", "Image")
.WithMany()
.HasForeignKey("ImageId");
b.Navigation("Image");
});
modelBuilder.Entity("Entities.RunePageRuneEntity", b =>
{
b.HasOne("Entities.RunePageEntity", null)
.WithMany()
.HasForeignKey("runepagesId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Entities.RuneEntity", null)
.WithMany()
.HasForeignKey("runesName")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
});
modelBuilder.Entity("Entities.SkinEntity", b =>
{
b.HasOne("Entities.ChampionEntity", "Champion")
.WithMany()
.HasForeignKey("ChampionForeignKey")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.HasOne("Entities.LargeImageEntity", "Image")
.WithMany()
.HasForeignKey("ImageId");
b.Navigation("Champion");
b.Navigation("Image");
});
modelBuilder.Entity("Entities.ChampionEntity", b =>
{
b.Navigation("Characteristics");
});
#pragma warning restore 612, 618
}
}
}

@ -1,20 +1,29 @@
using Entities;
using Model;
using System.Reflection.Metadata.Ecma335;
namespace EntityMapper
{
public static class RuneMapper
{
public static RuneEntity ToEntity(this Rune item)
public static RuneEntity ToEntity(this Rune item, LolDbContext context)
{
throw new NotImplementedException();
RuneEntity runeEntity = context.runes.Find(item.Name);
if (runeEntity == null) {
return new()
{
Name = item.Name,
Description = item.Description,
RuneFamily = item.Family
};
}
return runeEntity;
}
public static Rune ToModel(this RuneEntity entity)
{
throw new NotImplementedException();
return new Rune(entity.Name, entity.RuneFamily, "", "", entity.Description);
}
}

@ -0,0 +1,160 @@
using Business;
using Entities;
using Microsoft.Data.Sqlite;
using Microsoft.EntityFrameworkCore;
using Model;
using Shared;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TestEF
{
public class TestRunes
{
[Fact]
public async void Test_Add()
{
//connection must be opened to use In-memory database
var connection = new SqliteConnection("DataSource=:memory:");
connection.Open();
var options = new DbContextOptionsBuilder<LolDbContext>()
.UseSqlite(connection)
.Options;
using (var context = new LolDbContext(options))
{
var manager = new DbData(context).RunesMgr;
context.Database.EnsureCreated();
Model.Rune rune1 = new("Sanglante", RuneFamily.Domination);
Model.Rune rune2 = new("Oeil de l'esprit", RuneFamily.Precision);
Model.Rune rune3 = new("Concrétisation", RuneFamily.Unknown);
await manager.AddItem(rune1);
await manager.AddItem(rune2);
await manager.AddItem(rune3);
}
//uses another instance of the context to do the tests
using (var context = new LolDbContext(options))
{
var manager = new DbData(context).RunesMgr;
context.Database.EnsureCreated();
var nbItems = await manager.GetNbItems();
Assert.Equal(3, nbItems);
var items = await manager.GetItemsByName("Sanglante", 0, nbItems);
Assert.Equal("Sanglante", items.First().Name);
Assert.Equal(1, await manager.GetNbItemsByName("Concrétisation"));
items = await manager.GetItemsByFamily(RuneFamily.Precision, 0, nbItems);
Assert.Equal("Oeil de l'esprit", items.First().Name);
Assert.Equal(1, await manager.GetNbItemsByFamily(RuneFamily.Unknown));
}
}
[Fact]
public async void Test_Update()
{
//connection must be opened to use In-memory database
var connection = new SqliteConnection("DataSource=:memory:");
connection.Open();
var options = new DbContextOptionsBuilder<LolDbContext>()
.UseSqlite(connection)
.Options;
using (var context = new LolDbContext(options))
{
var manager = new DbData(context).RunesMgr;
context.Database.EnsureCreated();
Model.Rune rune1 = new("Sanglante", RuneFamily.Domination);
Model.Rune rune2 = new("Oeil de l'esprit", RuneFamily.Precision);
Model.Rune rune3 = new("Concrétisation", RuneFamily.Unknown);
await manager.AddItem(rune1);
await manager.AddItem(rune2);
await manager.AddItem(rune3);
}
//uses another instance of the context to do the tests
using (var context = new LolDbContext(options))
{
var manager = new DbData(context).RunesMgr;
context.Database.EnsureCreated();
Assert.Equal(1, await manager.GetNbItemsByFamily(RuneFamily.Precision));
Model.Rune before = new("Concrétisation", RuneFamily.Unknown);
Model.Rune after = new("Concrétisation", RuneFamily.Precision);
await manager.UpdateItem(before, after);
Assert.Equal(2, await manager.GetNbItemsByFamily(RuneFamily.Precision));
context.SaveChanges();
}
}
[Fact]
public async void Test_Delete()
{
//connection must be opened to use In-memory database
var connection = new SqliteConnection("DataSource=:memory:");
connection.Open();
var options = new DbContextOptionsBuilder<LolDbContext>()
.UseSqlite(connection)
.Options;
//prepares the database with one instance of the context
using (var context = new LolDbContext(options))
{
var manager = new DbData(context).RunesMgr;
context.Database.EnsureCreated();
Model.Rune rune1 = new("Sanglante", RuneFamily.Domination);
Model.Rune rune2 = new("Oeil de l'esprit", RuneFamily.Precision);
Model.Rune rune3 = new("Concrétisation", RuneFamily.Unknown);
await manager.AddItem(rune1);
await manager.AddItem(rune2);
await manager.AddItem(rune3);
}
//uses another instance of the context to do the tests
using (var context = new LolDbContext(options))
{
var manager = new DbData(context).RunesMgr;
context.Database.EnsureCreated();
Assert.Equal(3, await manager.GetNbItems());
await manager.DeleteItem(new("Concrétisation", RuneFamily.Unknown));
Assert.Equal(2, await manager.GetNbItems());
Assert.Equal(0, await manager.GetNbItemsByName("Concrétisation"));
}
}
}
}
Loading…
Cancel
Save