Addition of modifications of Mr Chevaldonne and rehabilitation of unit tests 🐛
continuous-integration/drone/push Build is passing Details

pull/8/head
Emre KARTAL 2 years ago
parent b603bcdd0d
commit 48f4b27ae3

@ -114,9 +114,26 @@ namespace ApiLol.Controllers
}
// DELETE api/<RunePagesController>/5
[HttpDelete("{id}")]
public void Delete(int id)
[HttpDelete("{name}")]
public async Task<IActionResult> Delete(string name)
{
_logger.LogInformation("method {Action} - RUNE call with {name}", nameof(Delete), name);
try
{
var dtos = (await _manager.RunePagesMgr.GetItemByName(name, 0, await _manager.RunesMgr.GetNbItems()));
if (dtos.IsNullOrEmpty())
{
_logger.LogWarning("{name} was not found", name);
return NotFound($"{name} was not found");
}
await _manager.RunePagesMgr.DeleteItem(dtos.First());
return NoContent();
}
catch (Exception error)
{
_logger.LogError(error.Message);
return BadRequest(error.Message);
}
}
}
}

@ -148,9 +148,10 @@ namespace ApiLol.Controllers
if (dtos.IsNullOrEmpty())
{
_logger.LogWarning("{name} was not found", name);
return BadRequest();
return NotFound($"{name} was not found");
}
return Ok(await _manager.RunesMgr.DeleteItem(dtos.First()));
await _manager.RunesMgr.DeleteItem(dtos.First());
return NoContent();
}
catch (Exception error)
{

@ -208,9 +208,10 @@ namespace ApiLol.Controllers
if (dtos.IsNullOrEmpty())
{
_logger.LogWarning("{name} was not found", name);
return BadRequest();
return NotFound($"{name} was not found");
}
return Ok(await _manager.SkinsMgr.DeleteItem(dtos.First()));
await _manager.SkinsMgr.DeleteItem(dtos.First());
return NoContent();
}
catch (Exception error)
{

@ -89,7 +89,8 @@ namespace ApiLol.Controllers.v1
_logger.LogInformation("method {Action} - CHAMPION - V1.0 call with {name}", nameof(Delete), name);
var dtos = (await _manager.ChampionsMgr.GetItemByName(name, 0, await _manager.ChampionsMgr.GetNbItems()));
return Ok(await _manager.ChampionsMgr.DeleteItem(dtos.First()));
await _manager.ChampionsMgr.DeleteItem(dtos.First());
return NoContent();
}
}

