public async Task TestTransformAddNewFieldID() { #region arange var rows = new List <IRow>(); int nrRows = 10; for (int i = 0; i < nrRows; i++) { var row = new Mock <IRow>(); row.SetupProperty(it => it.Values, new Dictionary <string, object>() { ["FirstName"] = "John" + i } ); rows.Add(row.Object); } #endregion #region act var transform = new TransformAddNewField("ID"); transform.Increment = true; transform.valuesRead = rows.ToArray(); await transform.Run(); #endregion #region assert int nr = 0; foreach (var item in transform.valuesTransformed) { item.Values.ShouldContainKeyAndValue("ID", nr); nr++; } #endregion }
static string PBXJob() { var dir = AppContext.BaseDirectory; var dirPBX = Path.Combine(dir, "PBX"); var serialize = new SerializeDataOnFile("a.txt"); IReceive r = new ReceiverFolderHierarchical(dirPBX, "*.log"); IFilter filterFiles = new FilterForFilesHierarchical(); #region filter for remove dates serialize var filterDateTime = new FilterComparableGreat(typeof(DateTime), DateTime.MinValue, "LastWriteTimeUtc"); IFilter filterDateTimeSerializable = new FilterComparableFromSerializable(filterDateTime, serialize); #endregion IFilter removeFilesMaxWritten = new FilterRemovePropertyMaxMinDateTime("LastWriteTimeUtc", GroupingFunctions.Max); ITransform transformLines = new TransformerFileToLines() { TrimEmptyLines = true }; var trDateRegex = new TransformRowRegex(@"^Date:\ (?<datePBX>.{23}).*?$", "text"); var trKeyValueRegex = new TransformRowRegex(@"(^|\r|\n|\r\n)(?<tkey>(\$?[a-zA-Z0-9_[\]/ ]+))='?(?<tvalue>([a-zA-Z0-9_ ]+))'?(\r|\r\n|$)", "text"); var trToDate = new TransformerFieldStringToDate("datePBX", "NewDatePBX", "yyyy/MM/dd HH:mm:ss.fff"); var trAddDate = new TransformAddFieldDown("NewDatePBX"); var trAddKey = new TransformAddNewField("tkey"); var trAddValue = new TransformAddNewField("tvalue"); var trSimpleFields = new TransformRowRemainsProperties("NewDatePBX", "lineNr", "text", "FullName", "LastWriteTimeUtc", "tkey", "tvalue"); var data = new DBTableDataConnection <SqlConnection>(new SerializeDataInMemory()); data.ConnectionString = "#file:SqlServerConnectionString#"; data.Fields = new string[] { "NewDatePBX", "lineNr", "text", "FullName", "tkey", "tvalue" }; data.TableName = "PBXData"; var bulk = new SenderSqlServerBulkCopy(data); var md = new MediaTransformMaxMin <DateTime>(); md.GroupFunction = GroupingFunctions.Max; md.FieldName = "LastWriteTimeUtc"; var serializeMaxDate = new SenderMediaSerialize <DateTime>(serialize, "LastWriteTimeUtc", md); var si = new SimpleJob(); si.Receivers.Add(0, r); int iFilterNr = 0; si.FiltersAndTransformers.Add(iFilterNr++, filterFiles); si.FiltersAndTransformers.Add(iFilterNr++, filterDateTimeSerializable); si.FiltersAndTransformers.Add(iFilterNr++, removeFilesMaxWritten); si.FiltersAndTransformers.Add(iFilterNr++, transformLines); si.FiltersAndTransformers.Add(iFilterNr++, trDateRegex); si.FiltersAndTransformers.Add(iFilterNr++, trKeyValueRegex); si.FiltersAndTransformers.Add(iFilterNr++, trToDate); si.FiltersAndTransformers.Add(iFilterNr++, trAddDate); si.FiltersAndTransformers.Add(iFilterNr++, trAddKey); si.FiltersAndTransformers.Add(iFilterNr++, trAddValue); si.FiltersAndTransformers.Add(iFilterNr++, trSimpleFields); //TODO: add transformer to add a field down for all fields //TODO: add transformer regex for splitting Key=Value //TODO: add field to separate Conn(1)Type(Any)User(InternalTask) CDL Request:RSVI(Get) si.Senders.Add(0, bulk); si.Senders.Add(1, serializeMaxDate); return(si.SerializeMe()); }