コード例 #1
0
            public void ShouldThrowArgumentNullExceptionWhenConnectionIsNull()
            {
                var language = new FakeDbLanguage();

                GWT.Given("testing constructor")
                .When(x => new Database <IDbConnection, IDbLanguage>(connection: null, language: language))
                .Then <ArgumentNullException>().ShouldBeThrown().ForParameter("connection");
            }
コード例 #2
0
            public void ShouldThrowArgumentNullExceptionWhenTableIsNull()
            {
                var           connection = new FakeDbConnection(openConnection: true);
                var           language   = new FakeDbLanguage();
                TableMetaData nullTable  = null;

                GWT.Given(new Database <IDbConnection, IDbLanguage>(connection, language))
                .When(d => d.CreateTable(nullTable))
                .Then <ArgumentNullException>().ShouldBeThrown().ForParameter("table");
            }
コード例 #3
0
            public void ShouldThrowArgumentNullExceptionWhenTableIsNull()
            {
                var connection = new FakeDbConnection(openConnection: true);
                var language   = new FakeDbLanguage();
                var row        = new TestEntity();

                GWT.Given(new Database <IDbConnection, IDbLanguage>(connection, language))
                .When(d => d.Insert(row: row, table: null))
                .Then <ArgumentNullException>().ShouldBeThrown().ForParameter("table");
            }
コード例 #4
0
            public void ShouldThrowArgumentNullExceptionWhenRowIsNull()
            {
                var        connection = new FakeDbConnection(openConnection: true);
                var        language   = new FakeDbLanguage();
                var        table      = new TableMetaData <TestEntity>();
                TestEntity nullRow    = null;

                GWT.Given(new Database <IDbConnection, IDbLanguage>(connection, language))
                .When(d => d.Insert(row: nullRow))
                .Then <ArgumentNullException>().ShouldBeThrown().ForParameter("row");
            }
コード例 #5
0
            public void ShouldThrowArgumentExceptionWhenConnectionIsNotOpen()
            {
                // Given
                var connection = new FakeDbConnection(openConnection: false);
                var language   = new FakeDbLanguage();

                // When
                Action action = () => new Database <IDbConnection, IDbLanguage>(connection, language);

                // Then
                action.ShouldThrow <ArgumentException>().WithMessage("Connection must be open. It is closed.\r\nParameter name: connection");
            }
コード例 #6
0
            public void ShouldThrowExceptionWhenCreateTableCommandDoesNotReturnZero()
            {
                // Given
                var connection = new FakeDbConnection(openConnection: true);
                var language   = new FakeDbLanguage();
                var database   = new Database <FakeDbConnection, FakeDbLanguage>(connection, language);
                var table      = new TableMetaData <TestEntity>();

                connection.CreateCommandFactory = () => new FakeDbCommand()
                {
                    ReturnValueForExecuteNonQuery = 1
                };

                // When
                Action action = () => database.CreateTable(table);

                // Then
                action.ShouldThrow <Exception>().WithMessage("CREATE TABLE returned 1. Expected value to be 0.");
            }
コード例 #7
0
            public void ShouldThrowExceptionWhenInsertTableCommandDoesNotReturnOne()
            {
                // Given
                var connection = new FakeDbConnection()
                {
                    CreateCommandFactory = () => new FakeDbCommand()
                    {
                        ReturnValueForExecuteNonQuery = 0
                    }
                };
                var language = new FakeDbLanguage();
                var database = new Database <FakeDbConnection, FakeDbLanguage>(connection, language);
                var row      = new TestEntity();

                // When
                Action action = () => database.Insert(row);

                // Then
                action.ShouldThrow <Exception>().WithMessage("INSERT returned 0. Expected value to be 1.");
            }
コード例 #8
0
            public void ShouldInsertRow()
            {
                // Given
                var connection = new FakeDbConnection()
                {
                    CreateCommandFactory = () => new FakeDbCommand()
                    {
                        ReturnValueForExecuteNonQuery = 1
                    }
                };
                var language = new FakeDbLanguage();
                var database = new Database <FakeDbConnection, FakeDbLanguage>(connection, language);
                var row      = new TestEntity();

                // When
                database.Insert(row);

                // Then
                var command = connection.Commands.Single();

                command.CommandText.Should().Be(FormatCommandText(
                                                    @"INSERT INTO *TestEntities* (
                        *RequiredInt*, 
                        *NullableInt*, 
                        *RequiredString*, 
                        *NullableString*
                    ) 
                    VALUES (
                        #RequiredInt, 
                        #NullableInt, 
                        #RequiredString, 
                        #NullableString
                    );"
                                                    ));

                var parameterNames = from p in command.Parameters.Cast <IDbDataParameter>()
                                     select p.ParameterName;

                parameterNames.ShouldBeEquivalentTo(new string[] { "#RequiredInt", "#NullableInt", "#RequiredString", "#NullableString" });
            }
コード例 #9
0
            public void ShouldIdAfterPreviousInsert()
            {
                // Given
                var expectedLastId = 123;
                var connection     = new FakeDbConnection()
                {
                    CreateCommandFactory = () => new FakeDbCommand()
                    {
                        ReturnValueForExecuteScalar = expectedLastId
                    }
                };
                var language = new FakeDbLanguage();
                var database = new Database <FakeDbConnection, FakeDbLanguage>(connection, language);

                // When
                var lastId = database.GetLastId <TestEntity>();

                // Then
                var command = connection.Commands.Single();

                lastId.Should().Be(expectedLastId);
                command.CommandText.Should().Be("SELECT #GetLastId;");
            }
コード例 #10
0
            public void ShouldCreateTable()
            {
                // Given
                var connection = new FakeDbConnection(openConnection: true);
                var language   = new FakeDbLanguage();
                var database   = new Database <FakeDbConnection, FakeDbLanguage>(connection, language);
                var table      = new TableMetaData <TestEntity>();

                // When
                database.CreateTable(table);

                // Then
                var command = connection.Commands.Single();

                command.CommandText.Should().Be(FormatCommandText(
                                                    @"CREATE TABLE *TestEntities* (
                        *Id* Int32 NOT NULL PRIMARY KEY, 
                        *RequiredInt* Int32 NOT NULL, 
                        *NullableInt* Nullable`1[[Int32]], 
                        *RequiredString* String NOT NULL, 
                        *NullableString* String
                    );"
                                                    ));
            }