public void ThrowExceptionWhenParameterIsNullAndDataTypeIsNotSetInQuery()
        {
            var parameters = new CommandParameterCollection
            {
                { "@Param1", 1 },
                { "@Param2", null }
            };

            using (SqlServerTestHelper helper = CreateHelper((string)null))
            {
                QueryProvider provider        = CreateQueryProvider(helper.Connection);
                Action        executeNonQuery = () => provider.ExecuteNonQuery("NO QUERY", parameters);
                executeNonQuery.Should().Throw <ArgumentException>().WithMessage("*@Param2*");
            }
        }
Example #2
0
        public void ReturnCorrectItemsFromSelectTableStoredProcedure_WhenUseConnectionString()
        {
            string[] initScripts = { CreateTable_TestTable, CreateProcedure_TableResult };
            using (SqlServerTestHelper helper = CreateHelper(initScripts))
            {
                QueryProvider   provider = CreateQueryProvider(helper.Connection.ConnectionString);
                List <TestItem> result   = provider.ExecuteStoredProcedure <IEnumerable <TestItem> >(Procedure_TableResult).ToList();

                result.Should().BeEquivalentTo(new TestItem[] {
                    new TestItem(1, 10, "Lorem ipsum"),
                    new TestItem(2, 20, null),
                    new TestItem(3, 30, "Hello world"),
                });
            }
        }
        public void ExecuteUpdateQuery()
        {
            using (SqlServerTestHelper helper = CreateHelper(CreateTable_TestTable))
            {
                var query      = $"UPDATE {Table_TestTable} SET Number = @Number WHERE Id >= @Id";
                var parameters = new CommandParameterCollection
                {
                    { "@Id", 2 },
                    { "@Number", 666 }
                };

                QueryProvider provider = CreateQueryProvider(helper.Connection);
                int           result   = provider.ExecuteNonQuery(query, parameters);
                result.Should().Be(2); // Updated 2 rows.
            }
        }
Example #4
0
        public void NotThrowWhenCreatingTableAndStoredProcedureForIdGeneratorAndTheyExist()
        {
            const string tableName     = "IdStore";
            const string procedureName = "spGetNewId";

            using (var helper = new SqlServerTestHelper(BaseConnectionString, BaseDatabaseName, DatabaseInitScripts))
            {
                HasTable(helper.Connection, tableName).Should().BeTrue();
                HasProcedure(helper.Connection, procedureName).Should().BeTrue();

                var idGenerator = new SqlServerIdGenerator(helper.Connection, "TestTable", 1);
                idGenerator.InitDatabaseForIdGenerator();

                HasTable(helper.Connection, tableName).Should().BeTrue();
                HasProcedure(helper.Connection, procedureName).Should().BeTrue();
            }
        }
Example #5
0
        public void CreateTableAndStoredProcedureForIdGeneratorIfNotExits()
        {
            const string tableName     = "IdStore";
            const string procedureName = "spGetNewId";

            using (var helper = new SqlServerTestHelper(BaseConnectionString, BaseDatabaseName))
            {
                HasTable(helper.Connection, tableName).Should().BeFalse();
                HasProcedure(helper.Connection, procedureName).Should().BeFalse();

                var idGenerator = new SqlServerIdGenerator(helper.Connection, "TestTable", 1);
                idGenerator.InitDatabaseForIdGenerator();

                HasTable(helper.Connection, tableName).Should().BeTrue();
                HasProcedure(helper.Connection, procedureName).Should().BeTrue();
            }
        }
Example #6
0
        public void InitForIdGenerator()
        {
            string dbName           = $"KORM_InitIdGenerator";
            string idStoreTableName = "IdStore";

            using (var testHelper = new SqlServerTestHelper(IntegrationTestConfig.ConnectionString, dbName))
                using (IDatabase database = new Database(testHelper.Connection))
                {
                    SqlServerIntIdGeneratorFactory.Register();
                    database.InitDatabaseForIdGenerator();

                    var result = database.ExecuteScalar(
                        $"IF EXISTS (SELECT 1 FROM sys.Tables WHERE Name = N'{idStoreTableName}' AND Type = N'U') " +
                        "SELECT 'true' ELSE SELECT 'false'");
                    result.Should().Be("true");
                }
        }
        public void ReturnCorrectValueFromSelectRowStoredProcedure()
        {
            using (SqlServerTestHelper helper = CreateHelper(CreateProcedure_RowResultWithMultipleValues))
            {
                var parameters = new CommandParameterCollection
                {
                    { "@Id", 1 },
                    { "@Number", 10 },
                    { "@Description", "Lorem ipsum" }
                };

                QueryProvider provider = CreateQueryProvider(helper.Connection);
                TestItem      result   = provider.ExecuteStoredProcedure <TestItem>(Procedure_RowResultWithMultipleValues, parameters);

                result.Should().Be(new TestItem(1, 10, "Lorem ipsum"));
            }
        }
        public void ExecuteInsertQuery()
        {
            using (SqlServerTestHelper helper = CreateHelper(CreateTable_TestTable))
            {
                var query      = $"INSERT INTO {Table_TestTable} (Id, Number, Description) VALUES (@Id, @Number, @Description)";
                var parameters = new CommandParameterCollection
                {
                    { "@Id", 6 },
                    { "@Number", 666 },
                    { "@Description", "Sed ac lobortis magna." }
                };

                QueryProvider provider = CreateQueryProvider(helper.Connection);
                int           result   = provider.ExecuteNonQuery(query, parameters);
                result.Should().Be(1); // Inserted 1 row.
            }
        }
        public void ReturnCorrectValueFromStoredProcedure()
        {
            using (SqlServerTestHelper helper = CreateHelper(CreateProcedure_ScalarResult))
            {
                const int param1   = 11;
                const int param2   = 22;
                const int expected = 33;

                var parameters = new CommandParameterCollection
                {
                    { "@Param1", param1 },
                    { "@Param2", param2 }
                };

                QueryProvider provider = CreateQueryProvider(helper.Connection);
                int           result   = provider.ExecuteStoredProcedure <int>(Procedure_ScalarResult, parameters);

                result.Should().Be(expected);
            }
        }
Example #10
0
        public void ReturnCorrectValueFromStoredProcedureUsingOutputParameter()
        {
            using (SqlServerTestHelper helper = CreateHelper(CreateProcedure_OutputParameter))
            {
                const int inputParamValue       = 10;
                const int inputOutputParamValue = 100;

                var parameters = new CommandParameterCollection
                {
                    { "@InputParam", inputParamValue },
                    { "@InputOutputParam", inputOutputParamValue, DbType.Int32, ParameterDirection.InputOutput },
                    { "@OutputParam", 0, DbType.Int32, ParameterDirection.Output }
                };

                QueryProvider provider = CreateQueryProvider(helper.Connection);
                int           result   = provider.ExecuteStoredProcedure <int>(Procedure_OutputParameter, parameters);

                parameters["@OutputParam"].Value.Should().Be(inputParamValue * 2);
                parameters["@InputOutputParam"].Value.Should().Be(inputOutputParamValue * 2);
            }
        }
 protected override void Dispose(bool disposing)
 {
     base.Dispose(disposing);
     _sqlServerTestHelper?.Dispose();
     _sqlServerTestHelper = null;
 }
 public TestDatabase(SqlServerTestHelper sqlServerTestHelper) : base(sqlServerTestHelper.Connection)
 {
     _sqlServerTestHelper = sqlServerTestHelper;
 }
Example #13
0
 internal BackupManager(SqlServerTestHelper helper, IMonitorTestHelper others)
 {
     _helper = helper;
     Helper  = others;
 }