Пример #1
0
        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);
        }
Пример #2
0
        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");
            }
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }