Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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));
        }
Example #4
0
        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());
        }
Example #5
0
 public IndividualValuesCache ImportPopulation(string fileFullPath)
 {
    var importLogger = new ImportLogger();
    var parameterValuesCache = _individualValuesCacheImporter.ImportFrom(fileFullPath, importLogger);
    importLogger.ThrowOnError();
    _logger.Log(importLogger);
    return parameterValuesCache;
 }
Example #6
0
        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);
        }
Example #7
0
        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);
        }
Example #8
0
        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);
        }
Example #9
0
        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);
        }
Example #10
0
        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);
        }
Example #11
0
        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);
        }
Example #12
0
        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());
        }
Example #13
0
        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);
            }
        }
Example #14
0
        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
        }