Beispiel #1
0
        // TODO: Test result of invalid type conversions
        //[Test]
        public void InvalidMemberValueConversions()
        {
            var xpoFieldMapper = new XpoFieldMapper();

            var targetObject = ObjectSpace.CreateObject <MockFactObject>();

            var descMember   = XafTypesInfo.Instance.FindTypeInfo(typeof(MockFactObject)).FindMember("Description");
            var amountMember = XafTypesInfo.Instance.FindTypeInfo(typeof(MockFactObject)).FindMember("Amount");
            var lookupMember = XafTypesInfo.Instance.FindTypeInfo(typeof(MockFactObject)).FindMember("MockLookupObject1");

            xpoFieldMapper.SetMemberValue(targetObject, descMember,
                                          "Hello");
            xpoFieldMapper.SetMemberValue(targetObject, amountMember,
                                          "15");
            xpoFieldMapper.SetMemberValue(targetObject, lookupMember,
                                          "ABC");

            foreach (var obj in xpoFieldMapper.LookupsNotFound)
            {
                foreach (var value in obj.Value)
                {
                    Debug.WriteLine("{0} {1}", obj.Key, value);
                }
            }
        }
Beispiel #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);
        }
Beispiel #3
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());
        }
Beispiel #4
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));
        }
        public void AddToObjectCacheTwice_Level2()
        {
            #region Arrange

            var xpoFieldMapper = new XpoFieldMapper();

            var factTypeInfo     = XafTypesInfo.Instance.FindTypeInfo(typeof(MockFactObject));
            var lookupMemberInfo = factTypeInfo.FindMember("MockLookupObject1");

            var cachedLookupValueConverter = new CachedLookupValueConverter(xpoFieldMapper.LookupCacheDictionary);


            #endregion

            #region Act

            // add key to cache
            xpoFieldMapper.LookupCacheDictionary.Add(new XPCollection(ObjectSpace.Session, lookupMemberInfo.MemberType));

            var targetObj1 = ObjectSpace.CreateObject <MockFactObject>();
            targetObj1.Description = "Target 1";
            var obj1_lookup1 = cachedLookupValueConverter.ConvertToXpObject("Apple", lookupMemberInfo, ObjectSpace.Session, true);
            targetObj1.MockLookupObject1 = (MockLookupObject1)obj1_lookup1;

            var targetObj2 = ObjectSpace.CreateObject <MockFactObject>();
            targetObj2.Description = "Target 2";
            var obj2_lookup1 = cachedLookupValueConverter.ConvertToXpObject("Apple", lookupMemberInfo, ObjectSpace.Session, true); // why is this null?
            targetObj2.MockLookupObject1 = (MockLookupObject1)obj2_lookup1;

            ObjectSpace.CommitChanges();

            #endregion

            #region Assert

            var targetObjs = ObjectSpace.GetObjects <MockFactObject>();

            var retargetObj1 = targetObjs.Where(x => x.Description == "Target 1").FirstOrDefault();
            var retargetObj2 = targetObjs.Where(x => x.Description == "Target 2").FirstOrDefault();

            Assert.NotNull(retargetObj1);
            Assert.NotNull(obj1_lookup1);
            Assert.NotNull(retargetObj1.MockLookupObject1);

            Assert.NotNull(retargetObj2);
            Assert.NotNull(obj2_lookup1);
            Assert.NotNull(retargetObj2.MockLookupObject1);

            #endregion
        }
Beispiel #6
0
        public void AddLookupObject()
        {
            var xpoFieldMapper = new XpoFieldMapper();
            var targetObj      = ObjectSpace.CreateObject <MockFactObject>();

            ObjectSpace.CommitChanges();

            var typeInfo   = XafTypesInfo.Instance.FindTypeInfo(typeof(MockFactObject));
            var memberInfo = typeInfo.FindMember("MockLookupObject1");

            xpoFieldMapper.SetMemberValue(targetObj, memberInfo, "Apple", true, true);

            Assert.AreEqual(1, xpoFieldMapper.LookupsNotFound.Count());
        }
Beispiel #7
0
        public OfflinePasteUtils(IXpoFieldValueReader xpoFieldReader, IImportLogger logger)
        {
            this.xpoFieldValueReader = xpoFieldReader;
            if (logger == null)
            {
                this.logger = new SimpleImportLogger();
            }
            else
            {
                this.logger = logger;
            }

            this.xpoFieldMapper = new XpoFieldMapper(logger);
        }
