public void CreateAd_Should_Succsessfully_Add_To_Repository() { // Arrange var ads = new List<Ad>(); var fakeUser = this.mocks.UserRepositoryMock.Object.All() .FirstOrDefault(); if (fakeUser == null) { Assert.Fail("Cannot perform test - no users available."); } this.mocks.AdRepositoryMock .Setup(r => r.Add(It.IsAny<Ad>())) .Callback((Ad ad) => { ad.Owner = fakeUser; ads.Add(ad); }); var mockContext = new Mock<IOnlineShopData>(); mockContext.Setup(c => c.Ads) .Returns(this.mocks.AdRepositoryMock.Object); mockContext.Setup(c => c.Categories) .Returns(this.mocks.CategoryRepositoryMock.Object); mockContext.Setup(c => c.Users) .Returns(this.mocks.UserRepositoryMock.Object); mockContext.Setup(c => c.AdTypes) .Returns(this.mocks.AdTypeRepositoryMock.Object); var mockUserIdProvider = new Mock<IUserIdProvider>(); mockUserIdProvider.Setup(uip => uip.GetUserId()) .Returns(fakeUser.Id); var adsController = new AdsController(mockContext.Object, mockUserIdProvider.Object); this.SetupController(adsController); var randomName = Guid.NewGuid().ToString(); var newAd = new CreateAdBindingModel { Name = randomName, Price = 555, TypeId = 1, Description = "Some description.", Categories = new[] { 3, 1, 99 } }; var response = adsController.CreateAd(newAd) .ExecuteAsync(CancellationToken.None).Result; Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); mockContext.Verify(c => c.SaveChanges(), Times.Once); Assert.AreEqual(1, ads.Count); Assert.AreEqual(newAd.Name, ads[0].Name); }
public void CreateAd_ShouldAddNewlyCreatedAd() { var ads = new List<Ad>(); var fakeUser = this.mockContainer.UserRepositoryMock.Object.All().FirstOrDefault(); if (fakeUser == null) { Assert.Fail("Cannot perform test - no users available."); } this.mockContainer.AdRepositoryMock .Setup(r => r.Add(It.IsAny<Ad>())) .Callback((Ad ad) => { ad.Owner = fakeUser; ads.Add(ad); }); var fakeCat = mockContainer.CategoryRepositoryMock.Object.All(); var fakeAdTypes = mockContainer.AdTypeRepositoryMock.Object.All(); var fakeUsers = mockContainer.UserRepositoryMock.Object.All(); var mockContext = new Mock<IOnlineShopData>(); mockContext.Setup(r => r.Ads.All()).Returns(ads.AsQueryable()); mockContext.Setup(r => r.Ads.Add(It.IsAny<Ad>())).Callback((Ad ad) => ads.Add(ad)); mockContext.Setup(r => r.Categories.All()).Returns(fakeCat.AsQueryable()); mockContext.Setup(r => r.AdTypes.All()).Returns(fakeAdTypes.AsQueryable()); mockContext.Setup(r => r.Users.All()).Returns(fakeUsers.AsQueryable()); var mockIdProvider = new Mock<IUserIdProvider>(); mockIdProvider.Setup(r => r.GetUserId()).Returns(fakeUser.Id); var adsController = new AdsController(mockContext.Object, mockIdProvider.Object); this.SetupController(adsController); var randomName = Guid.NewGuid().ToString(); var newAd = new CreateAdBindingModel() { Name = randomName, Price = 555, TypeId = 1, Description = "Testing testing", Categories = new[] { 1, 2, 3 } }; var response = adsController.CreateAd(newAd).ExecuteAsync(CancellationToken.None).Result; Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); mockContext.Verify(c => c.SaveChanges(), Times.Once); Assert.AreEqual(1, ads.Count); Assert.AreEqual(randomName, ads.First().Name); }
public void CreateAd_WithCorrectData_ShouldSuccessfullyAddAdInRepository() { // Arrange var ads = new List<Ad>(); // Act var mockContext = new Mock<IOnlineShopData>(); var fakeAds = this.mockContainer.AdRepositoryMock.Object.All(); var fakeAdTypes = this.mockContainer.AdTypeRepositoryMock.Object.All(); var fakeCategories = this.mockContainer.CategoryRepositoryMock.Object.All(); var fakeUsers = this.mockContainer.ApplicationUserRepositoryMock.Object.All(); mockContext.Setup(r => r.Ads).Returns(this.mockContainer.AdRepositoryMock.Object); mockContext.Setup(r => r.AdTypes).Returns(this.mockContainer.AdTypeRepositoryMock.Object); mockContext.Setup(r => r.Categories).Returns(this.mockContainer.CategoryRepositoryMock.Object); mockContext.Setup(r => r.ApplicationUsers).Returns(this.mockContainer.ApplicationUserRepositoryMock.Object); var fakeUser = this.mockContainer.ApplicationUserRepositoryMock.Object.All().FirstOrDefault(); var mockIdProvider = new Mock<IUserIdProvider>(); if (fakeUser == null) { Assert.Fail("Cannot perform test no users available."); } mockIdProvider.Setup(r => r.GetUserId()).Returns(fakeUser.Id); var adsController = new AdsController(mockContext.Object, mockIdProvider.Object); this.SetupController(adsController); this.mockContainer.AdRepositoryMock.Setup(r => r.Add(It.IsAny<Ad>())) .Callback((Ad ad) => { // ad.Id = 10; // Uncomment if id is required in the test ad.Owner = fakeUser; ads.Add(ad); }); var randomName = Guid.NewGuid().ToString(); var newAd = new CreateAdBindingModel() { Name = randomName, Price = 555, TypeId = 1, Description = "Put description here", Categories = new[] { 1, 2 } }; var httpResponse = adsController.CreateAd(newAd).ExecuteAsync(CancellationToken.None).Result; // Assert mockContext.Verify(c => c.SaveChanges(), Times.Once); Assert.AreEqual(1, ads.Count); Assert.AreEqual(ads[0].Name, newAd.Name); }