public AdminUnitTest()
{
// create some mock products to play with
List<AdminUnit> testAdminUnits = new List<AdminUnit>
{
new AdminUnit { AdminUnitID = 2, Name = "Tigray",AdminUnitTypeID = 2, ParentID = 1 },
new AdminUnit { AdminUnitID = 3, Name = "Amhara",AdminUnitTypeID = 2, ParentID = 1 },
new AdminUnit { AdminUnitID = 7, Name = "Semen Shewa",AdminUnitTypeID = 3, ParentID = 3 },
};
// Mock the AdminUNit Repository using Moq
Mock<IAdminUnitRepository> mockAdminUnitRepository = new Mock<IAdminUnitRepository>();
// Return all the AdminUNits
mockAdminUnitRepository.Setup(mr => mr.GetAll()).Returns(testAdminUnits);
// return the region of the specified zone
mockAdminUnitRepository.Setup(mr=>mr.GetRegionByZoneId(
It.IsAny<int>())).Returns((int i) => testAdminUnits.Where(x => x.AdminUnitID == i).Single().ParentID.Value);
//return Admin units whose type is of region
mockAdminUnitRepository.Setup(mr=>mr.GetRegions()).Returns(
testAdminUnits.Where(x => x.AdminUnitTypeID == 2).ToList());
//retrun childrens of Admin unit gien a ceratin id
mockAdminUnitRepository.Setup(mr=>mr.GetChildren(
It.IsAny<int>())).Returns((int i) => testAdminUnits.Where(x => x.ParentID == i).ToList());
// return a AdminUnit by Id
mockAdminUnitRepository.Setup(mr => mr.FindById(
It.IsAny<int>())).Returns((int i) => testAdminUnits.Where(x => x.AdminUnitID == i).Single());
//TODO mockAdminUnitRepository.Setup(mr=>mr.GetByUnitType )
// Allows us to test saving a AdminUNit
mockAdminUnitRepository.Setup(mr => mr.SaveChanges(It.IsAny<AdminUnit>())).Returns(
(AdminUnit target) =>
{
if (target.AdminUnitID.Equals(default(int)))
{
target.AdminUnitID = testAdminUnits.Count() + 1;
testAdminUnits.Add(target);
}
else
{
var original = testAdminUnits.Where(q => q.AdminUnitID == target.AdminUnitID).Single();
if (original == null)
{
return false;
}
original.Name = target.Name;
}
return true;
});
this.MockAdminUnitsRepository = mockAdminUnitRepository.Object;
}