public static void Cleanup()
 {
     using (var dbContext = new TestDbContext())
     {
         dbContext.TestObjects.RemoveRange(dbContext.TestObjects.ToArray());
         dbContext.SaveChanges();
     }
 }
 public static void Initialize(TestContext context)
 {
     using (var dbContext = new TestDbContext())
     {
         dbContext.TestObjects.RemoveRange(dbContext.TestObjects.ToArray());
         TestObjects = dbContext.TestObjects.AddRange(TestObjects).ToArray();
         dbContext.SaveChanges();
     }
 }
        public void EmptySearchCriteriaObjectShouldReturnAllObjectsInDatabase()
        {
            using (var dbContext = new TestDbContext())
            {
                var searchCriteria = new TestSearchCriteria();
                var result = dbContext.TestObjects.Search(dbContext, searchCriteria);

                Assert.AreEqual(TestData.TestObjects.Length, result.Results.Count);
            }
        }
        public void StringSearchCriteriaEndsWithShouldReturnObjectsInDatabaseThatEndWithA()
        {
            using (var dbContext = new TestDbContext())
            {
                var searchCriteria = new TestSearchCriteria
                {
                    TestStringProperty = new StringSearchCriteria
                    {
                        SearchType = StringSearchType.EndsWith,
                        Value = "a"
                    }
                };

                var result = dbContext.TestObjects.Search(dbContext, searchCriteria);

                Assert.AreEqual(TestData.TestObjects.Count(testobject => testobject.TestStringProperty != null && testobject.TestStringProperty.EndsWith("a", StringComparison.OrdinalIgnoreCase)), result.Results.Count);
            }
        }
        public void StringSearchCriteriaContainsShouldReturnObjectsInDatabaseThatContainA()
        {
            using (var dbContext = new TestDbContext())
            {
                var searchCriteria = new TestSearchCriteria
                {
                    TestStringProperty = new StringSearchCriteria
                    {
                        SearchType = StringSearchType.Contains,
                        Value = "a"
                    }
                };

                var result = dbContext.TestObjects.Search(dbContext, searchCriteria);

                Assert.AreEqual(TestData.TestObjects.Count(testobject => testobject.TestStringProperty != null && testobject.TestStringProperty.Contains("a")), result.Results.Count);
            }
        }
        public void DateTimeSearchCriteriaBeforeShouldReturnObjectsInDatabaseThatAreBefore()
        {
            using (var dbContext = new TestDbContext())
            {
                var searchCriteria = new TestSearchCriteria
                {
                    TestDateTimeProperty = new DateTimeSearchCriteria
                    {
                        SearchType = DateTimeSearchType.Before,
                        Value = TestData.DateTimeNow
                    }
                };

                var result = dbContext.TestObjects.Search(dbContext, searchCriteria);

                Assert.AreEqual(TestData.TestObjects.Count(testobject => testobject.TestDateTimeProperty != null && testobject.TestDateTimeProperty < TestData.DateTimeNow), result.Results.Count);
            }
        }
        public void IntegerSearchCriteriaGreaterThanOrEqualsShouldReturnObjectsInDatabaseThatAreGreaterThanOrEqual()
        {
            using (var dbContext = new TestDbContext())
            {
                var searchCriteria = new TestSearchCriteria
                {
                    TestIntegerProperty = new IntegerSearchCriteria
                    {
                        SearchType = IntegerSearchType.GreaterThanOrEquals,
                        Value = TestValue
                    }
                };

                var result = dbContext.TestObjects.Search(dbContext, searchCriteria);

                Assert.AreEqual(TestData.TestObjects.Count(testobject => testobject.TestIntegerProperty != null && testobject.TestIntegerProperty >= TestValue), result.Results.Count);
            }
        }
        public void DateTimeOffsetSearchCriteriaAfterOrEqualsShouldReturnObjectsInDatabaseThatAreAfterOrEquals()
        {
            using (var dbContext = new TestDbContext())
            {
                var searchCriteria = new TestSearchCriteria
                {
                    TestDateTimeOffsetProperty = new DateTimeOffsetSearchCriteria
                    {
                        SearchType = DateTimeOffsetSearchType.AfterOrEquals,
                        Value = TestData.DateTimeOffsetNow
                    }
                };

                var result = dbContext.TestObjects.Search(dbContext, searchCriteria);

                Assert.AreEqual(TestData.TestObjects.Count(testobject => testobject.TestDateTimeOffsetProperty != null && testobject.TestDateTimeOffsetProperty >= TestData.DateTimeOffsetNow), result.Results.Count);
            }
        }
        public void DecimalSearchCriteriaEqualsShouldReturnObjectsInDatabaseThatAreEqual()
        {
            using (var dbContext = new TestDbContext())
            {
                var searchCriteria = new TestSearchCriteria
                {
                    TestDecimalProperty = new DecimalSearchCriteria
                    {
                        SearchType = DecimalSearchType.Equals,
                        Value = TestValue
                    }
                };

                var result =  dbContext.TestObjects.Search(dbContext, searchCriteria);

                Assert.AreEqual(TestData.TestObjects.Count(testobject => testobject.TestDecimalProperty != null && testobject.TestDecimalProperty == TestValue), result.Results.Count);
            }
        }
        public void StringSearchCriteriaNoneShouldReturnAllObjectsInDatabase()
        {
            using (var dbContext = new TestDbContext())
            {
                var searchCriteria = new TestSearchCriteria
                {
                    TestStringProperty = new StringSearchCriteria
                    {
                        SearchType = StringSearchType.None,
                        Value = "aa"
                    }
                };

                var result = dbContext.TestObjects.Search(dbContext, searchCriteria);

                Assert.AreEqual(TestData.TestObjects.Length, result.Results.Count);
            }
        }