public void GetAllAds_Should_Return_Total_Ads_Sorted_By_TypeIndex() { var fakeAds = this.mocks.AdRepositoryMock.Object.All(); var mockContext = new Mock<IOnlineShopData>(); mockContext.Setup(c => c.Ads).Returns(this.mocks.AdRepositoryMock.Object); var mockIdProvider = new Mock<IUserIdProvider>(); var adsController = new AdsController(mockContext.Object, mockIdProvider.Object); this.SetupController(adsController); var response = adsController.GetAds().ExecuteAsync(CancellationToken.None).Result; Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); var adsResponse = response.Content.ReadAsAsync<IEnumerable<AdViewModel>>().Result .Select(a => a.Id) .ToList(); var orderedFakeAds = fakeAds .OrderByDescending(a => a.Type.Index) .ThenBy(a => a.PostedOn) .Select(a => a.Id) .ToList(); CollectionAssert.AreEqual(orderedFakeAds, adsResponse); }
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.Users) .Returns(this.mocks.UserRepositoryMock.Object); mockContext.Setup(c => c.Categories) .Returns(this.mocks.CategoryRepositoryMock.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 AdBindingModel { Name = randomName, Price = 555, TypeId = 1, Description = "No description", Categories = new[] { 1 } }; 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[0].Name); }
public void Close_Ad_As_Non_Owner_Should_Return_400_Bad_Request() { var fakeAd = this.mocks.AdRepositoryMock.Object.All().FirstOrDefault(a => a.Status == AdStatus.Open); if (fakeAd == null) { Assert.Fail("Cannot perform test - no ad available."); } var mockContext = new Mock<IOnlineShopData>(); mockContext.Setup(c => c.Ads) .Returns(this.mocks.AdRepositoryMock.Object); var fakeUser = this.mocks.UserRepositoryMock.Object.All().FirstOrDefault(u => u.Id != fakeAd.OwnerId); if (fakeUser == null) { Assert.Fail("Cannot perform test - no user available."); } 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 response = adsController.CloseAd(fakeAd.Id).ExecuteAsync(CancellationToken.None).Result; Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode); mockContext.Verify(c => c.SaveChanges(), Times.Never); Assert.AreEqual(AdStatus.Open, fakeAd.Status); }
private void SetupController(AdsController adsController) { adsController.Request = new HttpRequestMessage(); adsController.Configuration = new HttpConfiguration(); }
public void Closing_Ads_As_Non_Owner_Should_Return_400BadRequest() { var fakeAd = this._mocks.AdRepoMock.Object.All() .FirstOrDefault(ad => ad.Status == AdStatus.Open); if (fakeAd == null) Assert.Fail("No ads available to perform the test."); var adId = fakeAd.Id; var mockContext = new Mock<IOnlineShopData>(); mockContext.Setup(c => c.Ads) .Returns(this._mocks.AdRepoMock.Object); var mockIdProvider = new Mock<IUserIdProvider>(); mockIdProvider.Setup(ip => ip.GetUserId()) .Returns("Ivan4o"); var adsController = new AdsController(mockContext.Object, mockIdProvider.Object); this.SetupController(adsController); var response = adsController.CloseAd(adId) .ExecuteAsync(CancellationToken.None).Result; Assert.AreEqual(response.StatusCode, HttpStatusCode.Unauthorized); mockContext.Verify(c => c.SaveChanges(), Times.Never); Assert.AreEqual(_mocks.AdRepoMock.Object.All().FirstOrDefault(ad => ad.Id == adId).Status, AdStatus.Open); }