public void HaveCorrectUpsertCommandTextForPrimaryKeyOnly() { const string expectedQuery = "MERGE INTO [FooPrimaryKeys] dst " + "USING(SELECT @FK1 FK1, @FK2 FK2) src " + "ON src.[FK1] = dst.[FK1] AND src.[FK2] = dst.[FK2] " + "WHEN NOT MATCHED THEN INSERT([FK1], [FK2]) VALUES (@FK1, @FK2) ;"; CommandGenerator <FooPrimaryKeys> commandGenerator = GetFooPrimaryKeyGenerator(); DbCommand upsert = commandGenerator.GetUpsertCommand(); upsert.CommandText.Should().Be(expectedQuery); }
public void ThrowMissingPrimaryKeyExceptionWhenGetUpsertCommand() { 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.GetUpsertCommand(); }; action.Should().Throw <KORM.Exceptions.MissingPrimaryKeyException>(); }