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 DoImport() { var param = (ImportHeadersParam)View.CurrentObject; // TODO: refactor for deduplication var csvStream = new MemoryStream(); param.File.SaveToStream(csvStream); csvStream.Position = 0; var xpoMapper = new Xafology.ExpressApp.Xpo.ValueMap.XpoFieldMapper(); ICsvToXpoLoader loader = null; if (param.ImportActionType == ImportActionType.Insert) { loader = new HeadCsvToXpoInserter(param, csvStream, xpoMapper, null); } else if (param.ImportActionType == ImportActionType.Update) { loader = new HeadCsvToXpoUpdater(param, csvStream, xpoMapper, null); } else { throw new ArgumentException("Invalid Import Action Type", "ImportActionType"); } loader.Execute(); }
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 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 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 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 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 }