Пример #1
0
        public void Commit_MultipleRows_SendsSqlsInCorrectOrder()
        {
            var factory  = GetProviderFactory();
            var provider = new StubSqlProvider();

            using (mocks.Record())
            {
                factory.CreateProvider("somestring");
                LastCall.Return(provider).IgnoreArguments();
            }

            DataBoy
            .ForTable("Person")
            .Row("IdPerson", 1).Data("Surname", "Obama").DeleteFirst()
            .Row("IdPerson", 2).Data("Surname", "Bush").DeleteFirst()
            .ForTable("Address")
            .Row("IdAddress", 100).Data("Street", "Main street").DeleteFirst()
            .Commit();

            Assert.AreEqual("DELETE FROM Address WHERE IdAddress = 100", provider.GetExecutedQuery(0));
            Assert.AreEqual("DELETE FROM Person WHERE IdPerson = 2", provider.GetExecutedQuery(1));
            Assert.AreEqual("DELETE FROM Person WHERE IdPerson = 1", provider.GetExecutedQuery(2));
            Assert.AreEqual("INSERT INTO Person (IDPERSON, SURNAME) VALUES(1, 'Obama')", provider.GetExecutedQuery(3));
            Assert.AreEqual("INSERT INTO Person (IDPERSON, SURNAME) VALUES(2, 'Bush')", provider.GetExecutedQuery(4));
            Assert.AreEqual("INSERT INTO Address (IDADDRESS, STREET) VALUES(100, 'Main street')", provider.GetExecutedQuery(5));
        }
Пример #2
0
        public void Commit_BindColumnToForInsert_InsertWorksCorrectly()
        {
            var factory  = GetProviderFactory();
            var provider = new StubSqlProvider();

            provider.SetObjectToReturn(1);
            using (mocks.Record())
            {
                factory.CreateProvider("somestring");
                LastCall.Return(provider).IgnoreArguments();
            }

            Guid personId  = Guid.NewGuid();
            Guid addressId = Guid.NewGuid();

            DataBoy
            .ForTable("Person")
            .Row("Id", personId)
            .ReturnValue("IdPerson").AtKey("IdOfPerson")
            .ForTable("Address")
            .Row("Id", addressId)
            .BindColumn("IdPerson").To("IdOfPerson")
            .Commit();

            string expectedSql = string.Format("INSERT INTO Address (ID, IdPerson) VALUES('{0}', 1)", addressId);

            Assert.IsTrue(provider.HasAnySqlMatching(expectedSql));
        }
Пример #3
0
        public void Commit_WithReturnValue_SelectExecutedAsExpected()
        {
            //INSERT INTO Address (ID, IdPerson) VALUES('7e7304db-2b77-4040-ae64-9eb6a686a036', 1)
            var factory  = GetProviderFactory();
            var provider = new StubSqlProvider();

            provider.SetObjectToReturn(1);
            using (mocks.Record())
            {
                factory.CreateProvider("somestring");
                LastCall.Return(provider).IgnoreArguments();
            }

            Guid personId = Guid.NewGuid();

            DataBoy
            .ForTable("Person")
            .Row("Id", personId)
            .ReturnValue("IdPerson").AtKey("IdOfPerson")
            //.ForTable("Address")
            //    .Row("Id", Guid.NewGuid())
            //    .BindColumn("IdPerson").To("IdOfPerson")
            .Commit();

            //HasAnySqlMatching
            string expectedSql = string.Format("SELECT IdPerson FROM Person WHERE Id = '{0}'", personId);

            Assert.IsTrue(provider.HasAnySqlMatching(expectedSql));
        }
Пример #4
0
        public void IncRowVersion_HappyDays_SendsCorrectSqlToProvider()
        {
            var factory = GetProviderFactory();
            var provider = new StubSqlProvider();
            using (mocks.Record())
            {
                factory.CreateProvider("somestring");
                LastCall.Return(provider).IgnoreArguments();
            }

            Adversary.ForTable("Person").IdentifiedBy("IdPerson", 1).IncRowVersion("Version");

            Assert.AreEqual("UPDATE Person SET Version = Version + 1 WHERE IdPerson = 1", provider.GetExecutedQuery(0));
        }
Пример #5
0
        public void Commit_ForUpdate_SendsUpdateInsteadOfInsert()
        {
            var factory  = GetProviderFactory();
            var provider = new StubSqlProvider();

            using (mocks.Record())
            {
                factory.CreateProvider("somestring");
                LastCall.Return(provider).IgnoreArguments();
            }

            DataBoy.ForTable("Person").Row("IdPerson", 1).Data("Surname", "Obama").ForUpdate().Commit();

            Assert.IsTrue(provider.GetExecutedQuery(0).StartsWith("UPDATE"));
        }
Пример #6
0
        public void IncRowVersion_HappyDays_SendsCorrectSqlToProvider()
        {
            var factory  = GetProviderFactory();
            var provider = new StubSqlProvider();

            using (mocks.Record())
            {
                factory.CreateProvider("somestring");
                LastCall.Return(provider).IgnoreArguments();
            }

            Adversary.ForTable("Person").IdentifiedBy("IdPerson", 1).IncRowVersion("Version");

            Assert.AreEqual("UPDATE Person SET Version = Version + 1 WHERE IdPerson = 1", provider.GetExecutedQuery(0));
        }
Пример #7
0
        public void Commit_ForUpdate_UniqueKeyColumnNotIncludedInUpdateStatement()
        {
            var factory  = GetProviderFactory();
            var provider = new StubSqlProvider();

            using (mocks.Record())
            {
                factory.CreateProvider("somestring");
                LastCall.Return(provider).IgnoreArguments();
            }

            string idColumenName = "IdPerson";

            DataBoy.ForTable("Person").Row(idColumenName, 1).Data("Surname", "Obama").ForUpdate().Commit();

            Assert.AreEqual("UPDATE Person SET SURNAME = 'Obama' WHERE IdPerson = 1", provider.GetExecutedQuery(0));
        }
Пример #8
0
        public void Values_WithMultipleRows_SendSqlAsExpected()
        {
            var factory  = GetProviderFactory();
            var provider = new StubSqlProvider();

            using (mocks.Record())
            {
                factory.CreateProvider("somestring");
                LastCall.Return(provider).IgnoreArguments();
            }

            DataBoy.ForTable("Person")
            .Values(
                Column.Named("FirstName").Eq("Steel"),
                Column.Named("LastName").Eq("Hotman"));

            Assert.AreEqual("INSERT INTO Person (FIRSTNAME, LASTNAME) VALUES('Steel', 'Hotman')", provider.GetExecutedQuery(0));
        }
 public void SetUp()
 {
     StubSqlProvider.Clear();
 }