public void Close_Ad_As_NonOwner_Should_Return_400BadRequest() { var fakeAds = this.mocks.AdRepositoryMock.Object.All(); var fakeUsers = this.mocks.UserRepositoryMock.Object.All(); var openAd = fakeAds.FirstOrDefault(a => a.Status == AdStatus.Open); if (openAd == null) { Assert.Fail("Cannot perform test - no open ads exist."); } var openAdOwnerId = openAd.OwnerId; var fakeForeignUser = fakeUsers.FirstOrDefault(u => u.Id != openAdOwnerId); if (fakeForeignUser == null) { Assert.Fail("Cannot perform test - no foreign user available."); } var fakeForeignUserId = fakeForeignUser.Id; var openAdId = openAd.Id; var mockIdProvider = new Mock<IUserIdProvider>(); mockIdProvider.Setup(ip => ip.GetUserId()) .Returns(fakeForeignUserId); var mockContext = new Mock<IOnlineShopData>(); mockContext.Setup(c => c.Ads).Returns(this.mocks.AdRepositoryMock.Object); var adsController = new AdsController(mockContext.Object, mockIdProvider.Object); this.ConfigureController(adsController); var response = adsController.Close(openAdId).ExecuteAsync(CancellationToken.None).Result; Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode); mockContext.Verify(c => c.SaveChanges(), Times.Never); Assert.AreEqual(AdStatus.Open, openAd.Status); }
public void Closing_Ad_As_Owner_Should_Return_200OK() { var fakeAds = this.mocks.AdRepositoryMock.Object.All(); var openAd = fakeAds.FirstOrDefault(ad => ad.Status == AdStatus.Open); if (openAd == null) { Assert.Fail("Cannot perform test - no open ads available."); } var openAdId = openAd.Id; var mockContext = new Mock<IOnlineShopData>(); mockContext.Setup(c => c.Ads) .Returns(this.mocks.AdRepositoryMock.Object); var mockIdProvider = new Mock<IUserIdProvider>(); mockIdProvider.Setup(p => p.GetUserId()) .Returns(openAd.OwnerId); var adsController = new AdsController(mockContext.Object, mockIdProvider.Object); this.ConfigureController(adsController); var response = adsController.Close(openAdId).ExecuteAsync(CancellationToken.None).Result; Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); mockContext.Verify(c => c.SaveChanges(), Times.Once); Assert.AreNotEqual(openAd.ClosedOn, null); Assert.AreEqual(openAd.Status, AdStatus.Closed); }