public void Delete_ThrowsArgumentException_WhenSuppliersAreRelatedToTheCity() { // Arrange var cities = new List <City> { new City { Name = "TestCity1", Id = 1 }, new City { Name = "TestCity2", Id = 2 } }.AsQueryable(); var suppliers = new List <Supplier> { new Supplier { Name = "TestSupplier1", CityId = 1 } }.AsQueryable(); var citymockDbSet = new Mock <DbSet <City> >(); citymockDbSet.As <IQueryable <City> >().Setup(m => m.Provider).Returns(cities.Provider); citymockDbSet.As <IQueryable <City> >().Setup(m => m.Expression).Returns(cities.Expression); citymockDbSet.As <IQueryable <City> >().Setup(m => m.ElementType).Returns(cities.ElementType); citymockDbSet.As <IQueryable <City> >().Setup(m => m.GetEnumerator()).Returns(cities.GetEnumerator()); var suppliermockDbSet = new Mock <DbSet <Supplier> >(); suppliermockDbSet.As <IQueryable <Supplier> >().Setup(m => m.Provider).Returns(suppliers.Provider); suppliermockDbSet.As <IQueryable <Supplier> >().Setup(m => m.Expression).Returns(suppliers.Expression); suppliermockDbSet.As <IQueryable <Supplier> >().Setup(m => m.ElementType).Returns(suppliers.ElementType); suppliermockDbSet.As <IQueryable <Supplier> >().Setup(m => m.GetEnumerator()).Returns(suppliers.GetEnumerator()); var mockContext = new Mock <EazyCartContext>(); mockContext.Setup(c => c.Cities).Returns(citymockDbSet.Object); mockContext.Setup(c => c.Suppliers).Returns(suppliermockDbSet.Object); var cityBusiness = new CityBusiness(mockContext.Object); // Act & Assert try { int idToDelete = 1; cityBusiness.Delete(idToDelete); Assert.Fail("No exception was thrown."); } catch (ArgumentException ex) { string expectedMessage = string.Format("One or more suppliers are related to this city."); Assert.AreEqual(expectedMessage, ex.Message, "Wrong exception was thrown."); } }
public void Delete_SuccessfullyDeletesCity_WhenNoSuppliersAreRelated() { // Arrange var cities = new List <City> { new City { Name = "TestCity1", Id = 1 }, new City { Name = "TestCity2", Id = 2 } }.AsQueryable(); var suppliers = new List <Supplier> { new Supplier { Name = "TestSupplier1", CityId = 1 } }.AsQueryable(); var citymockDbSet = new Mock <DbSet <City> >(); citymockDbSet.As <IQueryable <City> >().Setup(m => m.Provider).Returns(cities.Provider); citymockDbSet.As <IQueryable <City> >().Setup(m => m.Expression).Returns(cities.Expression); citymockDbSet.As <IQueryable <City> >().Setup(m => m.ElementType).Returns(cities.ElementType); citymockDbSet.As <IQueryable <City> >().Setup(m => m.GetEnumerator()).Returns(cities.GetEnumerator()); var suppliermockDbSet = new Mock <DbSet <Supplier> >(); suppliermockDbSet.As <IQueryable <Supplier> >().Setup(m => m.Provider).Returns(suppliers.Provider); suppliermockDbSet.As <IQueryable <Supplier> >().Setup(m => m.Expression).Returns(suppliers.Expression); suppliermockDbSet.As <IQueryable <Supplier> >().Setup(m => m.ElementType).Returns(suppliers.ElementType); suppliermockDbSet.As <IQueryable <Supplier> >().Setup(m => m.GetEnumerator()).Returns(suppliers.GetEnumerator()); var mockContext = new Mock <EazyCartContext>(); mockContext.Setup(c => c.Cities).Returns(citymockDbSet.Object); mockContext.Setup(c => c.Suppliers).Returns(suppliermockDbSet.Object); var cityBusiness = new CityBusiness(mockContext.Object); // Act int idToDelete = 2; cityBusiness.Delete(idToDelete); // Assert citymockDbSet.Verify(m => m.Remove(It.IsAny <City>()), Times.Once()); mockContext.Verify(m => m.SaveChanges(), Times.Once()); }