public async Task ContactListApiTest_Exception() { // Arrange LidTypeEnum LIDType = LidTypeEnum.CustomerNbr; string LID = ""; PaginationDemographics page = new PaginationDemographics(); string ssn = "3425"; MockContactListRepository mockContactListRepository = new MockContactListRepository(); ApiResult <GenericPaginationResponse <Demographics> > expectedResult = mockContactListRepository.GetMockData(ssn); ILoggingFacade loggingFacade = Substitute.For <ILoggingFacade>(); IOptions <Settings> optionsAccessor = Substitute.For <IOptions <Settings> >(); IContactListRepository mockRepo = Substitute.For <IContactListRepository>(); IContactListApi contactListApi = Substitute.For <IContactListApi>(); IDistributedCache mockCache = Substitute.For <IDistributedCache>(); loggingFacade.WhenForAnyArgs(x => x.LogAsync(Arg.Any <LogLevels>(), Arg.Any <string>(), Arg.Any <CancellationToken>())).DoNotCallBase(); mockRepo.GetContactListAsync(LIDType, LID, page).Throws(new Exception()); contactListApi = new ContactListApi(optionsAccessor, mockRepo, loggingFacade); //Assert await Assert.ThrowsAsync <Exception>(() => contactListApi.GetContactListAsync(LIDType, LID, page)); }
//Forming the Unique ChacheId private string UniqueCachingKey(ContactListInput pageinput) { int merchantId = Convert.ToInt32(pageinput.LIDValue); PaginationDemographics page = pageinput.Page; var key = _localizer["UniqueKey"] + "_" + merchantId; if (page.PageSize > 0) { key = key + "_PageSize_" + page.PageSize; } if (page.SkipRecordNumber > 0) { key = key + "_SkipRecord_" + page.SkipRecordNumber; } if (page.SortField != null) { key = key + "_" + page.SortField + "_" + page.SortFieldByAsc; } if (page.FilterContact != null) { key = key + "_FilterContact_" + page.FilterContact; } if (page.FilterLast4 != null) { key = key + "_FilterLast4_" + page.FilterLast4; } if (page.FilterRole != null) { key = key + "_FilterRole_" + page.FilterRole; } return(key); }
//Would be revisiting to modify the actual way of call method. public void ContactListRepositoryTest_Success() { // Arrange LidTypeEnum LIDType = LidTypeEnum.CustomerNbr; string LID = ""; PaginationDemographics page = new PaginationDemographics(); int NameAddressID = 3301636; string ssn = "3425"; MockContactListRepository mockContactListRepository = new MockContactListRepository(); ApiResult <GenericPaginationResponse <Demographics> > expectedResult = mockContactListRepository.GetMockData(ssn); IOptions <DataContext> optionsAccessor = Substitute.For <IOptions <DataContext> >(); IDatabaseConnectionFactory connectionFactory = Substitute.For <IDatabaseConnectionFactory>(); IContactListRepository mockRepo = Substitute.For <IContactListRepository>(); ILoggingFacade loggingFacade = Substitute.For <ILoggingFacade>(); loggingFacade.WhenForAnyArgs(x => x.LogAsync(Arg.Any <LogLevels>(), Arg.Any <string>(), Arg.Any <CancellationToken>())).DoNotCallBase(); mockRepo.GetContactListAsync(LIDType, LID, page).ReturnsForAnyArgs(expectedResult.Result); // Act var contactList = mockRepo.GetContactListAsync(LIDType, LID, page).Result; var actualRecord = (IList <Wp.CIS.LynkSystems.Model.Demographics>)contactList.ReturnedRecords; string contactInfo = actualRecord.Where(x => x.NameAddressID == NameAddressID).FirstOrDefault().Name; //// Assert Assert.Equal(((IList <Demographics>)actualRecord).Count, 3); Assert.Equal(contactInfo, "Golden Corral Corporation"); }
private ContactListInput GetContactListObject() { ContactListInput pageInput = new ContactListInput(); pageInput.lidTypeEnum = Wp.CIS.LynkSystems.Model.Enums.LidTypeEnum.Terminal; pageInput.LIDValue = "123456"; PaginationDemographics page = new PaginationDemographics(); page.FilterContact = "wa"; page.PageSize = 100; page.SortField = "Contact"; page.SortFieldByAsc = true; pageInput.Page = page; return(pageInput); }
/// <summary> /// Model - Merchant /// </summary> /// <param name="custId"></param> /// <returns></returns> public async Task <GenericPaginationResponse <Wp.CIS.LynkSystems.Model.Demographics> > GetContactListAsync(LidTypeEnum LIDType, string LID, PaginationDemographics page) { try { await _loggingFacade.LogAsync(new LogEntry(LogLevels.Info, "Starting Contact List Repository GetContactListAsync for " + LIDType.ToString() + " Value - " + LID, "ContactListRepository.cs", "GetContactListAsync"), CancellationToken.None); var response = new GenericPaginationResponse <Demographics> { SkipRecords = page.SkipRecordNumber, PageSize = page.PageSize }; return(await this._connectionFactory.GetConnection(async c => { await _loggingFacade.LogAsync(new LogEntry(LogLevels.Info, "Open Dapper Connection of SQL server for Contact List Repository for " + LIDType.ToString() + " Value - " + LID, "ContactListRepository.cs", "GetContactListAsync"), CancellationToken.None); var p = new DynamicParameters(); p.Add("iLIDType", LIDType, DbType.Int32); p.Add("iLID", LID, DbType.String); if (page.SortField != null) { p.Add("SortField", page.SortField, DbType.String); p.Add("@SortByAsc", page.SortFieldByAsc, DbType.Boolean); } if (page.FilterContact != null) { p.Add("FilterByValueForContact", page.FilterContact, DbType.String); } if (page.FilterLast4 != null) { p.Add("FilterByValueForSSN", page.FilterLast4, DbType.String); } if (page.FilterRole != null) { p.Add("FilterByValueForTitle", page.FilterRole, DbType.String); } if (page.PageSize != 0) { p.Add("PageSize", page.PageSize, DbType.Int16); } if (page.SkipRecordNumber != 0) { p.Add("SkipRecordNumber", page.SkipRecordNumber, DbType.Int16); } p.Add("MaximumRecsLimit", maxRecordCount, DbType.Int16); p.Add("TotalRecordsCount", DbType.Int32, direction: ParameterDirection.Output); await _loggingFacade.LogAsync(new LogEntry(LogLevels.Info, "Dapper Connection parameterized Query for Contact List Repository for " + LIDType.ToString() + " Value - " + LID, "ContactListRepository.cs", "GetContactListAsync"), CancellationToken.None); response.ReturnedRecords = await c.QueryAsync <Wp.CIS.LynkSystems.Model.Demographics>(sql: "[CISPlus].[uspCISPlusGetDemographicsByLIdType]", param: p, commandType: CommandType.StoredProcedure); response.TotalNumberOfRecords = p.Get <int>("TotalRecordsCount"); await _loggingFacade.LogAsync(new LogEntry(LogLevels.Info, "Successful DB call for Contact List Repository Query result for " + LIDType.ToString() + " Value - " + LID, "ContactListRepository.cs", "GetContactListAsync"), CancellationToken.None); return response; })); } catch (Exception ex) { var msg = String.Format("{0}.GetContactListAsync() experienced an exception (not a timeout)", GetType().FullName); await _loggingFacade.LogAsync(new LogEntry(LogLevels.Error, "Error Occurred for " + LIDType.ToString() + " Value - " + LID + " " + msg + ex.ToString() + ex.Message, "ContactListRepository.cs", "GetContactListAsync"), CancellationToken.None); throw; } }
public async Task <IActionResult> GetContactList([FromBody] ContactListInput pageinput) { try { LidTypeEnum LIDType = pageinput.lidTypeEnum; string LID = pageinput.LIDValue; await _loggingFacade.LogAsync(new LogEntry(LogLevels.Info, "start calling the HttpPost method for the Contact List controller for input - " + LIDType + ", Value - " + LID, "ContactListController.cs", "GetContactList"), CancellationToken.None); PaginationDemographics page = pageinput.Page; var key = UniqueCachingKey(pageinput); if (!ModelState.IsValid) { await _loggingFacade.LogAsync(new LogEntry(LogLevels.Error, ModelState.ToString(), "ContactListController.cs", "GetContactList"), CancellationToken.None); return(BadRequest(ModelState)); } var data = _operation.RetrieveCache(key, new GenericPaginationResponse <Demographics>()); if (data == null) { await _loggingFacade.LogAsync(new LogEntry(LogLevels.Info, "calling service for getting Contact List resultset from DB", "ContactListController.cs", "GetContactList"), CancellationToken.None); //since no data in cache, now get data from DB var result = await _contactList.GetContactListAsync(LIDType, LID, page); if (result.ErrorMessages.Count == 0) { if (result.Result != null && result.Result.TotalNumberOfRecords > 0) { await _loggingFacade.LogAsync(new LogEntry(LogLevels.Info, " Fetched the Contact List resultset", "ContactListController.cs", "GetContactList"), CancellationToken.None); //Now add data to cache.. await _operation.AddCacheAsync(key, data); return(Ok(result.Result)); } else { var msg = this._localizer["NoDataFound"]?.Value; await _loggingFacade.LogAsync(new LogEntry(LogLevels.Info, msg + " while Fetching the Contact List resultset", "ContactListController.cs", "GetContactList"), CancellationToken.None); result.Result.ModelMessage = msg; return(Ok(result.Result)); } } else { var msg = this._localizer?["InternalServerError"]?.Value; await _loggingFacade.LogAsync(new LogEntry(LogLevels.Error, msg, "ContactListController.cs", "GetContactList"), CancellationToken.None); return(this.StatusCode((int)System.Net.HttpStatusCode.InternalServerError, msg)); } } await _loggingFacade.LogAsync(new LogEntry(LogLevels.Info, "Fetched the Contact List resultset from Cache key - " + key, "ContactListController.cs", "GetContactList"), CancellationToken.None); return(Ok(data)); } catch (Exception ex) { var msg = this._localizer?["InternalServerError"]?.Value; await _loggingFacade.LogExceptionAsync(ex, this.HttpContext?.Request?.Headers["UserName"], LogLevels.Error, "Error in GetContactList()", CancellationToken.None); return(this.StatusCode((int)System.Net.HttpStatusCode.InternalServerError, msg)); } }
public async Task <ApiResult <GenericPaginationResponse <Demographics> > > GetContactListAsync(LidTypeEnum LIDType, string LID, PaginationDemographics page) { await _loggingFacade.LogAsync(new LogEntry(LogLevels.Info, "Starting Contact List GetContactListAsync for " + LIDType.ToString() + ", Value - " + LID, "ContactListApi.cs", "GetContactListAsync"), CancellationToken.None); ApiResult <GenericPaginationResponse <Demographics> > response = new ApiResult <GenericPaginationResponse <Demographics> >(); try { response.Result = await _contactRepository.GetContactListAsync(LIDType, LID, page); await _loggingFacade.LogAsync(new LogEntry(LogLevels.Info, "Fetched the Contact List resultset from DB for " + LIDType.ToString() + ", Value - " + LID, "ContactListApi.cs", "GetContactListAsync"), CancellationToken.None); } catch (Exception) { throw; } return(response); }