Beispiel #8
0
        public void ImportForexRateTextFile()
        {
            var xpoMapper = new XpoFieldMapper();
            var param     = ObjectSpace.CreateObject <ImportForexParam>();

            var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(
                ForexRateResourcePath);


            stream.Position = 0;
            var loader = new Xafology.ImportDemo.UnitTests.ForexRateInserter(param, stream, xpoMapper);

            loader.Execute();
        }
Beispiel #9
0
        public ForexRateInserter(ImportForexParam param, Stream stream, XpoFieldMapper xpoFieldMapper)
        {
            if (param == null)
            {
                throw new UserFriendlyException("Param cannot be null");
            }
            if (stream == null)
            {
                throw new UserFriendlyException("Stream cannot be null");
            }
            if (xpoFieldMapper == null)
            {
                throw new UserFriendlyException("XpoFieldMapper cannot be null");
            }


            // reader must be instantiated on main thread or you get null exception
            var reader = new FlatFileReader(stream, Encoding.GetEncoding("iso-8859-1"));
        }
Beispiel #10
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);
        }
        public void AddToObjectCacheTwice_Level1()
        {
            #region Arrange

            var xpoFieldMapper = new XpoFieldMapper();

            var typeInfo   = XafTypesInfo.Instance.FindTypeInfo(typeof(MockFactObject));
            var memberInfo = typeInfo.FindMember("MockLookupObject1");

            #endregion

            #region Act

            var targetObj1 = ObjectSpace.CreateObject <MockFactObject>();
            targetObj1.Description = "Target 1";
            xpoFieldMapper.SetMemberValue(targetObj1, memberInfo, "Apple", true, true);

            var targetObj2 = ObjectSpace.CreateObject <MockFactObject>();
            targetObj2.Description = "Target 2";
            xpoFieldMapper.SetMemberValue(targetObj2, memberInfo, "Apple", true, true);

            ObjectSpace.CommitChanges();

            #endregion

            #region Assert

            var targetObjs = ObjectSpace.GetObjects <MockFactObject>();

            var retargetObj1 = targetObjs.Where(x => x.Description == "Target 1").FirstOrDefault();
            var retargetObj2 = targetObjs.Where(x => x.Description == "Target 2").FirstOrDefault();

            Assert.NotNull(retargetObj1);
            Assert.NotNull(retargetObj1.MockLookupObject1);

            Assert.NotNull(retargetObj2);
            Assert.NotNull(retargetObj2.MockLookupObject1);

            #endregion
        }
Beispiel #12
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);
        }
Beispiel #13
0
        public void InsertSimpleHeaderCsv()
        {
            var xpoMapper = new XpoFieldMapper();

            var param = GetHeadMockParamObject();

            string csvText   = @"Description,Amount
Hello 1,10
Hello 2,20
Hello 3,30";
            var    csvStream = ConvertToCsvStream(csvText);

            ICsvToXpoLoader loader = new HeadCsvToXpoInserter(param, csvStream, xpoMapper, null);

            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 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
        }
Beispiel #15
0
 public OfflinePasteUtils()
 {
     xpoFieldValueReader = new XpoFieldValueReader();
     this.logger         = new SimpleImportLogger();
     this.xpoFieldMapper = new XpoFieldMapper(logger);
 }
Beispiel #16
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);
        }
Beispiel #17
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);
            }
        }
