Exemplo n.º 1
0
        //Mock API Call and unit test for the API call with returning mock RecentStatementList.
        public async Task RecentStatementControllerTest_Success()
        {
            // Arrange
            string merchantNbr = "542929801430265";

            MockRecentStatementRepository mockRecentStatementRepository = new MockRecentStatementRepository();
            ApiResult <ICollection <Wp.CIS.LynkSystems.Model.RecentStatement> > expectedResult = mockRecentStatementRepository.GetMockData();

            IDistributedCache          mockCache  = Substitute.For <IDistributedCache>();
            ILoggingFacade             fakeLogger = FakeLogger();
            IRecentStatementRepository mockRepo   = Substitute.For <IRecentStatementRepository>();
            IStringLocalizer <RecentStatementController> localizer
                = Substitute.For <IStringLocalizer <RecentStatementController> >();
            IRecentStatementApi mockRecentStatementApi = Substitute.For <IRecentStatementApi>();

            IOperation fakeOperation = Substitute.For <Operation>(mockCache);

            fakeOperation.WhenForAnyArgs(x => x.RetrieveCache(Arg.Any <string>(), Arg.Any <ICollection <Wp.CIS.LynkSystems.Model.RecentStatement> >())).DoNotCallBase();
            fakeOperation.WhenForAnyArgs(x => x.AddCacheAsync(Arg.Any <string>(), Arg.Any <ICollection <Wp.CIS.LynkSystems.Model.RecentStatement> >())).DoNotCallBase();
            RecentStatementController controller = new RecentStatementController(mockCache, mockRecentStatementApi, localizer, fakeOperation, fakeLogger);

            mockRecentStatementApi.GetRecentStatementAsync(merchantNbr).ReturnsForAnyArgs(expectedResult);
            // Act
            var recentStatementList = await controller.GetRecentStatement(merchantNbr);

            var actualRecord = ((Microsoft.AspNetCore.Mvc.ObjectResult)recentStatementList).Value;

            // Assert
            Assert.Equal(((IList <Wp.CIS.LynkSystems.Model.RecentStatement>)actualRecord).Count, 1);
            Assert.Equal(actualRecord, expectedResult.Result);
        }
Exemplo n.º 2
0
        public async Task RecentStatementControllerTest_RetrievalFromCache_AvailableInCache()
        {
            // Arrange
            string merchantNbr = "542929801430265";

            string key = merchantNbr;
            MockRecentStatementRepository repository = new MockRecentStatementRepository();
            var expectedResult = repository.GetMockData();

            IDistributedCache          mockCache   = FakeCache();
            ILoggingFacade             fakeLogger  = FakeLogger();
            IRecentStatementRepository mockRepo    = Substitute.For <IRecentStatementRepository>();
            IOptions <Settings>        appSettings = Substitute.For <IOptions <Settings> >();
            IRecentStatementApi        dAPI        = new RecentStatementApi(appSettings, mockRepo);

            var localizer = new MockStringLocalizer <RecentStatementController>();

            localizer[0] = new LocalizedString("GenericError", "Error occured");
            IOperation fakeOperation = Substitute.For <Operation>(mockCache);

            fakeOperation.RetrieveCache(key, Arg.Any <List <Wp.CIS.LynkSystems.Model.RecentStatement> >()).ReturnsForAnyArgs(expectedResult.Result);

            //since no data in cache, now call the controller. The controller retrieves data and also adds to cache
            RecentStatementController controller = new RecentStatementController(mockCache, dAPI, localizer, fakeOperation, fakeLogger);
            // Act
            //Retrieve the data from controller and also check for the data in the cache.
            var merchantNumber = await controller.GetRecentStatement(merchantNbr);

            var actualRecord = ((Microsoft.AspNetCore.Mvc.ObjectResult)merchantNumber).Value;

            // Assert
            // Check the retrieved data
            // Make sure the data retrieved from controller is same as the data from the cache
            Assert.Equal(JsonConvert.SerializeObject(actualRecord), JsonConvert.SerializeObject(expectedResult.Result));
        }
Exemplo n.º 3
0
        public async System.Threading.Tasks.Task RecentStatementApiTest_ExceptionAsync()

        {
            // Arrange
            string merchantNbr = "542929801430265";
            MockRecentStatementRepository mockRecentStatementRepository = new MockRecentStatementRepository();
            ApiResult <ICollection <Wp.CIS.LynkSystems.Model.RecentStatement> > expectedResult = mockRecentStatementRepository.GetMockData();

            IOptions <Settings>        optionsAccessor = Substitute.For <IOptions <Settings> >();
            IRecentStatementRepository mockRepo        = Substitute.For <IRecentStatementRepository>();

            IRecentStatementApi api = Substitute.For <IRecentStatementApi>();

            mockRepo.GetRecentStatementAsync(merchantNbr).Throws(new Exception());

            api = new RecentStatementApi(optionsAccessor, mockRepo);

            //Assert
            await Assert.ThrowsAsync <Exception>(() => api.GetRecentStatementAsync(merchantNbr));
        }
Exemplo n.º 4
0
        public void RecentStatementRepositoryTest_Success()
        {
            // Arrange
            string merchantNbr = "542929801430265";
            MockRecentStatementRepository mockRecentStatementRepository = new MockRecentStatementRepository();
            ApiResult <ICollection <Wp.CIS.LynkSystems.Model.RecentStatement> > expectedResult = mockRecentStatementRepository.GetMockData();

            IOptions <DataContext>     optionsAccessor   = Substitute.For <IOptions <DataContext> >();
            IDatabaseConnectionFactory connectionFactory = Substitute.For <IDatabaseConnectionFactory>();
            IRecentStatementRepository mockRepo          = Substitute.For <IRecentStatementRepository>();

            mockRepo.GetRecentStatementAsync(merchantNbr).ReturnsForAnyArgs(expectedResult.Result);

            // Act
            var recentStatementList = mockRepo.GetRecentStatementAsync(merchantNbr).Result;
            var actualRecord        = (IList <Wp.CIS.LynkSystems.Model.RecentStatement>)recentStatementList;

            //// Assert
            Assert.Equal((actualRecord).Count, 1);
            Assert.Equal(actualRecord, expectedResult.Result);
        }
Exemplo n.º 5
0
 public RecentStatementApi(IOptions <Settings> optionsAccessor, IRecentStatementRepository recentStatementRepository)
 {
     _recentStatementRepository = recentStatementRepository;
 }