public void FillCommandWithCorrectArguments() { var item = new Foo { Id = 336, Plat = 1500, KrstneMeno = "Homer", PropertyGuid = new Guid("{C0DC6F49-10A5-4AB7-9B9C-4152C25238BF}"), PropertyEnum = TestEnum.Value1, PropertyEnumConv = TestEnum.Value2 }; KORM.Query.IQueryProvider provider = Substitute.For <KORM.Query.IQueryProvider>(); provider.GetCommandForCurrentTransaction().Returns(new SqlCommand()); IQuery <Foo> query = CreateFooQuery(); query.Select(p => new { p.Id, p.Plat, p.KrstneMeno, p.PropertyGuid, p.PropertyEnum, p.PropertyEnumConv }); var generator = new CommandGenerator <Foo>(GetFooTableInfo(), provider, query); DbCommand insert = generator.GetInsertCommand(); generator.FillCommand(insert, item, ValueGenerated.OnInsert); insert.Parameters["@IdRow"].Value.Should().Be(336); insert.Parameters["@Salary"].Value.Should().Be((decimal)1500); insert.Parameters["@FirstName"].Value.Should().Be("Homer"); insert.Parameters["@PropertyGuid"].Value.Should().Be(new Guid("{C0DC6F49-10A5-4AB7-9B9C-4152C25238BF}")); insert.Parameters["@PropertyEnum"].Value.Should().Be(1); insert.Parameters["@PropertyEnumConv"].Value.Should().Be("V2"); }
public void CommandShouldNotContainGeneratedValueWhenIgnored() { var item = new Foo { PropertyValueGenerator = 552 }; KORM.Query.IQueryProvider provider = Substitute.For <KORM.Query.IQueryProvider>(); provider.GetCommandForCurrentTransaction().Returns(new SqlCommand()); IQuery <Foo> query = CreateFooQuery(); query.Select(p => new { p.PropertyValueGenerator }); var generator = new CommandGenerator <Foo>(GetFooTableInfo(ValueGenerated.OnInsertOrUpdate), provider, query); DbCommand insert = generator.GetInsertCommand(); DbCommand update = generator.GetUpdateCommand(); generator.FillCommand(insert, item, ValueGenerated.OnInsert, true); insert.Parameters["@PropertyValueGenerator"].Value.Should().Be(552); generator.FillCommand(update, item, ValueGenerated.OnUpdate, true); update.Parameters["@PropertyValueGenerator"].Value.Should().Be(552); }
public void UseConverter() { var idColumn = new ColumnInfo() { Name = nameof(ConverterDto.Id), PropertyInfo = GetPropertyInfo <ConverterDto>(nameof(ConverterDto.Id)) }; var nameColumn = new ColumnInfo() { Name = nameof(ConverterDto.Name), PropertyInfo = GetPropertyInfo <ConverterDto>(nameof(ConverterDto.Name)), Converter = new NullToStringConverter() }; var tableInfo = new TableInfo(new[] { idColumn, nameColumn }, new List <PropertyInfo>(), null) { Name = nameof(ConverterDto) }; KORM.Query.IQueryProvider queryProvider = Substitute.For <KORM.Query.IQueryProvider>(); IDatabaseMapper mapper = Substitute.For <IDatabaseMapper>(); mapper.GetTableInfo <ConverterDto>().Returns(tableInfo); var query = new Query <ConverterDto>(mapper, queryProvider); var generator = new CommandGenerator <ConverterDto>(tableInfo, queryProvider, query); var dto = new ConverterDto() { Id = 1, Name = null }; var convertedValue = generator.GetColumnValue(nameColumn, dto); convertedValue.Should().Be("NULL"); }
private CommandGenerator <T> CreateCommandGenerator <T>(TableInfo tableInfo) { IDatabaseMapper mapper = Substitute.For <IDatabaseMapper>(); mapper.GetTableInfo <T>().Returns(tableInfo); KORM.Query.IQueryProvider queryProvider = Substitute.For <KORM.Query.IQueryProvider>(); var query = new Query <T>(mapper, queryProvider); return(new CommandGenerator <T>(tableInfo, queryProvider, query)); }
private CommandGenerator <FooIdentity> GetFooIdentityGenerator() { KORM.Query.IQueryProvider provider = Substitute.For <KORM.Query.IQueryProvider>(); provider.GetCommandForCurrentTransaction().Returns(a => { return(new SqlCommand()); }); IQuery <FooIdentity> query = CreateFooIdentityQuery(); query.Select(p => new { p.Id, p.Plat }); return(new CommandGenerator <FooIdentity>(GetFooIdentityTableInfo(), provider, query)); }
private CommandGenerator <Foo> GetUpsertFooGenerator() { KORM.Query.IQueryProvider provider = Substitute.For <KORM.Query.IQueryProvider>(); provider.GetCommandForCurrentTransaction().Returns(a => { return(new SqlCommand()); }); IQuery <Foo> query = CreateFooQuery(); query.Select(p => new { p.Id, p.KrstneMeno, p.PropertyEnum, p.Plat, p.PropertyValueGenerator }); return(new CommandGenerator <Foo>(GetFooTableInfo(), provider, query)); }
/// <summary> /// Initializes a new instance of the <see cref="CommandGenerator{T}" /> class. /// </summary> /// <param name="tableInfo">Information about table from database.</param> /// <param name="provider">Provider, that can execute queries.</param> /// <param name="query">Executing query.</param> public CommandGenerator(TableInfo tableInfo, KORM.Query.IQueryProvider provider, IQueryBase <T> query) { Check.NotNull(tableInfo, nameof(tableInfo)); Check.NotNull(provider, nameof(provider)); Check.NotNull(query, nameof(query)); _tableInfo = tableInfo; _provider = provider; _query = query; }
private CommandGenerator <FooPrimaryKeys> GetFooPrimaryKeyGenerator() { KORM.Query.IQueryProvider provider = Substitute.For <KORM.Query.IQueryProvider>(); provider.GetCommandForCurrentTransaction().Returns(a => { return(new SqlCommand()); }); IQuery <FooPrimaryKeys> query = CreateQuery <FooPrimaryKeys>(); query.Select(p => new { FK1 = 1, FK2 = 2 }); TableInfo tableInfo = CreateTableInfoFromDto <FooPrimaryKeys>(); return(new CommandGenerator <FooPrimaryKeys>(tableInfo, provider, query)); }
public void ThrowMissingPrimaryKeyExceptionWhenGetDeleteCommand() { KORM.Query.IQueryProvider provider = Substitute.For <KORM.Query.IQueryProvider>(); provider.GetCommandForCurrentTransaction().Returns(new SqlCommand()); IQuery <Foo> query = CreateFooQuery(); query.Select(p => new { p.Plat, p.KrstneMeno, p.PropertyGuid, p.PropertyEnum, p.PropertyEnumConv }); var generator = new CommandGenerator <Foo>(GetFooTableInfo(false), provider, query); Action action = () => { DbCommand update = generator.GetDeleteCommand(); }; action.Should().Throw <KORM.Exceptions.MissingPrimaryKeyException>(); }