DRMFSS.Test.AdminUnitTest.AdminUnitTest C# (CSharp) Method

AdminUnitTest() public method

public AdminUnitTest ( ) : System
return System
        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;
        }