Add tests for GetOneById()
continuous-integration/drone/push Build is passing Details

pull/110/head
Alexis Drai 2 years ago
parent 2fae748af9
commit 912f6f6627

@ -1,82 +1,82 @@
using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.ChangeTracking;
using Model; using Model;
namespace Data.EF.Players namespace Data.EF.Players
{ {
public sealed class PlayerDbManager : IManager<PlayerEntity> public sealed class PlayerDbManager : IManager<PlayerEntity>
{ {
private readonly DiceAppDbContext db; private readonly DiceAppDbContext db;
public PlayerDbManager(DiceAppDbContext db) public PlayerDbManager(DiceAppDbContext db)
{ {
this.db = db; this.db = db;
} }
public PlayerEntity Add(PlayerEntity toAdd) public PlayerEntity Add(PlayerEntity toAdd)
{ {
if (db.Players!.Where(entity => entity.Name == toAdd.Name).Any()) if (db.Players!.Where(entity => entity.Name == toAdd.Name).Any())
{ {
throw new ArgumentException("this username is already taken", nameof(toAdd)); throw new ArgumentException("this username is already taken", nameof(toAdd));
}
if (toAdd is null)
{
throw new ArgumentNullException(nameof(toAdd), "param should not be null");
} }
if (toAdd is null)
{
throw new ArgumentNullException(nameof(toAdd), "param should not be null");
}
if (string.IsNullOrWhiteSpace(toAdd.Name)) if (string.IsNullOrWhiteSpace(toAdd.Name))
{ {
throw new ArgumentException("Name property should not be null or whitespace", nameof(toAdd)); throw new ArgumentException("Name property should not be null or whitespace", nameof(toAdd));
} }
EntityEntry ee = db.Players!.Add(toAdd); EntityEntry ee = db.Players!.Add(toAdd);
db.SaveChanges(); db.SaveChanges();
return (PlayerEntity)ee.Entity; return (PlayerEntity)ee.Entity;
} }
public IEnumerable<PlayerEntity> GetAll() public IEnumerable<PlayerEntity> GetAll()
{ {
return db.Players!.AsEnumerable(); return db.Players!.AsEnumerable();
} }
/// <summary> /// <summary>
/// Calls First(), which will throw an exception if no player with such name exists /// Calls First(), which will throw an exception if no player with such name exists
/// </summary> /// </summary>
/// <param name="name"></param> /// <param name="name"></param>
/// <returns></returns> /// <returns></returns>
public PlayerEntity GetOneByName(string name) public PlayerEntity GetOneByName(string name)
{ {
if(string.IsNullOrWhiteSpace(name)) if(string.IsNullOrWhiteSpace(name))
{ {
throw new ArgumentException("Name property should not be null or whitespace", nameof(name)); throw new ArgumentException("Name property should not be null or whitespace", nameof(name));
} }
return db.Players!.First(p => p.Name == name); return db.Players!.First(p => p.Name == name);
} }
public void Remove(PlayerEntity toRemove) public void Remove(PlayerEntity toRemove)
{ {
if (toRemove is null) if (toRemove is null)
{ {
throw new ArgumentNullException(nameof(toRemove), "param should not be null"); throw new ArgumentNullException(nameof(toRemove), "param should not be null");
} }
db.Players!.Remove(toRemove); db.Players!.Remove(toRemove);
db.SaveChanges(); db.SaveChanges();
} }
public PlayerEntity Update(PlayerEntity before, PlayerEntity after) public PlayerEntity Update(PlayerEntity before, PlayerEntity after)
{ {
EntityEntry ee = db.Players!.Update(before); EntityEntry ee = db.Players!.Update(before);
before.Name = after.Name; before.Name = after.Name;
db.SaveChanges(); db.SaveChanges();
return (PlayerEntity)ee.Entity; return (PlayerEntity)ee.Entity;
}
}
/// <summary> /// <summary>
/// Calls First(), which will throw an exception if no player with such ID exists /// Calls First(), which will throw an exception if no player with such ID exists
/// </summary> /// </summary>
/// <param name="ID"></param> /// <param name="ID"></param>
/// <returns></returns> /// <returns></returns>
public PlayerEntity GetOneByID(Guid ID) public PlayerEntity GetOneByID(Guid ID)
{ {
return db.Players!.First(p => p.ID == ID); return db.Players!.First(p => p.ID == ID);
} }
} }
} }

@ -79,6 +79,20 @@ namespace Tests.Model_UTs.Games
Assert.DoesNotContain(null, stubGameRunner.GetAll()); Assert.DoesNotContain(null, stubGameRunner.GetAll());
} }
[Fact]
public void TestGetOneByIdThrowsException()
{
// Arrange
GameRunner gameRunner = stubGameRunner;
// Act
void action() => gameRunner.GetOneByID(new("62bb72e6-f9fb-442e-a879-e1b70f8f52f3"));
// Assert
Assert.Throws<NotImplementedException>(action);
}
[Theory] [Theory]
[InlineData("")] [InlineData("")]
[InlineData(null)] [InlineData(null)]

@ -76,6 +76,21 @@ namespace Tests.Model_UTs.Players
Assert.Throws<ArgumentException>(action); Assert.Throws<ArgumentException>(action);
} }
[Fact]
public void TestGetOneByIdThrowsException()
{
// Arrange
PlayerManager playerManager = new();
// Act
void action() => playerManager.GetOneByID(new("1a276327-75fc-45b9-8854-e7c4101088f8"));
// Assert
Assert.Throws<NotImplementedException>(action);
}
[Theory] [Theory]
[InlineData("")] [InlineData("")]
[InlineData(null)] [InlineData(null)]

Loading…
Cancel
Save