-
Notifications
You must be signed in to change notification settings - Fork 0
Exercise 1 Unit Tests
DotNetNuclear edited this page Oct 30, 2020
·
1 revision
[TestMethod]
public void Edit_SavingItemWithSameName_DuplicateNameNotAllowed()
{
//arrange
mockStore = _MockStores.ItemRepositoryFake();
mockStore.Object.CreateItem(new MenuItem { MenuItemId = 1, ModuleId = 1, Name = "Item 1", Desc = "Item 1 Description", AddedByUserId = 0, DateAdded = DateTime.Now.AddDays(-1), ModifiedByUserId = 0, DateModified = DateTime.Now });
mockStore.Object.CreateItem(new MenuItem { MenuItemId = 2, ModuleId = 1, Name = "Item 2", Desc = "Item 2 Description", AddedByUserId = 0, DateAdded = DateTime.Now.AddDays(-1), ModifiedByUserId = 0, DateModified = DateTime.Now });
mockStore.Object.CreateItem(new MenuItem { MenuItemId = 3, ModuleId = 1, Name = "Item 3", Desc = "Item 3 Description", AddedByUserId = 0, DateAdded = DateTime.Now.AddDays(-1), ModifiedByUserId = 0, DateModified = DateTime.Now });
mockStore.Object.CreateItem(new MenuItem { MenuItemId = 4, ModuleId = 1, Name = "Item 4", Desc = "Item 4 Description", AddedByUserId = 0, DateAdded = DateTime.Now.AddDays(-1), ModifiedByUserId = 0, DateModified = DateTime.Now });
//act
var model = new MenuItem(mockStore.Object)
{
MenuItemId = -1,
ModuleId = 1,
Name = "Item 2"
};
var validationContext = new ValidationContext(model);
var results = model.Validate(validationContext);
//assert
Assert.AreEqual(results.Count(), 1);
Assert.AreEqual(results.First().ErrorMessage, "An item with this name already exists.");
}
public class MenuItem : IMenuItem, IValidatableObject
...
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (_menuItemLookupRepo == null)
{
_menuItemLookupRepo = new MenuItemRepository();
}
var items = _menuItemLookupRepo.GetItems(ModuleId);
bool nameExistsOnOtherItem = items.Any(i => i.MenuItemId != MenuItemId &&
i.Name.Equals(Name, StringComparison.CurrentCultureIgnoreCase));
if (nameExistsOnOtherItem)
{
yield return new ValidationResult("An item with this name already exists.", new[] { nameof(Name) });
}
}