public void RecentStatementControllerTest_ModelState_Invalid() { //Arrange string merchantNbr = "542929801430265"; MockRecentStatementRepository mockRecentStatementRepository = new MockRecentStatementRepository(); ApiResult <ICollection <Wp.CIS.LynkSystems.Model.RecentStatement> > expectedResult = mockRecentStatementRepository.GetMockData(); IStringLocalizer <RecentStatementController> localizer = Substitute.For <IStringLocalizer <RecentStatementController> >(); IRecentStatementApi recentStatementApi = Substitute.For <IRecentStatementApi>(); IDistributedCache mockCache = FakeCache(); ILoggingFacade fakeLogger = FakeLogger(); IOperation fakeOperation = Substitute.ForPartsOf <Operation>(mockCache); RecentStatementController controller = new RecentStatementController(mockCache, recentStatementApi, localizer, fakeOperation, fakeLogger); //Act controller.ModelState.AddModelError("key", "error message"); var result = controller.GetRecentStatement(merchantNbr); //Assert Assert.Equal(((Microsoft.AspNetCore.Mvc.ObjectResult)result.Result).StatusCode.ToString(), "400"); }
//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); }
private RecentStatementController FakeController(IDistributedCache cache, IRecentStatementApi recentStatementApi, IStringLocalizer <RecentStatementController> localizer, IOperation operation, ILoggingFacade fakeLogger) { return(new RecentStatementController(cache, recentStatementApi, localizer, operation, fakeLogger)); }
/// <summary> /// /// </summary> /// <param name="cache"></param> /// <param name="recentStatementApi"></param> /// <param name="localizer"></param> /// <param name="operation"></param> /// <param name="loggingFacade"></param> public RecentStatementController(IDistributedCache cache, IRecentStatementApi recentStatementApi, IStringLocalizer <RecentStatementController> localizer, IOperation operation, ILoggingFacade loggingFacade) { _loggingFacade = loggingFacade; _loggingFacade.LogAsync(new LogEntry(LogLevels.Info, "Starting Recent Statement Controller", "RecentStatementController.cs", "TerminalDetailsController"), CancellationToken.None); this._cache = cache; this._recentStatementApi = recentStatementApi; this._localizer = localizer; this._operation = operation; }
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 async Task RecentStatementControllerTest_NoDataFound() { // Arrange string merchantNbr = "542929801430265"; MockRecentStatementRepository mockRecentStatementRepository = new MockRecentStatementRepository(); ApiResult <ICollection <Wp.CIS.LynkSystems.Model.RecentStatement> > expectedResult = mockRecentStatementRepository.GetMockData(); IDistributedCache mockCache = Substitute.For <IDistributedCache>(); IStringLocalizer <RecentStatementController> localizer = Substitute.For <IStringLocalizer <RecentStatementController> >(); string key = "NoDataFound"; string value = "No data found for provided lid."; var localizedString = new LocalizedString(key, value); localizer[Arg.Any <string>()].ReturnsForAnyArgs(localizedString); 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(); RecentStatementController controller = new RecentStatementController(mockCache, mockRecentStatementApi, localizer, fakeOperation, FakeLogger()); ApiResult <ICollection <Wp.CIS.LynkSystems.Model.RecentStatement> > result = new ApiResult <ICollection <Wp.CIS.LynkSystems.Model.RecentStatement> >(); mockRecentStatementApi.GetRecentStatementAsync(merchantNbr).ReturnsForAnyArgs(result); // Act var recentStatementList = await controller.GetRecentStatement(merchantNbr); var actualRecord = ((Microsoft.AspNetCore.Mvc.ObjectResult)recentStatementList); // Assert Assert.Equal(actualRecord.StatusCode, 200); Assert.Equal(actualRecord.Value, "No data found for provided lid."); }
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); }