public async Task Exception_not_thrown_for_more_than_one_row_returned_for_single_command() { var entry = CreateEntry(EntityState.Added, generateKeyValues: true); entry.MarkAsTemporary(entry.EntityType.FindPrimaryKey().Properties[0]); var command = new ModificationCommand("T1", null, new ParameterNameGenerator(), p => p.TestProvider()); command.AddEntry(entry); var commandBuilderFactory = new FakeCommandBuilderFactory( CreateFakeDataReader( new[] { "Col1" }, new List <object[]> { new object[] { 42 }, new object[] { 43 } })); var batch = new ModificationCommandBatchFake(factory: commandBuilderFactory); batch.AddCommand(command); var connection = CreateConnection(); await batch.ExecuteAsync(connection); Assert.Equal(42, entry[entry.EntityType.FindProperty("Id")]); }
public async Task ExecuteAsync_saves_store_generated_values_when_updating() { var entry = CreateEntry( EntityState.Modified, generateKeyValues: true, computeNonKeyValue: true); var command = new ModificationCommand("T1", null, new ParameterNameGenerator(), p => p.TestProvider()); command.AddEntry(entry); var commandBuilderFactory = new FakeCommandBuilderFactory( CreateFakeDataReader(new[] { "Col2" }, new List <object[]> { new object[] { "FortyTwo" } })); var batch = new ModificationCommandBatchFake(factory: commandBuilderFactory); batch.AddCommand(command); var connection = CreateConnection(); await batch.ExecuteAsync(connection); Assert.Equal(1, entry[entry.EntityType.FindProperty("Id")]); Assert.Equal("FortyTwo", entry[entry.EntityType.FindProperty("Name")]); }
public async Task Exception_thrown_if_no_rows_returned_for_command_with_store_generated_values() { var entry = CreateEntry(EntityState.Added, generateKeyValues: true); entry.MarkAsTemporary(entry.EntityType.FindPrimaryKey().Properties[0]); var command = new ModificationCommand("T1", null, new ParameterNameGenerator(), p => p.TestProvider()); command.AddEntry(entry); var commandBuilderFactory = new FakeCommandBuilderFactory( CreateFakeDataReader(new[] { "Col1" }, new List <object[]>())); var batch = new ModificationCommandBatchFake(factory: commandBuilderFactory); batch.AddCommand(command); var connection = CreateConnection(); Assert.Equal(RelationalStrings.UpdateConcurrencyException(1, 0), (await Assert.ThrowsAsync <DbUpdateConcurrencyException>( async() => await batch.ExecuteAsync(connection))).Message); }
public async Task Exception_thrown_if_rows_returned_for_command_without_store_generated_values_is_not_1() { var entry = CreateEntry(EntityState.Added); var command = new ModificationCommand("T1", null, new ParameterNameGenerator(), p => p.TestProvider()); command.AddEntry(entry); var commandBuilderFactory = new FakeCommandBuilderFactory( CreateFakeDataReader(new[] { "Col1" }, new List <object[]> { new object[] { 42 } })); var batch = new ModificationCommandBatchFake(factory: commandBuilderFactory); batch.AddCommand(command); var connection = CreateConnection(); Assert.Equal(RelationalStrings.UpdateConcurrencyException(1, 42), (await Assert.ThrowsAsync <DbUpdateConcurrencyException>( async() => await batch.ExecuteAsync(connection))).Message); }
public async Task ExecuteAsync_executes_batch_commands_and_consumes_reader() { var entry = CreateEntry(EntityState.Added); var command = new ModificationCommand("T1", null, new ParameterNameGenerator(), p => p.TestProvider()); command.AddEntry(entry); var dbDataReader = CreateFakeDataReader(); var commandBuilderFactory = new FakeCommandBuilderFactory(dbDataReader); var batch = new ModificationCommandBatchFake(factory: commandBuilderFactory); batch.AddCommand(command); var connection = CreateConnection(); await batch.ExecuteAsync(connection); Assert.Equal(1, dbDataReader.ReadAsyncCount); Assert.Equal(1, dbDataReader.GetInt32Count); }
public async Task Exception_thrown_if_no_rows_returned_for_command_with_store_generated_values() { var entry = CreateEntry(EntityState.Added, generateKeyValues: true); entry.MarkAsTemporary(entry.EntityType.FindPrimaryKey().Properties[0]); var command = new ModificationCommand("T1", null, new ParameterNameGenerator(), p => p.TestProvider()); command.AddEntry(entry); var commandBuilderFactory = new FakeCommandBuilderFactory( CreateFakeDataReader(new[] { "Col1" }, new List<object[]>())); var batch = new ModificationCommandBatchFake(factory: commandBuilderFactory); batch.AddCommand(command); var connection = CreateConnection(); Assert.Equal(RelationalStrings.UpdateConcurrencyException(1, 0), (await Assert.ThrowsAsync<DbUpdateConcurrencyException>( async () => await batch.ExecuteAsync(connection))).Message); }
public async Task Exception_thrown_if_rows_returned_for_command_without_store_generated_values_is_not_1() { var entry = CreateEntry(EntityState.Added); var command = new ModificationCommand("T1", null, new ParameterNameGenerator(), p => p.TestProvider()); command.AddEntry(entry); var commandBuilderFactory = new FakeCommandBuilderFactory( CreateFakeDataReader(new[] { "Col1" }, new List<object[]> { new object[] { 42 } })); var batch = new ModificationCommandBatchFake(factory: commandBuilderFactory); batch.AddCommand(command); var connection = CreateConnection(); Assert.Equal(RelationalStrings.UpdateConcurrencyException(1, 42), (await Assert.ThrowsAsync<DbUpdateConcurrencyException>( async () => await batch.ExecuteAsync(connection))).Message); }
public async Task Exception_not_thrown_for_more_than_one_row_returned_for_single_command() { var entry = CreateEntry(EntityState.Added, generateKeyValues: true); entry.MarkAsTemporary(entry.EntityType.FindPrimaryKey().Properties[0]); var command = new ModificationCommand("T1", null, new ParameterNameGenerator(), p => p.TestProvider()); command.AddEntry(entry); var commandBuilderFactory = new FakeCommandBuilderFactory( CreateFakeDataReader( new[] { "Col1" }, new List<object[]> { new object[] { 42 }, new object[] { 43 } })); var batch = new ModificationCommandBatchFake(factory: commandBuilderFactory); batch.AddCommand(command); var connection = CreateConnection(); await batch.ExecuteAsync(connection); Assert.Equal(42, entry[entry.EntityType.FindProperty("Id")]); }
public async Task ExecuteAsync_saves_store_generated_values_when_updating() { var entry = CreateEntry( EntityState.Modified, generateKeyValues: true, computeNonKeyValue: true); var command = new ModificationCommand("T1", null, new ParameterNameGenerator(), p => p.TestProvider()); command.AddEntry(entry); var commandBuilderFactory = new FakeCommandBuilderFactory( CreateFakeDataReader(new[] { "Col2" }, new List<object[]> { new object[] { "FortyTwo" } })); var batch = new ModificationCommandBatchFake(factory: commandBuilderFactory); batch.AddCommand(command); var connection = CreateConnection(); await batch.ExecuteAsync(connection); Assert.Equal(1, entry[entry.EntityType.FindProperty("Id")]); Assert.Equal("FortyTwo", entry[entry.EntityType.FindProperty("Name")]); }