Example #1
0
        public async Task CallWebServiceGet_RateLimitOff_Success()
        {
            // arrange
            var URL = new Uri("http://fake/url");

            _mockRateLimit.Setup(x => x.IsTurnedOn).Returns(false);

            var card = new CardDto()
            {
                Id = "12345"
            };
            var rootCard = new RootCardDto()
            {
                Card = card,
            };

            using var httpTest = new HttpTest();
            httpTest.RespondWithJson(rootCard);

            _mockHeaderManager.Setup(x => x.Update(It.IsAny <IReadOnlyNameValueList <string> >()));

            var service = new ServiceBaseTestObject(
                _mockHeaderManager.Object,
                _mockModelMapper.Object,
                _mockRateLimit.Object);

            // act
            var result = await service.CallWebServiceGetTestMethod(URL);

            // assert
            Assert.Equal(card.Id, result.Card.Id);
        }
        public async Task FindAsync_ByMultiverseId_Success()
        {
            // arrange
            const string CARD_NAME = "cardname1";

            _mockRateLimit.Setup(x => x.IsTurnedOn).Returns(false);

            _mockHeaderManager.Setup(x => x.Update(It.IsAny <IReadOnlyNameValueList <string> >()));
            _mockHeaderManager.Setup(x => x.Get <int>(ResponseHeader.TotalCount)).Returns(2000);
            _mockHeaderManager.Setup(x => x.Get <int>(ResponseHeader.PageSize)).Returns(1000);

            var cardDto = new CardDto()
            {
                Name = CARD_NAME
            };
            var rootCardList = new RootCardDto()
            {
                Card = cardDto,
            };

            _mockModelMapper.Setup(x => x.MapCard(It.IsAny <CardDto>())).Returns(new Card()
            {
                Name = CARD_NAME
            });

            using var httpTest = new HttpTest();
            httpTest.RespondWithJson(rootCardList);

            var service = new CardService(
                _mockHeaderManager.Object,
                _mockModelMapper.Object,
                ApiVersion.V1,
                _mockRateLimit.Object);

            // act
            var result = await service.FindAsync(12345);

            // assert
            Assert.True(result.IsSuccess);
            _mockRepository.VerifyAll();
        }
        public async Task FindAsync_Exception_ReturnsFailure()
        {
            // arrange
            const string CARD_NAME = "cardname1";

            _mockRateLimit.Setup(x => x.IsTurnedOn).Returns(false);

            _mockHeaderManager.Setup(x => x.Update(It.IsAny <IReadOnlyNameValueList <string> >()));

            var cardDto = new CardDto()
            {
                Name = CARD_NAME
            };
            var rootCardList = new RootCardDto()
            {
                Card = cardDto,
            };

            _mockModelMapper.Setup(x => x.MapCard(It.IsAny <CardDto>())).Throws(new Exception());

            using var httpTest = new HttpTest();
            httpTest.RespondWithJson(rootCardList);

            var service = new CardService(
                _mockHeaderManager.Object,
                _mockModelMapper.Object,
                ApiVersion.V1,
                _mockRateLimit.Object);

            // act
            var result = await service.FindAsync("12345");

            // assert
            Assert.False(result.IsSuccess);
            _mockRepository.VerifyAll();
        }
        public async Task CallWebServiceGet_RateLimitOn_Success()
        {
            // arrange
            var URL = new Uri("http://fake/url");

            _mockRateLimit.Setup(x => x.IsTurnedOn).Returns(true);
            _mockRateLimit.Setup(x => x.Delay(2000, default)).ReturnsAsync(1);
            _mockRateLimit.Setup(x => x.AddApiCall());

            var card = new CardDto()
            {
                Id = "12345"
            };
            var rootCard = new RootCardDto()
            {
                Card = card,
            };

            using var httpTest = new HttpTest();
            httpTest.RespondWithJson(rootCard);

            _mockHeaderManager.Setup(x => x.Update(It.IsAny <IReadOnlyNameValueList <string> >()));
            _mockHeaderManager.Setup(x => x.Get <int>(ResponseHeader.RatelimitLimit)).Returns(2000);

            var service = new ServiceBaseTestObject(
                _mockHeaderManager.Object,
                _mockModelMapper.Object,
                _mockRateLimit.Object);

            // act
            var result = await service.CallWebServiceGetTestMethod(URL);

            // assert
            Assert.Equal(card.Id, result.Card.Id);
            _mockRepository.VerifyAll();
        }