예제 #1
0
        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 mockContext = new Mock <IOnlineShopData>();

            mockContext.Setup(c => c.Ads)
            .Returns(this.mocks.AdRepositoryMock.Object);

            var mockUserIdProvider = new Mock <IUserIdProvider>();

            mockUserIdProvider.Setup(uip => uip.GetUserId())
            .Returns(openAd.OwnerId);

            var adsController = new AdsController(mockContext.Object, mockUserIdProvider.Object);

            this.SetupController(adsController);

            var response = adsController.CloseAd(openAd.Id)
                           .ExecuteAsync(CancellationToken.None).Result;

            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            mockContext.Verify(c => c.SaveChanges(), Times.Once);
            Assert.IsNotNull(openAd.ClosedOn);
            Assert.AreEqual(AdStatus.Closed, openAd.Status);
        }
예제 #2
0
        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);
        }
        public void CloseAd_AsNotAdOwner_ShouldReturn400BadRequest()
        {
            // Arrange
            var fakeAds = this.mockContainer.AdRepositoryMock.Object.All();

            // Act
            var openAd = fakeAds.FirstOrDefault(a => a.Status == AdStatus.Open);

            if (openAd == null)
            {
                Assert.Fail("Cannot perform test, because there are no open ads.");
            }

            var mockContext = new Mock <IOnlineShopData>();

            mockContext.Setup(c => c.Ads).Returns(this.mockContainer.AdRepositoryMock.Object);

            var mockProvider    = new Mock <IUserIdProvider>();
            var fakeUsers       = this.mockContainer.ApplicationUserRepositoryMock.Object.All();
            var nonExistingUser = fakeUsers.FirstOrDefault();

            mockProvider.Setup(ip => ip.GetUserId()).Returns(nonExistingUser.Id);
            var adsController = new AdsController(mockContext.Object, mockProvider.Object);

            this.SetupController(adsController);

            var httpResponse = adsController.CloseAd(openAd.Id).ExecuteAsync(CancellationToken.None).Result;

            // Assert
            Assert.AreEqual(HttpStatusCode.BadRequest, httpResponse.StatusCode);
            Assert.AreEqual(AdStatus.Open, openAd.Status);
            Assert.IsNull(openAd.ClosedOn);
        }
        public void ClosingAdd_AsOwner_ShouldReturn200Ok()
        {
            // Arrange
            var fakeAds = this.mockContainer.AdRepositoryMock.Object.All();

            // Act
            var openAd = fakeAds.FirstOrDefault(a => a.Status == AdStatus.Open);

            if (openAd == null)
            {
                Assert.Fail("Cannot perform test there is no open ads.");
            }

            var adId        = openAd.Id;
            var mockContext = new Mock <IOnlineShopData>();

            mockContext.Setup(c => c.Ads).Returns(this.mockContainer.AdRepositoryMock.Object);
            var mockProvider = new Mock <IUserIdProvider>();

            mockProvider.Setup(ip => ip.GetUserId()).Returns(openAd.OwnerId);

            var adsController = new AdsController(mockContext.Object, mockProvider.Object);

            this.SetupController(adsController);
            var httpResponse = adsController.CloseAd(adId).ExecuteAsync(CancellationToken.None).Result;

            // Assert
            mockContext.Verify(c => c.SaveChanges(), Times.Once);
            Assert.AreEqual(AdStatus.Closed, openAd.Status);
            Assert.IsNotNull(openAd.ClosedOn);
        }
예제 #5
0
        public void CloseAdAsNonOwnerShouldReturn401Unauthorized()
        {
            var fakeAds = this.mocks.AdRepositoryMock.Object.All();
            var openAd = fakeAds.FirstOrDefault(a => a.Status == AdStatus.Open);

            if (openAd == null)
            {
                Assert.Fail("Cannot perform test - no open ads available.");
            }

            var adId = openAd.Id;
            var fakeUsers = this.mocks.ApplicationUserRepositoryMock.Object.All();
            var foreignUser = fakeUsers.FirstOrDefault(u => u.Id != openAd.OwnerId);
            var mockContext = new Mock<IOnlineShopData>();

            mockContext
                .Setup(c => c.Ads)
                .Returns(this.mocks.AdRepositoryMock.Object);

            var mockIdProvider = new Mock<IUserIdProvider>();

            mockIdProvider
                .Setup(ip => ip.GetUserId())
                .Returns(foreignUser.Id);

            var adsController = new AdsController(mockContext.Object, mockIdProvider.Object);

            this.SetupController(adsController);

            var response = adsController.CloseAd(adId)
                .ExecuteAsync(CancellationToken.None).Result;

            Assert.AreEqual(HttpStatusCode.Unauthorized, response.StatusCode);

            mockContext.Verify(c => c.SaveChanges(), Times.Never);

            Assert.AreEqual(openAd.Status, AdStatus.Open);
        }
예제 #6
0
        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 adId = openAd.Id;

            var mockContext = new Mock<IOnlineShopData>();
            mockContext.Setup(c => c.Ads)
                .Returns(this.mocks.AdRepositoryMock.Object);

            var mockIdProvider = new Mock<IUserIdProvider>();
            mockIdProvider.Setup(ip => ip.GetUserId())
                .Returns(openAd.Owner.Id);

            var adsController = new AdsController(mockContext.Object, mockIdProvider.Object);
            this.SetupController(adsController);

            var response = adsController.CloseAd(adId)
                .ExecuteAsync(CancellationToken.None).Result;

            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            mockContext.Verify(c => c.SaveChanges(), Times.Once);
            Assert.IsTrue(openAd.ClosedOn != null);
            Assert.AreEqual(AdStatus.Closed, openAd.Status);
        }