// 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); } } }
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 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 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 }
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()); }
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); }
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(); }
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")); }
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 }
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 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 }
public OfflinePasteUtils() { xpoFieldValueReader = new XpoFieldValueReader(); this.logger = new SimpleImportLogger(); this.xpoFieldMapper = new XpoFieldMapper(logger); }
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 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 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 }
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 }
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 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 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); }