public void GenerateDeleteWithConditionsParameterTest()
        {
            var condition = new QueryConditionBuilder()
                            .DeclareConditionNode(
                QueryConditionNodeType.And,
                () => new QueryConditionBuilder().DeclareCondition("FirstName", QueryConditionType.NotEquals, "Stevenie"),
                () => new QueryConditionBuilder()
                .DeclareConditionNode(
                    QueryConditionNodeType.Or,
                    () => new QueryConditionBuilder()
                    .DeclareCondition("LastName", QueryConditionType.NotEquals, "Zeitlhofinger"),
                    () => new QueryConditionBuilder()
                    .DeclareCondition("LastName", QueryConditionType.Like, "Halbmayr")))
                            .Build();

            string expectedQuery = "DELETE FROM [Hurace].[Skier] " +
                                   "WHERE ([FirstName] != @FirstName0 AND ([LastName] != @LastName0 OR [LastName] LIKE @LastName1))";

            var queryGenerator = new SqlQueryGenerator <Entities.Skier>();

            (var actualQuery, var actualQueryParameters) = queryGenerator.GenerateDeleteQuery(condition);

            Assert.Equal(expectedQuery, actualQuery);
            Assert.Equal(3, actualQueryParameters.Length);

            var firstNameParameter = actualQueryParameters.First(qp => qp.ParameterName == "FirstName0");
            var lastNameParameter1 = actualQueryParameters.First(qp => qp.ParameterName == "LastName0");
            var lastNameParameter2 = actualQueryParameters.First(qp => qp.ParameterName == "LastName1");

            Assert.Equal("Stevenie", firstNameParameter.Value);
            Assert.Equal("Zeitlhofinger", lastNameParameter1.Value);
            Assert.Equal("Halbmayr", lastNameParameter2.Value);
        }
        public async Task <bool> DeleteByIdAsync(int id)
        {
            (string query, QueryParameter[] parameters) = SqlQueryGenerator.GenerateDeleteQuery(id);

            int numberOfAffectedRows = await template.ExecuteAsync(query, parameters)
                                       .ConfigureAwait(false);

            return(numberOfAffectedRows == 1);
        }
Beispiel #3
0
        public void GenerateDeleteQuery_NoPrimaryKey_Valid()
        {
            // Arrange
            var generator = new SqlQueryGenerator <HeapEntity>("dbo", "Users");

            // Act
            var deleteQuery = generator.GenerateDeleteQuery();

            // Assert
            Assert.Equal($"DELETE FROM [dbo].[Users] OUTPUT [deleted].[Username], [deleted].[Password] WHERE [dbo].[Users].[Username] = @Username AND [dbo].[Users].[Password] = @Password;", deleteQuery);
        }
Beispiel #4
0
        public void GenerateDeleteQuery_CustomColumnNames_Valid()
        {
            // Arrange
            var generator = new SqlQueryGenerator <CustomColumnNamesEntity>("dbo", "Orders");

            // Act
            var deleteQuery = generator.GenerateDeleteQuery();

            // Assert
            Assert.Equal($"DELETE FROM [dbo].[Orders] OUTPUT [deleted].[OrderId] AS [Id], [deleted].[DateCreated] AS [Date] WHERE [dbo].[Orders].[OrderId] = @Id;", deleteQuery);
        }
Beispiel #5
0
        public void GenerateDeleteQuery_CustomSchema_Valid()
        {
            // Arrange
            var generator = new SqlQueryGenerator <SinglePrimaryKeyEntity>("account", "Users");

            // Act
            var query = generator.GenerateDeleteQuery();

            // Assert
            Assert.Equal("DELETE FROM [account].[Users] OUTPUT [deleted].[Id], [deleted].[Username], [deleted].[Password] WHERE [account].[Users].[Id] = @Id;", query);
        }
        public async Task <int> DeleteAsync(IQueryCondition condition)
        {
            if (condition is null)
            {
                throw new ArgumentNullException(nameof(condition));
            }

            (string query, QueryParameter[] parameters) = SqlQueryGenerator.GenerateDeleteQuery(condition);

            return(await template.ExecuteAsync(query, parameters)
                   .ConfigureAwait(false));
        }
        public void GenerateDeleteByIdQueryTest()
        {
            string expectedQuery = "DELETE FROM [Hurace].[StartPosition] WHERE [Id] = @Id0";

            int idToDelete = 135;

            var queryGenerator = new SqlQueryGenerator <Entities.StartPosition>();

            (var generatedQuery, var queryParameters) = queryGenerator.GenerateDeleteQuery(idToDelete);

            Assert.Equal(expectedQuery, generatedQuery);

            Assert.Single(queryParameters);
            Assert.Equal(idToDelete, queryParameters.First().Value);
        }