using System; using System.Collections.Generic; using Moq; using Xunit; using LCU.API.Collections.CollectionsApi.Services; using LCU.API.Collections.CollectionsApi.Exceptions; using System.Threading.Tasks; using LCU.API.Collections.CollectionsApi.Dao; using LCU.API.Collections.CollectionsApiLib.Models; namespace LCU.API.Collections.CollectionsApiTests.ServiceTests { public class CaseServiceTest { private Mock _mockTemenosCaseDao; private CaseService _caseService; public CaseServiceTest() { _mockTemenosCaseDao = new Mock(); _caseService = new CaseService( _mockTemenosCaseDao.Object); } [Fact] public async void GetCaseByID_OK() { //setup _mockTemenosCaseDao.Setup(dao => dao.FindByIdAsync(It.IsAny())).ReturnsAsync( new CollectionsApiLib.Models.TemenosCase() { CaseId = 1234, CaseTitle = "Case" } ); var result = await _caseService.GetCaseByIdAsync(1234); Assert.NotNull(result); Assert.Equal(1234, result.CaseId); } [Fact] public async void GetCaseByID_Server_Exception() { //setup _mockTemenosCaseDao.Setup(dao => dao.FindByIdAsync(It.IsAny())).ThrowsAsync(new Exception("Oops")); var result = await Assert.ThrowsAsync(() => _caseService.GetCaseByIdAsync(1234)); Assert.NotNull(result); } [Fact] public async void GetCaseByID_NotFound() { //setup _mockTemenosCaseDao.Setup(dao => dao.FindByIdAsync(It.IsAny())).Returns(Task.FromResult(null)); var result = await Assert.ThrowsAsync(() => _caseService.GetCaseByIdAsync(123)); Assert.NotNull(result); Assert.Equal("Case with id 123 not found.", result.Message); } [Fact] public async void GetCaseByNO_OK() { //setup _mockTemenosCaseDao.Setup(dao => dao.FindByCaseNoAsync(It.IsAny())).ReturnsAsync( new CollectionsApiLib.Models.TemenosCase() { CaseId = 1234, CaseNumber = "12345", CaseTitle = "Case" } ); var result = await _caseService.GetCaseByCaseNoAsync("1234"); Assert.NotNull(result); Assert.Equal(1234, result.CaseId); } [Fact] public async void GetCaseByNo_Server_Exception() { //setup _mockTemenosCaseDao.Setup(dao => dao.FindByCaseNoAsync(It.IsAny())).ThrowsAsync(new Exception("Oops")); var result = await Assert.ThrowsAsync(() => _caseService.GetCaseByCaseNoAsync("12345")); Assert.NotNull(result); } [Fact] public async void GetCaseByNO_NotFound() { //setup _mockTemenosCaseDao.Setup(dao => dao.FindByCaseNoAsync(It.IsAny())).Returns(Task.FromResult(null)); var result = await Assert.ThrowsAsync(() => _caseService.GetCaseByCaseNoAsync("1234")); Assert.NotNull(result); Assert.Equal("Case with case no 1234 not found.", result.Message); } [Fact] public async void GetHistory_OK() { const int caseId = 111; //setup _mockTemenosCaseDao.Setup(dao => dao.FindCommentsAsync(caseId)).ReturnsAsync( new List() { new TemenosHistory() { Created = DateTime.Now, Message = "Comment", Type = HistoryType.Comment, UserId = 10 } } ); var result = await _caseService.GetHistoryByAccountIdAsync(caseId); Assert.NotNull(result); Assert.Equal(1, result.Count); } } }