示例#1
0
        public void WriteRecord_MultipleRecords_CommandIsExecutedForEachRecord()
        {
            var people = Person.Faker.Generate(2);

            var commands = new SqlCommand[]
            {
                DatabaseWriterTests.GenerateInsertPersonCommand(people[0]),
                DatabaseWriterTests.GenerateInsertPersonCommand(people[1])
            };

            var commandFactory = MockRepository.GenerateMock <IDatabaseWriterCommandFactory>();

            commandFactory.Stub(x => x.Create(Arg <object> .Is.Equal(people[0]))).Return(commands[0]);
            commandFactory.Stub(x => x.Create(Arg <object> .Is.Equal(people[1]))).Return(commands[1]);

            using (var databaseWriter = new DatabaseWriter(commandFactory, DatabaseWriterTests.DbConnectionString))
            {
                databaseWriter.Open();

                databaseWriter.WriteRecord(people[0]);
                databaseWriter.WriteRecord(people[1]);

                databaseWriter.Commit();
            }

            using (var testDb = new TestDb(DatabaseWriterTests.DbConnectionString))
            {
                var records = testDb.Delete("dbo.Person", people.ToArray());

                Assert.AreEqual(2, records.Length);
            }
        }