public void ThrowExceptionIfAQualifierFieldIsNotPresentAtDataEntityFieldMapping() { // Setup var statementBuilder = new SqlStatementBuilder(); var queryBuilder = new QueryBuilder <ThrowExceptionIfAQualifierFieldIsNotPresentAtDataEntityFieldMappingClass>(); var fields = Field.From(new[] { "Field1", "Field2", "Field4" }); var qualifiers = Field.From(new[] { "Field1", "Field3" }); // Act/Assert statementBuilder.CreateInlineMerge(queryBuilder, fields, qualifiers); }
public void ThrowExceptionIfFieldIsIgnoreInlineMerge() { // Setup var statementBuilder = new SqlStatementBuilder(); var queryBuilder = new QueryBuilder <ThrowExceptionIfFieldIsIgnoreInlineMergeClass>(); var fields = Field.From(new[] { "Field1", "Field2", "Field3" }); var qualifiers = Field.From(new[] { "Field1" }); // Act/Assert statementBuilder.CreateInlineMerge(queryBuilder, fields, qualifiers); }
public void ThrowExceptionIfNoQualifiersAndNoPrimaryFieldDefined() { // Setup var statementBuilder = new SqlStatementBuilder(); var queryBuilder = new QueryBuilder <ThrowExceptionIfNoQualifiersAndNoPrimaryFieldDefinedClass>(); var fields = Field.From(new[] { "Field1", "Field2", "Field3" }); var qualifiers = (IEnumerable <Field>)null; // Act/Assert statementBuilder.CreateInlineMerge(queryBuilder, fields, qualifiers); }
public void ThrowExceptionIfTheQualifiersAreNullWithoutPrimaryKey() { // Setup var statementBuilder = new SqlStatementBuilder(); var queryBuilder = new QueryBuilder <ThrowExceptionIfTheQualifiersAreNullWithoutPrimaryKeyClass>(); var fields = Field.From(new[] { "Field1" }); var qualifiers = (IEnumerable <Field>)null; // Act/Assert statementBuilder.CreateInlineMerge(queryBuilder, fields, qualifiers); }
public void ThrowExceptionOnSqlDbProviderCreateInlineMergeIfTheFieldsAreNull() { // Setup var statementBuilder = new SqlStatementBuilder(); var queryBuilder = new QueryBuilder <ThrowExceptionOnSqlDbProviderCreateInlineMergeIfTheFieldsAreNullClass>(); var fields = (IEnumerable <Field>)null; var qualifiers = Field.From(new[] { "Field1" }); // Act/Assert statementBuilder.CreateInlineMerge(queryBuilder, fields, qualifiers); }
public void ThrowExceptionOnSqlDbProviderCreateInlineMergeIfAnIdentityFieldIsNotAPrimaryField() { // Setup var statementBuilder = new SqlStatementBuilder(); var queryBuilder = new QueryBuilder <ThrowExceptionOnSqlDbProviderCreateInlineMergeIfAnIdentityFieldIsNotAPrimaryFieldClass>(); var fields = Field.From(new[] { "Field1", "Field2", "Field3" }); var qualifiers = Field.From(new[] { "Field1" }); // Act/Assert statementBuilder.CreateInlineMerge(queryBuilder, fields, qualifiers); }
public void TestWithOverrideIgnoreFromUpdate() { // Setup var statementBuilder = new SqlStatementBuilder(); var queryBuilder = new QueryBuilder <TestWithOverrideIgnoreFromUpdateClass>(); var fields = Field.From(new[] { "Field1", "Field2", "Field3" }); var qualifiers = Field.From(new[] { "Field1" }); // Act var actual = statementBuilder.CreateInlineMerge(queryBuilder, fields, qualifiers, true); var expected = $"" + $"MERGE [TestWithOverrideIgnoreFromUpdateClass] AS T " + $"USING ( SELECT @Field1 AS [Field1], @Field2 AS [Field2], @Field3 AS [Field3] ) " + $"AS S ON ( S.[Field1] = T.[Field1] ) " + $"WHEN NOT MATCHED THEN " + $"INSERT ( [Field1], [Field2], [Field3] ) " + $"VALUES ( S.[Field1], S.[Field2], S.[Field3] ) " + $"WHEN MATCHED THEN " + $"UPDATE SET [Field1] = S.[Field1], [Field2] = S.[Field2], [Field3] = S.[Field3] ;"; // Assert Assert.AreEqual(expected, actual); }
public void TestWithClassMappingIdField() { // Setup var statementBuilder = new SqlStatementBuilder(); var queryBuilder = new QueryBuilder <TestWithClassMappingIdFieldClass>(); var fields = Field.From(new[] { "ClassNameId", "Field2", "Field3" }); var qualifiers = (IEnumerable <Field>)null; // Act var actual = statementBuilder.CreateInlineMerge(queryBuilder, fields, qualifiers); var expected = $"" + $"MERGE [ClassName] AS T " + $"USING ( SELECT @ClassNameId AS [ClassNameId], @Field2 AS [Field2], @Field3 AS [Field3] ) " + $"AS S ON ( S.[ClassNameId] = T.[ClassNameId] ) " + $"WHEN NOT MATCHED THEN " + $"INSERT ( [ClassNameId], [Field2], [Field3] ) " + $"VALUES ( S.[ClassNameId], S.[Field2], S.[Field3] ) " + $"WHEN MATCHED THEN " + $"UPDATE SET [Field2] = S.[Field2], [Field3] = S.[Field3] ;"; // Assert Assert.AreEqual(expected, actual); }
public void TestSqlDbProviderCreateInlineMergeWithAttributeMappings() { // Setup var statementBuilder = new SqlStatementBuilder(); var queryBuilder = new QueryBuilder <TestSqlDbProviderCreateInlineMergeWithAttributeMappingsClass>(); var fields = Field.From(new[] { "Field1", "Field2", "Field4" }); var qualifiers = Field.From(new[] { "Field1" }); // Act var actual = statementBuilder.CreateInlineMerge(queryBuilder, fields, qualifiers); var expected = $"" + $"MERGE [TestSqlDbProviderCreateInlineMergeWithAttributeMappingsClass] AS T " + $"USING ( SELECT @Field1 AS [Field1], @Field2 AS [Field2], @Field4 AS [Field4] ) " + $"AS S ON ( S.[Field1] = T.[Field1] ) " + $"WHEN NOT MATCHED THEN " + $"INSERT ( [Field1], [Field2], [Field4] ) " + $"VALUES ( S.[Field1], S.[Field2], S.[Field4] ) " + $"WHEN MATCHED THEN " + $"UPDATE SET [Field2] = S.[Field2], [Field4] = S.[Field4] ;"; // Assert Assert.AreEqual(expected, actual); }