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)); }
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)); }
public void RecentStatementApiTest_Success() { // 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).ReturnsForAnyArgs(expectedResult.Result); api = new RecentStatementApi(optionsAccessor, mockRepo); // Act var recentList = api.GetRecentStatementAsync(merchantNbr).Result; var actualRecord = (IList <Wp.CIS.LynkSystems.Model.RecentStatement>)recentList.Result; //// Assert Assert.Equal((actualRecord).Count, 1); Assert.Equal(actualRecord, expectedResult.Result); }