Beispiel #18
0
        public void InsertCashFlow()
        {
            #region Arrange

            var csvText = @"TranDate,Account,Activity,Counterparty,CounterCcyAmt,CounterCcy,Description,Source
21/03/2016,VHA ANZ 70086,AP Pymt,APPLE PTY LTD,-10000,AUD,Test transaction,Chris Tso";

            var map1 = ObjectSpace.CreateObject <HeaderToFieldMap>();
            map1.SourceName = "TranDate";
            map1.TargetName = map1.SourceName;

            var map2 = ObjectSpace.CreateObject <HeaderToFieldMap>();
            map2.SourceName   = "Account";
            map2.TargetName   = map2.SourceName;
            map2.CreateMember = true;

            var map3 = ObjectSpace.CreateObject <HeaderToFieldMap>();
            map3.SourceName   = "Activity";
            map3.TargetName   = map3.SourceName;
            map3.CreateMember = true;
            map3.CacheObject  = true;

            var map4 = ObjectSpace.CreateObject <HeaderToFieldMap>();
            map4.SourceName   = "Counterparty";
            map4.TargetName   = map4.SourceName;
            map4.CreateMember = true;
            map4.CacheObject  = true;

            var map5 = ObjectSpace.CreateObject <HeaderToFieldMap>();
            map5.SourceName = "CounterCcyAmt";
            map5.TargetName = map5.SourceName;

            var map6 = ObjectSpace.CreateObject <HeaderToFieldMap>();
            map6.SourceName   = "CounterCcy";
            map6.TargetName   = map6.SourceName;
            map6.CreateMember = true;
            //map6.CacheObject = true;

            var map7 = ObjectSpace.CreateObject <HeaderToFieldMap>();
            map7.SourceName = "Description";
            map7.TargetName = map7.SourceName;

            var map8 = ObjectSpace.CreateObject <HeaderToFieldMap>();
            map8.SourceName   = "Source";
            map8.TargetName   = map8.SourceName;
            map8.CreateMember = true;
            map8.CacheObject  = true;

            var param = ObjectSpace.CreateObject <ImportHeadersParam>();

            param.HeaderToFieldMaps.Add(map1);
            param.HeaderToFieldMaps.Add(map2);
            param.HeaderToFieldMaps.Add(map3);
            param.HeaderToFieldMaps.Add(map4);
            param.HeaderToFieldMaps.Add(map5);
            param.HeaderToFieldMaps.Add(map6);
            param.HeaderToFieldMaps.Add(map7);
            param.HeaderToFieldMaps.Add(map8);

            param.ObjectTypeName = "CashFlow";

            ObjectSpace.CommitChanges();

            #endregion

            #region Act

            var             csvStream = ConvertToCsvStream(csvText);
            var             xpoMapper = new XpoFieldMapper();
            ICsvToXpoLoader loader    = new HeadCsvToXpoInserter(param, csvStream, xpoMapper, null);
            loader.Execute();
            ObjectSpace.CommitChanges();

            #endregion

            #region Assert

            var inserted = new XPQuery <CashFlow>(ObjectSpace.Session);
            Assert.AreEqual(1, inserted.Count());
            var obj1 = inserted.FirstOrDefault();
            Assert.NotNull(obj1.Account);
            Assert.NotNull(obj1.Activity);
            Assert.NotNull(obj1.Counterparty);
            Assert.NotNull(obj1.Source);
            Assert.NotNull(obj1.CounterCcy);

            #endregion
        }
Beispiel #19
0
        public void InsertMock()
        {
            #region 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;
            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";

            ObjectSpace.CommitChanges();

            #endregion

            #region Act

            var             csvStream = ConvertToCsvStream(csvText);
            var             xpoMapper = new XpoFieldMapper();
            ICsvToXpoLoader loader    = new HeadCsvToXpoInserter(param, csvStream, xpoMapper, null);
            loader.Execute();
            ObjectSpace.CommitChanges();

            #endregion

            #region Assert

            var inserted = new XPQuery <MockFactObject>(ObjectSpace.Session);
            Assert.AreEqual(4, inserted.Count());
            var obj1 = inserted.Where(x => x.Description == "Hello 1").FirstOrDefault();
            var obj2 = inserted.Where(x => x.Description == "Hello 2").FirstOrDefault();
            var obj3 = inserted.Where(x => x.Description == "Hello 3").FirstOrDefault();
            var obj4 = inserted.Where(x => x.Description == "Hello 4").FirstOrDefault();

            Assert.NotNull(obj1.MockLookupObject1);
            Assert.NotNull(obj1.MockLookupObject2);
            Assert.NotNull(obj2.MockLookupObject1);
            Assert.NotNull(obj2.MockLookupObject2);
            Assert.NotNull(obj3.MockLookupObject1);
            Assert.NotNull(obj3.MockLookupObject2);
            Assert.NotNull(obj4.MockLookupObject1);
            Assert.NotNull(obj4.MockLookupObject2);

            #endregion
        }
Beispiel #20
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());
        }
Beispiel #21
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);
        }
Beispiel #22
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);
        }