diff --git a/Sources/Model/Dice/DiceGroupManager.cs b/Sources/Model/Dice/DiceGroupManager.cs index 1d0ccc5..9efbbb5 100644 --- a/Sources/Model/Dice/DiceGroupManager.cs +++ b/Sources/Model/Dice/DiceGroupManager.cs @@ -23,6 +23,21 @@ namespace Model.Dice } diceGroups.Add(new(toAdd.Name.Trim(), toAdd.Dice)); return Task.FromResult(toAdd); + } + + public Task AddCheckName(DiceGroup toAdd) + { + if (string.IsNullOrWhiteSpace(toAdd.Name)) + { + throw new ArgumentNullException(nameof(toAdd), "param should not be null or empty"); + + } + if (diceGroups.Where(d => d.Name.Equals(toAdd.Name)).Any()) + { + throw new ArgumentException("this dice group already exists", nameof(toAdd)); + } + diceGroups.Add(new(toAdd.Name.Trim(), toAdd.Dice)); + return Task.FromResult(toAdd); } public Task> GetAll() diff --git a/Sources/Tests/Data_UTs/Dice/DiceGroupManagerTest.cs b/Sources/Tests/Data_UTs/Dice/DiceGroupManagerTest.cs index b0fe4a3..7b7c87e 100644 --- a/Sources/Tests/Data_UTs/Dice/DiceGroupManagerTest.cs +++ b/Sources/Tests/Data_UTs/Dice/DiceGroupManagerTest.cs @@ -1,22 +1,22 @@ -using Data; -using Data.EF; -using Microsoft.Data.Sqlite; -using Microsoft.EntityFrameworkCore; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using Model.Dice; -using Model.Dice.Faces; -using Model.Games; -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Xunit; - -namespace Tests.Data_UTs.Dice -{ - public class DiceGroupManagerTest +using Data; +using Data.EF; +using Microsoft.Data.Sqlite; +using Microsoft.EntityFrameworkCore; +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Model.Dice; +using Model.Dice.Faces; +using Model.Games; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Xunit; + +namespace Tests.Data_UTs.Dice +{ + public class DiceGroupManagerTest { private static readonly Task stubGameRunner = new Stub().LoadApp(); [Fact] @@ -43,18 +43,18 @@ namespace Tests.Data_UTs.Dice public async Task TestAddWhenDiceGroupThenDoAddAndReturnDiceGroup() { // Arrange - DiceGroupManager dgm = new(); - DiceGroup group1 = new("Monopoly", new List { new NumberDie(new NumberFace(5), new NumberFace(7)), new NumberDie(new NumberFace(5), new NumberFace(7)) }); + DiceGroupManager dgm = new(); + DiceGroup group1 = new("Monopoly", new List { new NumberDie(new NumberFace(5), new NumberFace(7)), new NumberDie(new NumberFace(5), new NumberFace(7)) }); DiceGroup group2 = new("Scrabble", new List { new NumberDie(new NumberFace(5), new NumberFace(7)), new NumberDie(new NumberFace(5), new NumberFace(7)) }); //...storing the results of DiceGroupManager.Add() in variables - Collection expected = new() {group1,group2 }; - Collection actual = new() - { - await dgm.Add(group1), - await dgm.Add(group2) - }; - // Assert + Collection expected = new() {group1,group2 }; + Collection actual = new() + { + await dgm.Add(group1), + await dgm.Add(group2) + }; + // Assert Xunit.Assert.Equal(expected, actual); Xunit.Assert.Equal(expected, actual); } @@ -68,8 +68,8 @@ namespace Tests.Data_UTs.Dice async Task actionAsync() => await dgm.Add(expected);// Add() returns the added element if succesful // Assert - Xunit.Assert.Null(expected); - await Xunit.Assert.ThrowsAsync(actionAsync); + Xunit.Assert.Null(expected); + await Xunit.Assert.ThrowsAsync(actionAsync); Xunit.Assert.DoesNotContain(expected, await dgm.GetAll()); } [Fact] @@ -77,13 +77,13 @@ namespace Tests.Data_UTs.Dice { DiceGroupManager dgm = new(); - await dgm.Add(new("Monopoly", new List { new NumberDie(new NumberFace(5), new NumberFace(7)), new NumberDie(new NumberFace(5), new NumberFace(7)) })); + await dgm.AddCheckName(new("Monopoly", new List { new NumberDie(new NumberFace(5), new NumberFace(7)), new NumberDie(new NumberFace(5), new NumberFace(7)) })); DiceGroup group1 = new("Monopoly", new List { new NumberDie(new NumberFace(5), new NumberFace(7)), new NumberDie(new NumberFace(5), new NumberFace(7)) }); - async Task actionAsync() => await dgm.Add(group1); + async Task actionAsync() => await dgm.AddCheckName(group1); // Assert - await Xunit.Assert.ThrowsAsync(actionAsync); + await Xunit.Assert.ThrowsAsync(actionAsync); } @@ -112,7 +112,7 @@ namespace Tests.Data_UTs.Dice DiceGroup toAdd = new("Monopoly", new List { new NumberDie(new NumberFace(5), new NumberFace(7)), new NumberDie(new NumberFace(5), new NumberFace(7)) }); await dgm.Add(toAdd); - async Task action() => dgm.GetOneByName(name); + async Task action() => await dgm.GetOneByName(name); // Assert await Xunit.Assert.ThrowsAsync(action); @@ -237,5 +237,5 @@ namespace Tests.Data_UTs.Dice - } -} + } +}