public void Filters_result_by_conditions(IDialect dialect) { using (var database = BlankDatabaseFactory.MakeDatabase(dialect)) { // Arrange database.Insert(new Dog { Name = "Some Name 1", Age = 10 }); database.Insert(new Dog { Name = "Some Name 2", Age = 10 }); database.Insert(new Dog { Name = "Some Name 3", Age = 10 }); database.Insert(new Dog { Name = "Some Name 4", Age = 11 }); // Act var pageBuilder = new PageIndexPageBuilder(1, 10); var entities = database.GetPage <Dog>(pageBuilder, "Age", new { Age = 10 }); // Assert entities.Items.Count().Should().Be(3); } }
public async Task Counts_entities_in_alternate_schema(IDialect dialect) { using (var database = BlankDatabaseFactory.MakeDatabase(dialect)) { // Arrange database.Insert <int>(new SchemaOther { Name = "Some Name" }); database.Insert <int>(new SchemaOther { Name = "Some Name" }); database.Insert <int>(new SchemaOther { Name = "Some Name" }); database.Insert <int>(new SchemaOther { Name = "Some Name" }); // Act var result = await database.CountAsync <SchemaOther>(); // Assert result.Should().Be(4); } }
public void Inserts_into_other_schemas(IDialect dialect) { using (var database = BlankDatabaseFactory.MakeDatabase(dialect)) { // Arrange var entities = new[] { new SchemaOther { Name = "Some Name" }, new SchemaOther { Name = "Some Name2" }, new SchemaOther { Name = "Some Name3" } }; // Act database.InsertRange <SchemaOther, int>(entities, (e, k) => { e.Id = k; }); // Assert entities[0].Id.Should().BeGreaterThan(0); entities[1].Id.Should().BeGreaterThan(entities[0].Id); entities[2].Id.Should().BeGreaterThan(entities[1].Id); } }
public async Task Returns_first_N_matching_rows(IDialect dialect) { using (var database = BlankDatabaseFactory.MakeDatabase(dialect)) { // Arrange database.Insert(new Dog { Name = "Some Name 4", Age = 11 }); database.Insert(new Dog { Name = "Some Name 3", Age = 10 }); database.Insert(new Dog { Name = "Some Name 2", Age = 10 }); database.Insert(new Dog { Name = "Some Name 1", Age = 10 }); var orderBy = dialect is SqlServer2012Dialect ? "[Name] ASC" : "name ASC"; // Act var entities = await database.GetTopAsync <Dog>(2, orderBy); // Assert entities.Should().BeEquivalentTo(new[] { new { Name = "Some Name 1", Age = 10 }, new { Name = "Some Name 2", Age = 10 } }, o => o.WithStrictOrdering()); } }
public async Task Counts_all_entities_when_conditions_is_empty(IDialect dialect) { using (var database = BlankDatabaseFactory.MakeDatabase(dialect)) { // Arrange database.Insert(new Dog { Name = "Some Name 1", Age = 10 }); database.Insert(new Dog { Name = "Some Name 2", Age = 10 }); database.Insert(new Dog { Name = "Some Name 3", Age = 10 }); database.Insert(new Dog { Name = "Some Name 4", Age = 11 }); // Act var result = await database.CountAsync <Dog>(new { }); // Assert result.Should().Be(4); } }
private long PerformInsertRange(IDialect dialect) { using (var database = BlankDatabaseFactory.MakeDatabase(dialect)) { // Arrange var entities = Enumerable.Range(0, 30000).Select(i => new SimpleBenchmarkEntity { FirstName = $"First Name {i}", LastName = $"Last Name {i}", DateOfBirth = DateTime.Now }).ToList(); var stopWatch = Stopwatch.StartNew(); // Act using (var transaction = database.StartUnitOfWork()) { transaction.InsertRange(entities); transaction.SaveChanges(); } // Assert stopWatch.Stop(); Console.WriteLine($"Performed insertrange in {stopWatch.ElapsedMilliseconds}ms"); return(stopWatch.ElapsedMilliseconds); } }
public async Task Filters_result_by_conditions(IDialect dialect) { using (var database = BlankDatabaseFactory.MakeDatabase(dialect)) { // Arrange database.Insert(new Dog { Name = "Some Name 1", Age = 10 }); database.Insert(new Dog { Name = "Some Name 2", Age = 10 }); database.Insert(new Dog { Name = "Some Name 3", Age = 10 }); database.Insert(new Dog { Name = "Some Name 4", Age = 11 }); // Act var entities = await database.GetTopAsync <Dog>(2, "name", "WHERE Name LIKE CONCAT(@Name, '%') and Age = @Age", new { Name = "Some Name", Age = 10 }); // Assert entities.Should().HaveCount(2); } }
public async Task Filters_result_by_conditions(IDialect dialect) { using (var database = BlankDatabaseFactory.MakeDatabase(dialect)) { // Arrange database.Insert(new Dog { Name = "Some Name 1", Age = 10 }); database.Insert(new Dog { Name = "Some Name 2", Age = 10 }); database.Insert(new Dog { Name = "Some Name 3", Age = 10 }); database.Insert(new Dog { Name = "Some Name 4", Age = 11 }); // Act var entities = await database.GetRangeAsync <Dog>(new { Age = 10 }); // Assert entities.Count().Should().Be(3); } }
public async Task Matches_column_name_case_insensitively(IDialect dialect) { using (var database = BlankDatabaseFactory.MakeDatabase(dialect)) { // Arrange database.Insert(new Dog { Name = "Some Name 1", Age = 10 }); database.Insert(new Dog { Name = "Some Name 2", Age = 10 }); database.Insert(new Dog { Name = "Some Name 3", Age = 10 }); database.Insert(new Dog { Name = "Some Name 4", Age = 11 }); // Act var entities = await database.GetRangeAsync <Dog>(new { age = 10 }); // Assert entities.Count().Should().Be(3); } }
public void Test_Single_First_Default() { using (var database = BlankDatabaseFactory.MakeDatabase(Dialect.SqlServer2012)) { var sql = "select 0 where 1 = 0;"; // no rows var ex = Assert.Throws <InvalidOperationException>(() => database.QueryFirst <int>(sql)); Assert.Equal("Sequence contains no elements", ex.Message); ex = Assert.Throws <InvalidOperationException>(() => database.QuerySingle <int>(sql)); Assert.Equal("Sequence contains no elements", ex.Message); Assert.Equal(0, database.QueryFirstOrDefault <int>(sql)); Assert.Equal(0, database.QuerySingleOrDefault <int>(sql)); sql = "select 1;"; // one row Assert.Equal(1, database.QueryFirst <int>(sql)); Assert.Equal(1, database.QuerySingle <int>(sql)); Assert.Equal(1, database.QueryFirstOrDefault <int>(sql)); Assert.Equal(1, database.QuerySingleOrDefault <int>(sql)); sql = "select 2 union select 3 order by 1;"; // two rows Assert.Equal(2, database.QueryFirst <int>(sql)); ex = Assert.Throws <InvalidOperationException>(() => database.QuerySingle <int>(sql)); Assert.Equal("Sequence contains more than one element", ex.Message); Assert.Equal(2, database.QueryFirstOrDefault <int>(sql)); ex = Assert.Throws <InvalidOperationException>(() => database.QuerySingleOrDefault <int>(sql)); Assert.Equal("Sequence contains more than one element", ex.Message); } }
public void TestExecuteMultipleCommandStrongType() { using (var database = BlankDatabaseFactory.MakeDatabase(Dialect.SqlServer2012)) { database.Execute("create table #t(Name nvarchar(max), Age int)"); try { var tally = database.ExecuteMultiple("insert #t (Name,Age) values(@Name, @Age)", new List <Student> { new Student { Age = 1, Name = "sam" }, new Student { Age = 2, Name = "bob" } }); var sum = database.Query <int>("select sum(Age) from #t").First(); Assert.Equal(2, tally.NumRowsAffected); Assert.Equal(3, sum); } finally { database.Execute("drop table #t"); } } }
public void TupleClassParameter_Works() { using (var database = BlankDatabaseFactory.MakeDatabase(Dialect.SqlServer2012)) { Assert.Equal(42, database.QuerySingle <int>("select @Item1", Tuple.Create(42, "Fred"))); } }
public void Gets_second_page(IDialect dialect) { using (var database = BlankDatabaseFactory.MakeDatabase(dialect)) { // Arrange database.Insert(new Dog { Name = "Some Name 1", Age = 10 }); database.Insert(new Dog { Name = "Some Name 2", Age = 10 }); database.Insert(new Dog { Name = "Some Name 3", Age = 10 }); database.Insert(new Dog { Name = "Some Name 4", Age = 11 }); // Act var entities = database.GetPage <Dog>( new PageIndexPageBuilder(2, 2), "Age DESC", "WHERE Name LIKE CONCAT(@Name, '%') and Age = @Age", new { Name = "Some Name", Age = 10 }).Items; // Assert entities.Count().Should().Be(1); entities[0].Name.Should().Be("Some Name 3"); } }
public void Gets_first_page(IDialect dialect) { using (var database = BlankDatabaseFactory.MakeDatabase(dialect)) { // Arrange database.Insert(new Dog { Name = "Some Name 1", Age = 10 }); database.Insert(new Dog { Name = "Some Name 2", Age = 10 }); database.Insert(new Dog { Name = "Some Name 3", Age = 10 }); database.Insert(new Dog { Name = "Some Name 4", Age = 11 }); // Act var pageBuilder = new PageIndexPageBuilder(1, 2); var page = database.GetPage <Dog>(pageBuilder, "Age", new { Age = 10 }); var entities = page.Items; // Assert entities.Count().Should().Be(2); entities[0].Name.Should().Be("Some Name 1"); entities[1].Name.Should().Be("Some Name 2"); } }
public async Task Filters_result_by_conditions(IDialect dialect) { using (var database = BlankDatabaseFactory.MakeDatabase(dialect)) { // Arrange database.Insert(new Dog { Name = "Some Name 1", Age = 10 }); database.Insert(new Dog { Name = "Some Name 2", Age = 10 }); database.Insert(new Dog { Name = "Some Name 3", Age = 10 }); database.Insert(new Dog { Name = "Some Name 4", Age = 11 }); // Act var entities = await database.GetPageAsync <Dog>( new PageIndexPageBuilder(1, 10), "Age", "WHERE Name LIKE CONCAT(@Name, '%') and Age = @Age", new { Name = "Some Name", Age = 10 }); // Assert entities.Items.Count().Should().Be(3); } }
public async Task Returns_everything_when_conditions_is_null(IDialect dialect) { using (var database = BlankDatabaseFactory.MakeDatabase(dialect)) { // Arrange database.Insert(new Dog { Name = "Some Name 1", Age = 10 }); database.Insert(new Dog { Name = "Some Name 2", Age = 10 }); database.Insert(new Dog { Name = "Some Name 3", Age = 10 }); database.Insert(new Dog { Name = "Some Name 4", Age = 11 }); // Act var entities = await database.GetRangeAsync <Dog>(null); // Assert entities.Count().Should().Be(4); } }
public async Task Gets_first_page(IDialect dialect) { using (var database = BlankDatabaseFactory.MakeDatabase(dialect)) { // Arrange database.Insert(new Dog { Name = "Some Name 1", Age = 10 }); database.Insert(new Dog { Name = "Some Name 2", Age = 10 }); database.Insert(new Dog { Name = "Some Name 3", Age = 10 }); database.Insert(new Dog { Name = "Some Name 4", Age = 11 }); // Act var entities = (await database.GetPageAsync <Dog>( new PageIndexPageBuilder(1, 2), "Age DESC", "WHERE Name LIKE CONCAT(@Name, '%') and Age = @Age", new { Name = "Some Name", Age = 10 })).Items; // Assert entities.Count().Should().Be(2); entities[0].Name.Should().Be("Some Name 1"); entities[1].Name.Should().Be("Some Name 2"); } }
public void Counts_all_entities_when_conditions_is_null(IDialect dialect) { using (var database = BlankDatabaseFactory.MakeDatabase(dialect)) { // Arrange database.Insert(new Dog { Name = "Some Name 1", Age = 10 }); database.Insert(new Dog { Name = "Some Name 2", Age = 10 }); database.Insert(new Dog { Name = "Some Name 3", Age = 10 }); database.Insert(new Dog { Name = "Some Name 4", Age = 11 }); // Act var result = database.Count <Dog>(); // Assert result.Should().Be(4); } }
public void Gets_all(IDialect dialect) { using (var database = BlankDatabaseFactory.MakeDatabase(dialect)) { // Arrange database.Insert(new Dog { Name = "Some Name 1", Age = 10 }); database.Insert(new Dog { Name = "Some Name 2", Age = 10 }); database.Insert(new Dog { Name = "Some Name 3", Age = 10 }); database.Insert(new Dog { Name = "Some Name 4", Age = 11 }); // Act var entities = database.GetAll <Dog>(); // Assert entities.Count().Should().Be(4); } }
public async Task TestBasicStringUsageQueryFirstAsync() { using (var database = BlankDatabaseFactory.MakeDatabase(Dialect.SqlServer2012)) { Assert.Equal("abc", await database.QueryFirstAsync <string>("select 'abc' as [Value] union all select @value", new { value = "def" }).ConfigureAwait(false)); } }
public async Task Filters_result_by_conditions(IDialect dialect) { using (var database = BlankDatabaseFactory.MakeDatabase(dialect)) { // Arrange database.Insert(new Dog { Name = "Some Name 1", Age = 11 }); database.Insert(new Dog { Name = "Some Name 2", Age = 10 }); database.Insert(new Dog { Name = "Some Name 3", Age = 10 }); database.Insert(new Dog { Name = "Some Name 4", Age = 10 }); // Act var entities = await database.GetTopAsync <Dog>(2, "name", new { Age = 10 }); // Assert entities.Should().BeEquivalentTo(new[] { new { Name = "Some Name 2", Age = 10 }, new { Name = "Some Name 3", Age = 10 } }, o => o.WithStrictOrdering()); } }
public async Task Returns_empty_set_past_last_page(IDialect dialect) { using (var database = BlankDatabaseFactory.MakeDatabase(dialect)) { // Arrange database.Insert(new Dog { Name = "Some Name 1", Age = 10 }); database.Insert(new Dog { Name = "Some Name 2", Age = 10 }); database.Insert(new Dog { Name = "Some Name 3", Age = 10 }); database.Insert(new Dog { Name = "Some Name 4", Age = 11 }); // Act var entities = (await database.GetPageAsync <Dog>( new PageIndexPageBuilder(3, 2), "Age DESC", "WHERE Name LIKE CONCAT(@Name, '%') and Age = @Age", new { Name = "Some Name", Age = 10 })).Items; // Assert entities.Should().BeEmpty(); } }
public void Throws_exception_if_orderby_is_not_a_known_column(IDialect dialect) { using (var database = BlankDatabaseFactory.MakeDatabase(dialect)) { // Arrange database.Insert(new Dog { Name = "Some Name 1", Age = 10 }); database.Insert(new Dog { Name = "Some Name 2", Age = 10 }); database.Insert(new Dog { Name = "Some Name 3", Age = 10 }); database.Insert(new Dog { Name = "Some Name 4", Age = 11 }); // Act Func <Task> act = async() => await database.GetTopAsync <Dog>(2, "WHERE Age = 10"); // Assert act.Should().Throw <Exception>(); } }
public async Task Returns_page_from_everything_when_conditions_is_null(IDialect dialect) { using (var database = BlankDatabaseFactory.MakeDatabase(dialect)) { // Arrange database.Insert(new Dog { Name = "Some Name 1", Age = 10 }); database.Insert(new Dog { Name = "Some Name 2", Age = 10 }); database.Insert(new Dog { Name = "Some Name 3", Age = 10 }); database.Insert(new Dog { Name = "Some Name 4", Age = 11 }); // Act var page = await database.GetPageAsync <Dog>(new PageIndexPageBuilder(2, 2), "Age DESC"); var entities = page.Items; // Assert entities.Count().Should().Be(2); } }
public async Task Counts_entities_matching_conditions(IDialect dialect) { using (var database = BlankDatabaseFactory.MakeDatabase(dialect)) { // Arrange database.Insert(new Dog { Name = "Some Name 1", Age = 10 }); database.Insert(new Dog { Name = "Some Name 2", Age = 10 }); database.Insert(new Dog { Name = "Some Name 3", Age = 10 }); database.Insert(new Dog { Name = "Some Name 4", Age = 11 }); // Act var result = await database.CountAsync <Dog>($"WHERE Age < {11}"); // Assert result.Should().Be(3); } }
public async Task Gets_second_page(IDialect dialect) { using (var database = BlankDatabaseFactory.MakeDatabase(dialect)) { // Arrange database.Insert(new Dog { Name = "Some Name 1", Age = 10 }); database.Insert(new Dog { Name = "Some Name 2", Age = 10 }); database.Insert(new Dog { Name = "Some Name 3", Age = 10 }); database.Insert(new Dog { Name = "Some Name 4", Age = 11 }); // Act var pageBuilder = new PageIndexPageBuilder(2, 2); var page = await database.GetPageAsync <Dog>(pageBuilder, "Age DESC", new { Age = 10 }); var entities = page.Items; // Assert entities.Count().Should().Be(1); entities[0].Name.Should().Be("Some Name 3"); } }
public void Inserts_entity_with_int64_primary_key(IDialect dialect) { using (var database = BlankDatabaseFactory.MakeDatabase(dialect)) { // Arrange var entities = new[] { new KeyInt64 { Name = "Some Name" }, new KeyInt64 { Name = "Some Name2" }, new KeyInt64 { Name = "Some Name3" } }; // Act database.InsertRange <KeyInt64, long>(entities, (e, k) => { e.Id = k; }); // Assert entities[0].Id.Should().BeGreaterThan(0); entities[1].Id.Should().BeGreaterThan(entities[0].Id); entities[2].Id.Should().BeGreaterThan(entities[1].Id); } }
public async Task Returns_empty_set_past_last_page(IDialect dialect) { using (var database = BlankDatabaseFactory.MakeDatabase(dialect)) { // Arrange database.Insert(new Dog { Name = "Some Name 1", Age = 10 }); database.Insert(new Dog { Name = "Some Name 2", Age = 10 }); database.Insert(new Dog { Name = "Some Name 3", Age = 10 }); database.Insert(new Dog { Name = "Some Name 4", Age = 11 }); // Act var pageBuilder = new PageIndexPageBuilder(3, 2); var page = await database.GetPageAsync <Dog>(pageBuilder, "Age DESC", new { Age = 10 }); var entities = page.Items; // Assert entities.Should().BeEmpty(); } }
public void Gets_first_matching_result(IDialect dialect) { using (var database = BlankDatabaseFactory.MakeDatabase(dialect)) { // Arrange database.Insert(new Dog { Name = "Some Name 1", Age = 10 }); database.Insert(new Dog { Name = "Some Name 2", Age = 10 }); database.Insert(new Dog { Name = "Some Name 3", Age = 10 }); database.Insert(new Dog { Name = "Some Name 4", Age = 11 }); // Act var entity = database.FindFirst <Dog>("Name DESC", new { Age = 10 }); // Assert entity.Should().BeEquivalentTo(new Dog { Name = "Some Name 3", Age = 10 }, o => o.Excluding(e => e.Id)); } }
public async Task Deletes_all_entities(IDialect dialect) { using (var database = BlankDatabaseFactory.MakeDatabase(dialect)) { // Arrange database.Insert(new Dog { Name = "Some Name 1", Age = 10 }); database.Insert(new Dog { Name = "Some Name 2", Age = 10 }); database.Insert(new Dog { Name = "Some Name 3", Age = 10 }); database.Insert(new Dog { Name = "Some Name 4", Age = 11 }); // Act var result = await database.DeleteAllAsync <Dog>(); // Assert result.NumRowsAffected.Should().Be(4); database.Count <Dog>().Should().Be(0); } }