public NotificationMapperTest() { _referenceDataRepositoryMock.Setup(repo => repo.GetTbServiceFromHospitalIdAsync(It.IsAny <Guid>())) .Returns((Guid guid) => Task.FromResult(_hospitalToTbServiceCodeDict[guid])); _referenceDataRepositoryMock.Setup(repo => repo.GetTreatmentOutcomeForTypeAndSubType( TreatmentOutcomeType.Died, TreatmentOutcomeSubType.Unknown)) .ReturnsAsync(new TreatmentOutcome { TreatmentOutcomeType = TreatmentOutcomeType.Died, TreatmentOutcomeSubType = TreatmentOutcomeSubType.Unknown }); _postcodeService.Setup(service => service.FindPostcodeAsync(It.IsAny <string>())) .ReturnsAsync((string postcode) => new PostcodeLookup { Postcode = postcode.Replace(" ", "").ToUpper() }); // Needs to happen after the mocking, as the constructor uses a method from reference data repo var importLogger = new ImportLogger(); _notificationMapper = new NotificationMapper( _migrationRepository, _referenceDataRepositoryMock.Object, importLogger, _postcodeService.Object); _importValidator = new ImportValidator(importLogger, _referenceDataRepositoryMock.Object); }
public void ThrowExceptionIfObjectTypeInfoIsNull() { var map1 = ObjectSpace.CreateObject <OrdinalToFieldMap>(); map1.SourceOrdinal = 0; map1.TargetName = "Description"; var map2 = ObjectSpace.CreateObject <OrdinalToFieldMap>(); map1.SourceOrdinal = 1; map1.TargetName = "Amount"; var param = ObjectSpace.CreateObject <ImportOrdinalsParam>(); param.OrdToFieldMaps.Add(map1); param.OrdToFieldMaps.Add(map2); string csvText = @"Hello 1,10 Hello 2,20 Hello 3,30"; var csvStream = ConvertToCsvStream(csvText); var request = ObjectSpace.CreateObject <ImportRequest>(); var logger = new ImportLogger(request); var xpoMapper = new XpoFieldMapper(); var ex = Assert.Throws <ArgumentException>(() => new OrdCsvToXpoInserter(param, csvStream, xpoMapper, logger)); Assert.AreEqual("ObjectTypeInfo", ex.ParamName); }
public void LogImportRequest() { // arrange var xpoMapper = new XpoFieldMapper(); var param = GetHeadMockParamObject(); string csvText = @"Description,Amount Hello 1,10 Hello 2,20 Hello 3,30"; var csvStream = ConvertToCsvStream(csvText); // act var request = ObjectSpace.CreateObject <ImportRequest>(); var logger = new ImportLogger(request); ICsvToXpoLoader loader = new HeadCsvToXpoInserter(param, csvStream, xpoMapper, logger); loader.Execute(); request.RequestStatus = "Complete"; // assert Assert.IsTrue(!string.IsNullOrWhiteSpace(request.RequestLog)); }
public void ExceptionIfInsertDuplicateTargets() { var map1 = ObjectSpace.CreateObject <HeaderToFieldMap>(); map1.SourceName = "Description"; map1.TargetName = "Amount"; var map2 = ObjectSpace.CreateObject <HeaderToFieldMap>(); map2.SourceName = "Amount"; map2.TargetName = map2.SourceName; var param = ObjectSpace.CreateObject <ImportHeadersParam>(); param.ObjectTypeName = "MockFactObject"; param.HeaderToFieldMaps.Add(map1); param.HeaderToFieldMaps.Add(map2); string csvText = @"Description,Amount,MockLookupObject1 Hello 1,10,Apple Hello 2,20,Samsung Hello 3,30,HTC"; var csvStream = ConvertToCsvStream(csvText); var request = ObjectSpace.CreateObject <ImportRequest>(); var logger = new ImportLogger(request); var xpoMapper = new XpoFieldMapper(); ICsvToXpoLoader loader = new HeadCsvToXpoInserter(param, csvStream, xpoMapper, logger); Assert.Throws <InvalidOperationException>(() => loader.Execute()); }
public IndividualValuesCache ImportPopulation(string fileFullPath) { var importLogger = new ImportLogger(); var parameterValuesCache = _individualValuesCacheImporter.ImportFrom(fileFullPath, importLogger); importLogger.ThrowOnError(); _logger.Log(importLogger); return parameterValuesCache; }
public void LogRequest() { var request = ObjectSpace.CreateObject <ImportRequest>(); var logger = new ImportLogger(request); logger.Log("Hello {0}", "Chris"); ObjectSpace.CommitChanges(); var requests = new XPQuery <ImportRequest>(ObjectSpace.Session); var requestFound = requests.Where(x => x.RequestLog == "Hello Chris"); Assert.NotNull(requestFound); }
public CaseManagerImportServiceTests() { _context = SetupTestContext(); ContextHelper.DisableAudits(); SetupMockMigrationRepo(); _adOptionMock.Setup(s => s.CurrentValue).Returns(new AdOptions { ReadOnlyUserGroup = "TestReadOnly" }); IUserRepository userRepository = new UserRepository(_context, _adOptionMock.Object); IReferenceDataRepository referenceDataRepository = new ReferenceDataRepository(_context); Mock <INotificationImportRepository> mockNotificationImportRepository = new Mock <INotificationImportRepository>(); var importLogger = new ImportLogger(mockNotificationImportRepository.Object); _caseManagerImportService = new CaseManagerImportService(userRepository, referenceDataRepository, _migrationRepositoryMock.Object, importLogger); }
public void ExceptionIfInsertInvalidHeader() { var xpoMapper = new XpoFieldMapper(); string csvText = @"Description,WrongAmount Hello 1,10 Hello 2,20 Hello 3,30"; var param = GetHeadMockParamObject(); var csvStream = ConvertToCsvStream(csvText); var request = ObjectSpace.CreateObject <ImportRequest>(); var logger = new ImportLogger(request); ICsvToXpoLoader loader = new HeadCsvToXpoInserter(param, csvStream, xpoMapper, logger); var ex = Assert.Throws <ArgumentException>(() => loader.Execute()); Assert.AreEqual("field", ex.ParamName); }
public void InsertSimpleOrdCsv() { // arrange parameters var map1 = ObjectSpace.CreateObject <OrdinalToFieldMap>(); map1.SourceOrdinal = 0; map1.TargetName = "Description"; var map2 = ObjectSpace.CreateObject <OrdinalToFieldMap>(); map2.SourceOrdinal = 1; map2.TargetName = "Amount"; var param = ObjectSpace.CreateObject <ImportOrdinalsParam>(); param.OrdToFieldMaps.Add(map1); param.OrdToFieldMaps.Add(map2); param.ObjectTypeName = "MockFactObject"; string csvText = @"Hello 1,10 Hello 2,20 Hello 3,30"; var csvStream = ConvertToCsvStream(csvText); var request = ObjectSpace.CreateObject <ImportRequest>(); var logger = new ImportLogger(request); var xpoMapper = new XpoFieldMapper(); ICsvToXpoLoader loader = new OrdCsvToXpoInserter(param, csvStream, xpoMapper, logger); loader.Execute(); var inserted = new XPQuery <MockFactObject>(ObjectSpace.Session); MockFactObject obj = inserted.Where(x => x.Description == "Hello 3").FirstOrDefault(); Assert.AreEqual(3, inserted.Count()); Assert.AreEqual(30, obj.Amount); Assert.AreEqual(null, obj.MockLookupObject1); }
public void UpdateSimpleHeaderCsv() { // arrange parameters var map1 = ObjectSpace.CreateObject <HeaderToFieldMap>(); map1.SourceName = "Description"; map1.TargetName = map1.SourceName; map1.IsKeyField = true; var map2 = ObjectSpace.CreateObject <HeaderToFieldMap>(); map2.SourceName = "Amount"; map2.TargetName = map2.SourceName; var param = ObjectSpace.CreateObject <ImportHeadersParam>(); param.HeaderToFieldMaps.Add(map1); param.HeaderToFieldMaps.Add(map2); param.ObjectTypeName = "MockFactObject"; // arrange XPO objects var obj1 = ObjectSpace.CreateObject <MockFactObject>(); obj1.Description = "Hello 1"; obj1.Amount = 10; var obj2 = ObjectSpace.CreateObject <MockFactObject>(); obj2.Description = "Hello 2"; obj2.Amount = 20; var obj3 = ObjectSpace.CreateObject <MockFactObject>(); obj3.Description = "Hello 3"; obj3.Amount = 30; ObjectSpace.CommitChanges(); // arrange loader string csvText = @"Description,Amount Hello 1,100 Hello 2,200 Hello 3,300"; var csvStream = ConvertToCsvStream(csvText); var request = ObjectSpace.CreateObject <ImportRequest>(); var logger = new ImportLogger(request); var xpoFieldMapper = new XpoFieldMapper(); ICsvToXpoLoader loader = new HeadCsvToXpoUpdater(param, csvStream, xpoFieldMapper, logger); // act loader.Execute(); // assert var updated = new XPQuery <MockFactObject>(ObjectSpace.Session); Assert.AreEqual(3, updated.Count()); // returns 6 because it inserts instead of updates MockFactObject result = updated.Where(x => x.Description == "Hello 1").FirstOrDefault(); Assert.AreEqual(100, result.Amount); result = updated.Where(x => x.Description == "Hello 2").FirstOrDefault(); Assert.AreEqual(200, result.Amount); result = updated.Where(x => x.Description == "Hello 3").FirstOrDefault(); Assert.AreEqual(300, result.Amount); }
public void AddToObjectCache() { #region Arrange var map1 = ObjectSpace.CreateObject <HeaderToFieldMap>(); map1.SourceName = "Description"; map1.TargetName = map1.SourceName; var map2 = ObjectSpace.CreateObject <HeaderToFieldMap>(); map2.SourceName = "Amount"; map2.TargetName = map2.SourceName; var map3 = ObjectSpace.CreateObject <HeaderToFieldMap>(); map3.SourceName = "MockLookupObject1"; map3.TargetName = map3.SourceName; map3.CreateMember = true; map3.CacheObject = true; var map4 = ObjectSpace.CreateObject <HeaderToFieldMap>(); map4.SourceName = "MockLookupObject2"; map4.TargetName = map4.SourceName; map4.CreateMember = true; map4.CacheObject = true; var param = ObjectSpace.CreateObject <ImportHeadersParam>(); param.HeaderToFieldMaps.Add(map1); param.HeaderToFieldMaps.Add(map2); param.HeaderToFieldMaps.Add(map3); param.HeaderToFieldMaps.Add(map4); #endregion #region Act param.ObjectTypeName = "MockFactObject"; string csvText = @"Description,Amount,MockLookupObject1,MockLookupObject2 Hello 1,10,Apple,Handset Hello 2,20,Samsung,Marketing Hello 3,30,HTC,Credit"; var csvStream = ConvertToCsvStream(csvText); var request = ObjectSpace.CreateObject <ImportRequest>(); var logger = new ImportLogger(request); var xpoFieldMapper = new XpoFieldMapper(); var loader = new HeadCsvToXpoInserter(param, csvStream, xpoFieldMapper, logger); loader.Execute(); #endregion #region Assert Cached Objects var cachedXpObjects = xpoFieldMapper.LookupCacheDictionary; Assert.AreEqual(2, cachedXpObjects.Count); Assert.AreEqual(3, cachedXpObjects[typeof(MockLookupObject1)].Count); var cachedList = cachedXpObjects[typeof(MockLookupObject1)].Cast <MockLookupObject1>(); Assert.NotNull(cachedList .Where((obj) => (obj).Name == "Apple").FirstOrDefault()); Assert.NotNull(cachedList .Where((obj) => (obj).Name == "Samsung").FirstOrDefault()); Assert.NotNull(cachedList .Where((obj) => (obj).Name == "HTC").FirstOrDefault()); #endregion #region Assert Imported Data var factObjs = ObjectSpace.GetObjects <MockFactObject>(); string output = ""; foreach (var obj in factObjs) { output += string.Format("{0},{1},{2}", obj.Description, obj.Amount, obj.MockLookupObject1 == null ? "NULL" : obj.MockLookupObject1.Name, obj.MockLookupObject2 == null ? "NULL" : obj.MockLookupObject2.Name) + "\n"; } #endregion Debug.Print(output); Assert.AreEqual(3, factObjs.Count); }
public void InsertHeaderCsvWithLookupOfSpecificFields() { #region Arrange Parameters var map1 = ObjectSpace.CreateObject <HeaderToFieldMap>(); map1.SourceName = "Description"; map1.TargetName = map1.SourceName; var map2 = ObjectSpace.CreateObject <HeaderToFieldMap>(); map2.SourceName = "Amount"; map2.TargetName = map2.SourceName; var map3 = ObjectSpace.CreateObject <HeaderToFieldMap>(); map3.SourceName = "MockLookupObject1"; map3.TargetName = map3.SourceName; map3.CreateMember = true; var map4 = ObjectSpace.CreateObject <HeaderToFieldMap>(); map4.SourceName = "MockLookupObject2"; map4.TargetName = map4.SourceName; map4.CreateMember = false; var param = ObjectSpace.CreateObject <ImportHeadersParam>(); param.HeaderToFieldMaps.Add(map1); param.HeaderToFieldMaps.Add(map2); param.HeaderToFieldMaps.Add(map3); param.HeaderToFieldMaps.Add(map4); param.ObjectTypeName = "MockFactObject"; #endregion #region Arrange Mapper string csvText = @"Description,Amount,MockLookupObject1,MockLookupObject2 Hello 1,10,Apple,Handset Hello 2,20,Samsung,Marketing Hello 3,30,HTC,Credit"; var csvStream = ConvertToCsvStream(csvText); var request = ObjectSpace.CreateObject <ImportRequest>(); var logger = new ImportLogger(request); var xpoMapper = new XpoFieldMapper(); ICsvToXpoLoader loader = new HeadCsvToXpoInserter(param, csvStream, xpoMapper, logger); #endregion // act loader.Execute(); // assert var inserted = new XPQuery <MockFactObject>(ObjectSpace.Session); Assert.AreEqual(3, inserted.Count()); var obj = inserted.Where(x => x.Description == "Hello 3").FirstOrDefault(); Assert.AreEqual(30, obj.Amount); Assert.NotNull(obj.MockLookupObject1); Assert.Null(obj.MockLookupObject2); Assert.AreEqual(3, xpoMapper.LookupsNotFound[typeof(MockLookupObject2)].Count()); Assert.AreEqual(3, xpoMapper.LookupsNotFound[typeof(MockLookupObject1)].Count()); // why is this 6? Assert.AreEqual(2, xpoMapper.LookupsNotFound.Count()); }
public void InsertHeaderCsvWithLookup(bool createMember, bool cacheObject) { #region Arrange Param var map1 = ObjectSpace.CreateObject <HeaderToFieldMap>(); map1.SourceName = "Description"; map1.TargetName = map1.SourceName; var map2 = ObjectSpace.CreateObject <HeaderToFieldMap>(); map2.SourceName = "Amount"; map2.TargetName = map2.SourceName; var map3 = ObjectSpace.CreateObject <HeaderToFieldMap>(); map3.SourceName = "MockLookupObject1"; map3.TargetName = map3.SourceName; map3.CreateMember = createMember; map3.CacheObject = cacheObject; var param = ObjectSpace.CreateObject <ImportHeadersParam>(); param.HeaderToFieldMaps.Add(map1); param.HeaderToFieldMaps.Add(map2); param.HeaderToFieldMaps.Add(map3); param.ObjectTypeName = "MockFactObject"; #endregion #region Arrange Mapper string csvText = @"Description,Amount,MockLookupObject1 Hello 1,10,Apple Hello 2,20,Samsung Hello 3,30,HTC"; var csvStream = ConvertToCsvStream(csvText); var request = ObjectSpace.CreateObject <ImportRequest>(); var logger = new ImportLogger(request); var xpoFieldMapper = new XpoFieldMapper(); HeadCsvToXpoInserter loader = new HeadCsvToXpoInserter(param, csvStream, xpoFieldMapper, logger); #endregion // act xpoFieldMapper.LookupsNotFound.Add(typeof(MockLookupObject1), new List <string>() { "Apple", "Samsung", "HTC" }); loader.Execute(); // assert var inserted = new XPQuery <MockFactObject>(ObjectSpace.Session); Assert.AreEqual(3, inserted.Count()); var obj = inserted.Where(x => x.Description == "Hello 3").FirstOrDefault(); Assert.AreEqual(30, obj.Amount); Assert.AreEqual(3, xpoFieldMapper.LookupsNotFound[typeof(MockLookupObject1)].Count()); // parameterized assert if (createMember) { Assert.NotNull(obj.MockLookupObject1); } else if (!createMember) { Assert.Null(obj.MockLookupObject1); } }
public void InsertLog() { // arrange var csvText = @"Description,Amount,MockLookupObject1,MockLookupObject2 Hello 1,10,Parent 1,Parent B1 Hello 2,11,Parent 2,Parent B2 Hello 3,12,Parent 3,Parent B3 Hello 4,13,Parent 4,Parent B4 "; var map1 = ObjectSpace.CreateObject <HeaderToFieldMap>(); map1.SourceName = "Description"; map1.TargetName = map1.SourceName; var map2 = ObjectSpace.CreateObject <HeaderToFieldMap>(); map2.SourceName = "Amount"; map2.TargetName = map2.SourceName; var map3 = ObjectSpace.CreateObject <HeaderToFieldMap>(); map3.SourceName = "MockLookupObject1"; map3.TargetName = map3.SourceName; var map4 = ObjectSpace.CreateObject <HeaderToFieldMap>(); map4.SourceName = "MockLookupObject2"; map4.TargetName = map4.SourceName; var param = ObjectSpace.CreateObject <ImportHeadersParam>(); param.HeaderToFieldMaps.Add(map1); param.HeaderToFieldMaps.Add(map2); param.HeaderToFieldMaps.Add(map3); param.HeaderToFieldMaps.Add(map4); param.ObjectTypeName = "MockFactObject"; // act var request = ObjectSpace.CreateObject <ImportRequest>(); var logger = new ImportLogger(request); var csvStream = ConvertToCsvStream(csvText); var xpoMapper = new XpoFieldMapper(logger); ICsvToXpoLoader loader = new HeadCsvToXpoInserter(param, csvStream, xpoMapper, logger); loader.Execute(); // assert Assert.AreEqual(@"Lookup type 'MockLookupObject1' with value 'Parent 1 not found. Lookup type 'MockLookupObject2' with value 'Parent B1 not found. Lookup type 'MockLookupObject1' with value 'Parent 2 not found. Lookup type 'MockLookupObject2' with value 'Parent B2 not found. Lookup type 'MockLookupObject1' with value 'Parent 3 not found. Lookup type 'MockLookupObject2' with value 'Parent B3 not found. Lookup type 'MockLookupObject1' with value 'Parent 4 not found. Lookup type 'MockLookupObject2' with value 'Parent B4 not found. 4 records inserted.", request.RequestLog); }
public void AddToObjectCacheTwice() { #region Execution 1 var map1 = ObjectSpace.CreateObject <HeaderToFieldMap>(); map1.SourceName = "Description"; map1.TargetName = map1.SourceName; var map2 = ObjectSpace.CreateObject <HeaderToFieldMap>(); map2.SourceName = "Amount"; map2.TargetName = map2.SourceName; var map3 = ObjectSpace.CreateObject <HeaderToFieldMap>(); map3.SourceName = "MockLookupObject1"; map3.TargetName = map3.SourceName; map3.CreateMember = true; map3.CacheObject = true; var map4 = ObjectSpace.CreateObject <HeaderToFieldMap>(); map4.SourceName = "MockLookupObject2"; map4.TargetName = map4.SourceName; map4.CreateMember = true; map4.CacheObject = true; var param = ObjectSpace.CreateObject <ImportHeadersParam>(); param.HeaderToFieldMaps.Add(map1); param.HeaderToFieldMaps.Add(map2); param.HeaderToFieldMaps.Add(map3); param.HeaderToFieldMaps.Add(map4); param.ObjectTypeName = "MockFactObject"; string csvText = @"Description,Amount,MockLookupObject1,MockLookupObject2 Hello 1,10,Apple,Handset Hello 2,20,Samsung,Marketing Hello 3,30,HTC,Credit Hello 4,30,HTC,Credit"; var csvStream = ConvertToCsvStream(csvText); var request = ObjectSpace.CreateObject <ImportRequest>(); var logger = new ImportLogger(request); var xpoFieldMapper = new XpoFieldMapper(); HeadCsvToXpoInserter loader = new HeadCsvToXpoInserter(param, csvStream, xpoFieldMapper, logger); loader.Execute(); #endregion #region Assert Cache var cachedXpObjects = xpoFieldMapper.LookupCacheDictionary; Assert.AreEqual(2, cachedXpObjects.Count); Assert.AreEqual(3, cachedXpObjects[typeof(MockLookupObject1)].Count); var cachedList = cachedXpObjects[typeof(MockLookupObject1)].Cast <MockLookupObject1>(); Assert.AreEqual(1, cachedList.Where((obj) => (obj).Name == "Apple").Count()); Assert.AreEqual(1, cachedList.Where((obj) => (obj).Name == "Samsung").Count()); Assert.AreEqual(1, cachedList.Where((obj) => (obj).Name == "HTC").Count()); #endregion #region Assert Fact var factObjs = ObjectSpace.GetObjects <MockFactObject>(); Assert.AreEqual(4, factObjs.Count); var obj1 = factObjs.Where(x => x.Description == "Hello 1").FirstOrDefault(); Assert.NotNull(obj1.MockLookupObject1); Assert.NotNull(obj1.MockLookupObject2); var obj2 = factObjs.Where(x => x.Description == "Hello 2").FirstOrDefault(); Assert.NotNull(obj2.MockLookupObject1); Assert.NotNull(obj2.MockLookupObject2); var obj3 = factObjs.Where(x => x.Description == "Hello 3").FirstOrDefault(); Assert.NotNull(obj3.MockLookupObject1); Assert.NotNull(obj3.MockLookupObject2); var obj4 = factObjs.Where(x => x.Description == "Hello 4").FirstOrDefault(); Assert.NotNull(obj4.MockLookupObject1); Assert.NotNull(obj4.MockLookupObject2); #endregion }