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_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); }
public void CreateAd_Should_Successfully_Add_To_Repository() { var ads = new List <Ad>(); var fakeUser = _mocks.ApplicationUserRepoMock.Object.All() .FirstOrDefault(); if (fakeUser == null) { Assert.Fail("No users to perform the test with."); } _mocks.AdRepoMock .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.AdRepoMock.Object); mockContext.Setup(c => c.AdTypes) .Returns(this._mocks.AdTypeRepoMock.Object); mockContext.Setup(c => c.Categories) .Returns(this._mocks.CategoryRepoMock.Object); mockContext.Setup(c => c.Users) .Returns(this._mocks.ApplicationUserRepoMock.Object); var mockIdProvider = new Mock <IUserIdProvider>(); mockIdProvider.Setup(ip => ip.GetUserId()) .Returns(fakeUser.Id); var adsController = new AdsController(mockContext.Object, mockIdProvider.Object); this.SetupController(adsController); var randomName = Guid.NewGuid().ToString(); var newAdd = new CreateAdBindingModel { Name = randomName, Price = 555, TypeId = 1, Description = "Sample text", Categories = new[] { 1, 2, 3 } }; var response = adsController.CreateAd(newAdd) .ExecuteAsync(CancellationToken.None) .Result; Assert.AreEqual(response.StatusCode, HttpStatusCode.OK); mockContext.Verify(c => c.SaveChanges(), Times.Once); Assert.AreEqual(ads.Count, 1); Assert.AreEqual(ads[0].Name, randomName); }
public void CreateAd_Should_Successfully_Add_To_Repository() { var ads = new List<Ad>(); var fakeUser = this.mocks.UserRepositoryMock.Object.All() .FirstOrDefault(); if (fakeUser == null) { Assert.Fail("Cannot perform test - no user 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.AdTypes) .Returns(this.mocks.AdTypeRepositoryMock.Object); mockContext.Setup(c => c.Categories) .Returns(this.mocks.CategoryRepositoryMock.Object); mockContext.Setup(c => c.Users) .Returns(this.mocks.UserRepositoryMock.Object); var mockIdProvider = new Mock<IUserIdProvider>(); mockIdProvider.Setup(ip => ip.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 = "Nothing much to say", 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(newAd.Name, ads[0].Name); }