public void Given_AFilterBuilderForATypeWithACustomSchemaThatHasAPageSizeAndPageIndex_When_FilterIsCreated_Then_FilterQueryStringShouldMatchExpectations() { const int pageIndex = 1; const int pageSize = 100; using (var context = new TestDbContext()) { var filterBuilder = new FilterBuilder<CustomTestClass>().SkipPages(pageIndex).Take(pageSize); var filter = new Filter<CustomTestClass>(context, filterBuilder); Assert.AreEqual($"SELECT [StartDateTime] AS [StartDateTime], [Id] AS [Id], [{Contstants.CustomColumnName}] AS [Name], [EndDateTimeOffset] AS [EndDateTimeOffset], [IsActive] AS [IsActive] FROM [{Contstants.CustomSchemaName}].[{Contstants.CustomTableName}] ORDER BY [{Contstants.CustomKeyName}] OFFSET {pageIndex} ROWS FETCH NEXT {pageSize + 1} ROWS ONLY", filter.SqlQueryStringBuilder.ToString()); } }
public void Given_AFilterBuilderForATypeWithACustomSchemaThatShouldReturnAllResultsWithACompoundOrFilter_When_FilterIsCreated_Then_FilterQueryStringShouldMatchExpectations() { using (var context = new TestDbContext()) { var filterBuilder = new FilterBuilder<CustomTestClass>() .Where(tc => tc.Id, NumericFilterType.Equals, 1) .Or(tc => tc.Name, StringFilterType.StartsWith, "Foo") .ReturnAllResults(); var filter = new Filter<CustomTestClass>(context, filterBuilder); Assert.AreEqual($"SELECT [StartDateTime] AS [StartDateTime], [Id] AS [Id], [{Contstants.CustomColumnName}] AS [Name], [EndDateTimeOffset] AS [EndDateTimeOffset], [IsActive] AS [IsActive] FROM [{Contstants.CustomSchemaName}].[{Contstants.CustomTableName}] WHERE ( [Id] = @p0 OR [{Contstants.CustomColumnName}] LIKE @p1 + '%' ) ORDER BY [{Contstants.CustomKeyName}]", filter.SqlQueryStringBuilder.ToString()); Assert.AreEqual("p0", ((SqlParameter)filter.Parameters[0]).ParameterName); Assert.AreEqual(1, ((SqlParameter)filter.Parameters[0]).Value); Assert.AreEqual("p1", ((SqlParameter)filter.Parameters[1]).ParameterName); Assert.AreEqual("Foo", ((SqlParameter)filter.Parameters[1]).Value); } }
public void Given_AType_When_MapDbPropertiesIsInvoked_Then_MappedPropertiesShouldContainTheTableName() { using (var context = new TestDbContext()) { var properties = context.MapDbProperties<TestClass>(); Assert.AreEqual("TestClasses", properties.DbTableName); } }
public void Given_AType_When_MapDbPropertiesIsInvoked_Then_MappedPropertiesShouldContainTheProperties() { using (var context = new TestDbContext()) { var properties = context.MapDbProperties<TestClass>(); Assert.AreEqual("Id", properties.ObjectPropertyColumnNameMapper["Id"]); Assert.AreEqual("Name", properties.ObjectPropertyColumnNameMapper["Name"]); Assert.AreEqual("StartDateTime", properties.ObjectPropertyColumnNameMapper["StartDateTime"]); Assert.AreEqual("EndDateTimeOffset", properties.ObjectPropertyColumnNameMapper["EndDateTimeOffset"]); Assert.AreEqual("IsActive", properties.ObjectPropertyColumnNameMapper["IsActive"]); } }
public void Given_AType_When_MapDbPropertiesIsInvoked_Then_MappedPropertiesShouldContainThePrimaryKey() { using (var context = new TestDbContext()) { var properties = context.MapDbProperties<TestClass>(); Assert.AreEqual("Id", properties.PrimaryKeyPropertyName); } }
public void Given_ATypeWithACustomTableName_When_MapDbPropertiesIsInvoked_Then_MappedPropertiesShouldContainTheCustomTableName() { using (var context = new TestDbContext()) { var properties = context.MapDbProperties<CustomTestClass>(); Assert.AreEqual((object)Contstants.CustomTableName, properties.DbTableName); } }
public void Given_ATypeWithACustomPrimaryKey_When_MapDbPropertiesIsInvoked_Then_MappedPropertiesShouldContainTheCustomPrimaryKey() { using (var context = new TestDbContext()) { var properties = context.MapDbProperties<CustomTestClass>(); Assert.AreEqual((object)Contstants.CustomKeyName, properties.PrimaryKeyPropertyName); Assert.AreEqual("Id", properties.ObjectPropertyColumnNameMapper["Id"]); Assert.AreEqual("StartDateTime", properties.ObjectPropertyColumnNameMapper["StartDateTime"]); Assert.AreEqual("EndDateTimeOffset", properties.ObjectPropertyColumnNameMapper["EndDateTimeOffset"]); Assert.AreEqual("IsActive", properties.ObjectPropertyColumnNameMapper["IsActive"]); } }
public void Given_ATypeWithACustomColumnMapping_When_MapDbPropertiesIsInvoked_Then_MappedPropertiesShouldContainTheCustomMapping() { using (var context = new TestDbContext()) { var properties = context.MapDbProperties<CustomTestClass>(); Assert.AreEqual((object)Contstants.CustomColumnName, properties.ObjectPropertyColumnNameMapper["Name"]); } }
public void Given_AFilterBuilder_When_FilterIsCreated_Then_FilterQueryStringShouldMatchExpectations() { using (var context = new TestDbContext()) { var filterBuilder = new FilterBuilder<TestClass>().Where(tc => tc.Id, NumericFilterType.Equals, 1); var filter = new Filter<TestClass>(context, filterBuilder); Assert.AreEqual($"SELECT [Id] AS [Id], [Name] AS [Name], [StartDateTime] AS [StartDateTime], [EndDateTimeOffset] AS [EndDateTimeOffset], [IsActive] AS [IsActive] FROM [dbo].[TestClasses] WHERE [Id] = @p0 ORDER BY [Id] OFFSET 0 ROWS FETCH NEXT {filterBuilder.Take + 1} ROWS ONLY", filter.SqlQueryStringBuilder.ToString()); Assert.AreEqual("p0", ((SqlParameter)filter.Parameters.First()).ParameterName); Assert.AreEqual(1, ((SqlParameter)filter.Parameters.First()).Value); } }
public void Given_AFilterBuilderWithACompoundOrAndNestedAndFilter_When_FilterIsCreated_Then_FilterQueryStringShouldMatchExpectations() { using (var context = new TestDbContext()) { var filterBuilder = new FilterBuilder<TestClass>() .Where(tc => tc.Id, NumericFilterType.Equals, 1) .Or(new NumericCriterion<TestObject, int>(t => t.Id, NumericFilterType.Equals, 2) .And(new StringCriterion<TestClass>(t => t.Name, StringFilterType.StartsWith, "Foo"))); var filter = new Filter<TestClass>(context, filterBuilder); Assert.AreEqual($"SELECT [Id] AS [Id], [Name] AS [Name], [StartDateTime] AS [StartDateTime], [EndDateTimeOffset] AS [EndDateTimeOffset], [IsActive] AS [IsActive] FROM [dbo].[TestClasses] WHERE ( [Id] = @p0 OR ( [Id] = @p1 AND [Name] LIKE @p2 + '%' ) ) ORDER BY [Id] OFFSET 0 ROWS FETCH NEXT {filterBuilder.Take + 1} ROWS ONLY", filter.SqlQueryStringBuilder.ToString()); Assert.AreEqual("p0", ((SqlParameter)filter.Parameters[0]).ParameterName); Assert.AreEqual(1, ((SqlParameter)filter.Parameters[0]).Value); Assert.AreEqual("p1", ((SqlParameter)filter.Parameters[1]).ParameterName); Assert.AreEqual(2, ((SqlParameter)filter.Parameters[1]).Value); Assert.AreEqual("p2", ((SqlParameter)filter.Parameters[2]).ParameterName); Assert.AreEqual("Foo", ((SqlParameter)filter.Parameters[2]).Value); } }
public void Given_AFilterBuilderThatShouldReturnAllResults_When_FilterIsCreated_Then_FilterQueryStringShouldMatchExpectations() { const bool returnAllResults = true; using (var context = new TestDbContext()) { var filterBuilder = new FilterBuilder<TestClass> { ReturnAllResults = returnAllResults }; var filter = new Filter<TestClass>(context, filterBuilder); Assert.AreEqual("SELECT [Id] AS [Id], [Name] AS [Name], [StartDateTime] AS [StartDateTime], [EndDateTimeOffset] AS [EndDateTimeOffset], [IsActive] AS [IsActive] FROM [dbo].[TestClasses] ORDER BY [Id]", filter.SqlQueryStringBuilder.ToString()); } }
public void Given_AFilterBuilderThatShouldReturnAllResultsWithAWhereFilter_When_FilterIsCreated_Then_FilterQueryStringShouldMatchExpectations() { using (var context = new TestDbContext()) { var filterBuilder = new FilterBuilder<TestClass> { ReturnAllResults = true }; filterBuilder.Where(tc => tc.Id, NumericFilterType.Equals, 1); var filter = new Filter<TestClass>(context, filterBuilder); Assert.AreEqual("SELECT [Id] AS [Id], [Name] AS [Name], [StartDateTime] AS [StartDateTime], [EndDateTimeOffset] AS [EndDateTimeOffset], [IsActive] AS [IsActive] FROM [dbo].[TestClasses] WHERE [Id] = @p0 ORDER BY [Id]", filter.SqlQueryStringBuilder.ToString()); Assert.AreEqual("p0", ((SqlParameter)filter.Parameters.First()).ParameterName); Assert.AreEqual(1, ((SqlParameter)filter.Parameters.First()).Value); } }
public void Given_AFilterBuilderThatHasAPageSizeAndPageIndex_When_FilterIsCreated_Then_FilterQueryStringShouldMatchExpectations() { const int pageIndex = 1; const int pageSize = 100; using (var context = new TestDbContext()) { var filterBuilder = new FilterBuilder<TestClass> { Skip = pageIndex, Take = pageSize }; var filter = new Filter<TestClass>(context, filterBuilder); Assert.AreEqual($"SELECT [Id] AS [Id], [Name] AS [Name], [StartDateTime] AS [StartDateTime], [EndDateTimeOffset] AS [EndDateTimeOffset], [IsActive] AS [IsActive] FROM [dbo].[TestClasses] ORDER BY [Id] OFFSET {pageIndex} ROWS FETCH NEXT {pageSize + 1} ROWS ONLY", filter.SqlQueryStringBuilder.ToString()); } }
public void Given_AFilterBuilderForATypeWithACustomSchemaThatShouldReturnAllResults_When_FilterIsCreated_Then_FilterQueryStringShouldMatchExpectations() { using (var context = new TestDbContext()) { var filterBuilder = new FilterBuilder<CustomTestClass>().ReturnAllResults(); var filter = new Filter<CustomTestClass>(context, filterBuilder); Assert.AreEqual($"SELECT [StartDateTime] AS [StartDateTime], [Id] AS [Id], [{Contstants.CustomColumnName}] AS [Name], [EndDateTimeOffset] AS [EndDateTimeOffset], [IsActive] AS [IsActive] FROM [{Contstants.CustomSchemaName}].[{Contstants.CustomTableName}] ORDER BY [{Contstants.CustomKeyName}]", filter.SqlQueryStringBuilder.ToString()); } }