public void Should_return_a_default_insert_statement_when_added_the_default_configuration() { var database = new OracleDatabaseBatchSink(ConnectionString, TableName, FunctionName, _columnOptions, null, null); var defaultDataTable = database.CreateDataTable(); var(id, message, messageTemplate, level, timestamp, exception, properties) = ("seq", "", "", "Debug", DateTime.MaxValue, "", "<properties></properties>"); var defaultColumns = ( from DataColumn dataColumn in defaultDataTable.Columns select dataColumn.ColumnName).ToList(); var columns = string.Join(", ", defaultColumns.Select(x => $@"""{x}""")); defaultColumns.RemoveAt(0); var parameters = string.Join(", ", defaultColumns.Select(x => $":{x}_0")); defaultDataTable.Rows.Add(id, message, messageTemplate, level, timestamp, exception, properties); var(insert, _) = database.CreateInsertData(defaultDataTable); var insertStatementExpected = $"INSERT ALL {Environment.NewLine} INTO {TableName} ({columns}) VALUES (seq, {parameters}){Environment.NewLine}SELECT * FROM dual{Environment.NewLine}"; insert.Should().BeEquivalentTo(insertStatementExpected); }
public void Should_return_a_dictionary_with_the_custom_field_added() { const string newColumnName = "NewColumn"; var columnOptions = new ColumnOptions { AdditionalDataColumns = new List <DataColumn> { new DataColumn(newColumnName, typeof(string)) } }; var database = new OracleDatabaseBatchSink(ConnectionString, TableName, FunctionName, columnOptions, null, null); var(_, data) = database.CreateInsertArrayBindData(new List <LogEvent> { new LogEvent(DateTimeOffset.UtcNow, LogEventLevel.Error, null, MessageTemplate.Empty, new List <LogEventProperty> { new LogEventProperty(newColumnName, new ScalarValue("Test")) }) }); if (data.TryGetValue($"v_{newColumnName}", out var addedValue)) { ((string[])addedValue).First() .Should() .Be("Test"); } else { throw new Exception("Not found any value on custom fields"); } }
public void Should_return_only_one_valid_insert_statement_when_added_only_one_row() { var dataTable = new DataTable(); var insertStatementExpected = $"INSERT ALL {Environment.NewLine} INTO {TableName} (\"{ColumnName}\") VALUES (:{ColumnName}_0){Environment.NewLine}SELECT * FROM dual{Environment.NewLine}"; dataTable.Columns.Add(ColumnName, typeof(string)); dataTable.Rows.Add("data"); var database = new OracleDatabaseBatchSink(ConnectionString, TableName, FunctionName, _columnOptions, null, null); var(insertData, _) = database.CreateInsertData(dataTable); insertData.Should().BeEquivalentTo(insertStatementExpected); }
public void Should_return_one_key_and_value_when_added_only_one_column_and_row() { var dataTable = new DataTable(); var value = "data"; var(keyExpected, valueExpected) = ($":{ColumnName}_0", value); dataTable.Columns.Add(ColumnName, typeof(string)); dataTable.Rows.Add(value); var database = new OracleDatabaseBatchSink(ConnectionString, TableName, FunctionName, _columnOptions, null, null); var(_, parameters) = database.CreateInsertData(dataTable); parameters.ContainsKey(keyExpected).Should().BeTrue(); parameters[keyExpected].Should().BeEquivalentTo(valueExpected); }
public void Should_create_an_oracle_command_with_the_proper_parameters() { var database = new OracleDatabaseBatchSink(ConnectionString, TableName, FunctionName, _columnOptions, null, null); var command = new OracleCommand(); var parameters = new Dictionary <string, object> { { "@param", 1 }, { "@param2", 2 } }; database.PrepareCommand(command, parameters); var relevantParameterKeyValue = command.Parameters.Cast <OracleParameter>() .ToDictionary(parameter => parameter.ParameterName, parameter => parameter.Value); relevantParameterKeyValue.Should().BeEquivalentTo(parameters); }