@ -229,9 +229,10 @@ namespace ApiLol.Controllers.v2
if (dtos.IsNullOrEmpty())
{
_logger.LogWarning("{name} was not found", name);
return BadRequest();
return NotFound($"{name} was not found");
}
return Ok(await _manager.ChampionsMgr.DeleteItem(dtos.First()));
await _manager.ChampionsMgr.DeleteItem(dtos.First());
return NoContent();
}
catch (Exception error)
{

@ -11,7 +11,7 @@ public class Champion : IEquatable<Champion>
get => name;
private init
{
if(string.IsNullOrWhiteSpace(value))
if (string.IsNullOrWhiteSpace(value))
{
name = "Unknown";
return;
@ -26,7 +26,7 @@ public class Champion : IEquatable<Champion>
get => bio;
set
{
if(value == null)
if (value == null)
{
bio = "";
return;
@ -54,7 +54,7 @@ public class Champion : IEquatable<Champion>
}
public ReadOnlyCollection<Skin> Skins { get; private set; }
private List<Skin> skins = new ();
private List<Skin> skins = new();
public ReadOnlyDictionary<string, int> Characteristics { get; private set; }
private readonly Dictionary<string, int> characteristics = new Dictionary<string, int>();
@ -81,7 +81,7 @@ public class Champion : IEquatable<Champion>
public void AddCharacteristics(params Tuple<string, int>[] someCharacteristics)
{
foreach(var c in someCharacteristics)
foreach (var c in someCharacteristics)
{
characteristics[c.Item1] = c.Item2;
}
@ -94,12 +94,12 @@ public class Champion : IEquatable<Champion>
{
get
{
if(!characteristics.TryGetValue(label, out int value)) return null;
if (!characteristics.TryGetValue(label, out int value)) return null;
else return value;
}
set
{
if(!value.HasValue)
if (!value.HasValue)
{
RemoveCharacteristics(label);
return;
@ -110,9 +110,9 @@ public class Champion : IEquatable<Champion>
public override bool Equals(object? obj)
{
if(ReferenceEquals(obj, null)) return false;
if(ReferenceEquals(obj, this)) return true;
if(GetType() != obj.GetType()) return false;
if (ReferenceEquals(obj, null)) return false;
if (ReferenceEquals(obj, this)) return true;
if (GetType() != obj.GetType()) return false;
return Equals(obj as Champion);
}
@ -125,27 +125,27 @@ public class Champion : IEquatable<Champion>
public override string ToString()
{
StringBuilder sb = new StringBuilder($"{Name} ({Class})");
if(!string.IsNullOrWhiteSpace(bio))
if (!string.IsNullOrWhiteSpace(bio))
{
sb.AppendLine($"\t{bio}");
}
if(characteristics.Any())
{
if (characteristics.Any())
{
sb.AppendLine("\tCharacteristics:");
foreach(var characteristic in characteristics)
foreach (var characteristic in characteristics)
{
sb.AppendLine($"\t\t{characteristic.Key} - {characteristic.Value}");
}
}
if(skills.Any())
if (skills.Any())
{
sb.AppendLine("\tSkills:");
foreach(var skill in Skills)
foreach (var skill in Skills)
{
sb.AppendLine($"\t\t{skill.Name} - {skill.Description}");
}
}
return sb.ToString();
}
}
}

@ -3,93 +3,94 @@ using System.Collections.ObjectModel;
namespace Model
{
public partial class RunePage
{
public string Name
{
get => name;
private init
{
if(string.IsNullOrWhiteSpace(value))
{
throw new ArgumentException("a Rune Page must have a name");
}
name = value;
}
}
private readonly string name = null!;
public partial class RunePage
{
public string Name
{
get => name;
private init
{
if (string.IsNullOrWhiteSpace(value))
{
throw new ArgumentException("a Rune Page must have a name");
}
name = value;
}
}
private readonly string name = null!;
public ReadOnlyDictionary<Category, Rune> Runes { get; private set; }
private Dictionary<Category, Rune> runes = new Dictionary<Category, Rune>();
public ReadOnlyDictionary<Category, Rune> Runes { get; private set; }
private Dictionary<Category, Rune> runes = new Dictionary<Category, Rune>();
public RunePage(string name)
{
Name = name;
Runes = new ReadOnlyDictionary<Category, Rune>(runes);
}
public RunePage(string name)
{
Name = name;
Runes = new ReadOnlyDictionary<Category, Rune>(runes);
}
public Rune? this[Category category]
{
get
{
if(runes.TryGetValue(category, out Rune? rune))
{
return rune;
}
return null;
}
set
{
if(value == null)
{
runes.Remove(category);
}
runes[category] = value!;
CheckRunes(category);
}
}
public Rune? this[Category category]
{
get
{
if (runes.TryGetValue(category, out Rune? rune))
{
return rune;
}
return null;
}
set
{
if (value == null)
{
runes.Remove(category);
return;
}
runes[category] = value!;
CheckRunes(category);
}
}
private void CheckRunes(Category newRuneCategory)
{
switch(newRuneCategory)
{
case Category.Major:
UpdateMajorFamily(Category.Minor1, true);
UpdateMajorFamily(Category.Minor2, true);
UpdateMajorFamily(Category.Minor3, true);
UpdateMajorFamily(Category.OtherMinor1, false);
UpdateMajorFamily(Category.OtherMinor2, false);
break;
case Category.Minor1:
case Category.Minor2:
case Category.Minor3:
UpdateMajorFamily(newRuneCategory, true);
break;
case Category.OtherMinor1:
case Category.OtherMinor2:
UpdateMajorFamily(newRuneCategory, false);
break;
}
}
private void CheckRunes(Category newRuneCategory)
{
switch (newRuneCategory)
{
case Category.Major:
UpdateMajorFamily(Category.Minor1, true);
UpdateMajorFamily(Category.Minor2, true);
UpdateMajorFamily(Category.Minor3, true);
UpdateMajorFamily(Category.OtherMinor1, false);
UpdateMajorFamily(Category.OtherMinor2, false);
break;
case Category.Minor1:
case Category.Minor2:
case Category.Minor3:
UpdateMajorFamily(newRuneCategory, true);
break;
case Category.OtherMinor1:
case Category.OtherMinor2:
UpdateMajorFamily(newRuneCategory, false);
break;
}
}
private bool? CheckFamilies(Category cat1, Category cat2)
{
runes.TryGetValue(cat1, out Rune? rune1);
runes.TryGetValue(cat2, out Rune? rune2);
if(rune1 == null || rune2 == null)
{
return null;
}
return rune1.Family == rune2.Family;
}
private bool? CheckFamilies(Category cat1, Category cat2)
{
runes.TryGetValue(cat1, out Rune? rune1);
runes.TryGetValue(cat2, out Rune? rune2);
if (rune1 == null || rune2 == null)
{
return null;
}
return rune1.Family == rune2.Family;
}
private void UpdateMajorFamily(Category minor, bool expectedValue)
{
if(CheckFamilies(Category.Major, minor).GetValueOrDefault(expectedValue) == expectedValue)
{
runes.Remove(minor);
}
}
}
private void UpdateMajorFamily(Category cat, bool expectedValue)
{
if (CheckFamilies(Category.Major, cat).GetValueOrDefault(expectedValue) != expectedValue)
{
runes.Remove(cat);
}
}
}
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -188,13 +188,12 @@ namespace ApiTests
//Act
var total = await stub.ChampionsMgr.GetNbItems();
var championsResult = await champs.Delete("Akali");
var championsResult = await champs.Delete("Renekton");
//Assert
var objectResult = championsResult as OkObjectResult;
var objectResult = championsResult as NoContentResult;
Assert.IsNotNull(objectResult);
Assert.AreEqual(objectResult.Value, true);
Assert.AreNotEqual(await stub.ChampionsMgr.GetNbItems(), total);
}

@ -208,13 +208,12 @@ namespace ApiTests
//Act
var total = await stub.ChampionsMgr.GetNbItems();
var championsResult = await champs.Delete("Akali");
var championsResult = await champs.Delete("Renekton");
//Assert
var objectResult = championsResult as OkObjectResult;
var objectResult = championsResult as NoContentResult;
Assert.IsNotNull(objectResult);
Assert.AreEqual(objectResult.Value, true);
Assert.AreNotEqual(await stub.ChampionsMgr.GetNbItems(), total);
}

@ -76,7 +76,7 @@ namespace ApiTests
}
[TestMethod]
public async Task TestCountChampion()
public async Task TestCountRunes()
{
//Arange
var runeDto = new RuneDto
@ -116,7 +116,7 @@ namespace ApiTests
}
[TestMethod]
public async Task TestPutSkin()
public async Task TestPutRune()
{
//Arange
var runeDto = new RuneDto
@ -157,20 +157,19 @@ namespace ApiTests
}
[TestMethod]
public async Task TestDeleteChampion()
public async Task TestDeleteRune()
{
//Arange
//Act
var total = await stub.RunesMgr.GetNbItems();
var runesResult = await runes.Delete("Conqueror");
var result = await runes.Delete("Conqueror");
//Assert
var objectResult = runesResult as OkObjectResult;
var objectResult = result as NoContentResult;
Assert.IsNotNull(objectResult);
Assert.AreEqual(objectResult.Value, true);
Assert.AreNotEqual(await stub.RunesMgr.GetNbItems(), total);
}

@ -52,12 +52,12 @@ namespace ApiTests
//Arange
var SkinDto = new SkinDtoC
{
Name = "Project",
Name = "Project Pyke",
Description = "Test",
Icon = "",
Image = new LargeImageDto(),
Price = 900,
ChampionName = "aatrox"
ChampionName = "Volibear"
};
//Act
@ -76,17 +76,17 @@ namespace ApiTests
}
[TestMethod]
public async Task TestCountChampion()
public async Task TestCountSkins()
{
//Arange
var SkinDto = new SkinDtoC
{
Name = "Project",
Name = "Project Pyke",
Description = "Test",
Icon = "",
Image = new LargeImageDto(),
Price = 900,
ChampionName = "aatrox"
ChampionName = "Volibear"
};
//Act
@ -127,7 +127,7 @@ namespace ApiTests
Icon = "",
Image = new LargeImageDto(),
Price = 900,
ChampionName = "aatrox"
ChampionName = "Volibear"
};
var SkinDtoPut = new SkinDtoC
{
@ -136,7 +136,7 @@ namespace ApiTests
Icon = "",
Image = new LargeImageDto(),
Price = 850,
ChampionName = "aatrox"
ChampionName = "Volibear"
};
//Act
@ -161,20 +161,19 @@ namespace ApiTests
}
[TestMethod]
public async Task TestDeleteChampion()
public async Task TestDeleteSkin()
{
//Arange
//Act
var total = await stub.SkinsMgr.GetNbItems();
var skinsResult = await skins.Delete("Stinger");
var skinsResult = await skins.Delete("Project");
//Assert
var objectResult = skinsResult as OkObjectResult;
var objectResult = skinsResult as NoContentResult;
Assert.IsNotNull(objectResult);
Assert.AreEqual(objectResult.Value, true);
Assert.AreNotEqual(await stub.SkinsMgr.GetNbItems(), total);
}

Loading…
Cancel
Save