コード例 #1
0
        public void LimitOffset_ShouldLimitAndOffsetResults()
        {
            ITestObjectRepository repo    = GetTestObjectRepository();
            string            description = "Limit and Offset Test";
            List <TestObject> expected    = GetLimitTestObject(description, 10);

            expected.ForEach(x => repo.Add(x));

            List <TestObject> actual1 = repo.GetByDescriptionWithLimitAndOffset(description, 4, 0);

            Assert.AreEqual(4, actual1.Count);


            List <TestObject> actual2 = repo.GetByDescriptionWithLimitAndOffset(description, 4, 4);

            Assert.AreEqual(4, actual2.Count);

            foreach (TestObject testObject1 in actual1)
            {
                foreach (TestObject testObject2 in actual2)
                {
                    Assert.AreNotEqual(testObject1.ID, testObject2.ID);
                }
            }
        }
コード例 #2
0
        public void Add_MultipleTestObjects_ShouldAdd()
        {
            ITestObjectRepository repo    = GetTestObjectRepository();
            List <TestObject>     objects = new List <TestObject>();

            for (int i = 0; i < 5000; i++)
            {
                objects.Add(new TestObject {
                    Title       = "Add Multiple Test " + i,
                    Description = "Multiple Insert Test",
                    StatusID    = Status.Active,
                    InputOn     = DateTime.Now,
                    InputByID   = 1,
                    IsActive    = true
                });
            }

            repo.Add(objects);

            List <TestObject> testObjects = repo.GetByDescription("Multiple Insert Test");

            Assert.AreEqual(objects.Count, testObjects.Count); // Make sure the same number of objects are returns
            foreach (TestObject testObject in testObjects)
            {
                Assert.AreEqual("Multiple Insert Test", testObject.Description);
            }
        }
        public async Task Xml_Data_Saved_In_DataBase_Should_Be_Properly_Restored()
        {
            ServiceCollection services =
                new ServiceCollectionBuilder().PrepareServiceCollection(s =>
            {
                s.ResetDapperCustomTypeHandlers();
                s.RegisterDapperCustomTypeHandlers(Assembly.GetExecutingAssembly());
            });

            ServiceProvider serviceProvider = services.BuildServiceProvider();

            using (IServiceScope scope = serviceProvider.CreateScope())
            {
                var scopedServices = scope.ServiceProvider;

                ITestObjectRepository testObjectRepository = scopedServices.GetRequiredService <ITestObjectRepository>();

                TestXmlObject testObject = CreateFullTestObject();

                // Act
                await testObjectRepository.SaveTestXmlObject(testObject);

                TestXmlObject retrievedTestObject = await testObjectRepository.GetTestXmlObject(testObject.Id);

                // Assert
                retrievedTestObject.Should().NotBeNull();
                retrievedTestObject.Should().BeEquivalentTo(testObject);
                retrievedTestObject.Content.Should().BeEquivalentTo(testObject.Content);
            }
        }
        public async Task Using_JsonCustomOptions_Json_Data_Saved_In_DataBase_Should_Be_Properly_Restored()
        {
            ServiceCollection services =
                new ServiceCollectionBuilder().PrepareServiceCollection(s =>
            {
                s.ResetDapperCustomTypeHandlers();
                s.RegisterDapperCustomTypeHandlers(Assembly.GetExecutingAssembly(), options =>
                {
                    options.JsonSerializerOptions = new JsonSerializerOptions
                    {
                        IgnoreNullValues     = false,
                        PropertyNamingPolicy = null
                    };
                });
            });

            ServiceProvider serviceProvider = services.BuildServiceProvider();

            using (IServiceScope scope = serviceProvider.CreateScope())
            {
                var scopedServices = scope.ServiceProvider;

                ITestObjectRepository testObjectRepository = scopedServices.GetRequiredService <ITestObjectRepository>();

                TestJsonObject testObject = new TestJsonObject
                {
                    FirstName = "John",
                    LastName  = "Doe",
                    StartWork = new DateTime(2018, 06, 01),
                    Content   = new TestJsonContentObject
                    {
                        Nick                  = "JD",
                        DateOfBirth           = new DateTime(1990, 10, 11),
                        Siblings              = 2,
                        FavoriteDaysOfTheWeek = new List <string>
                        {
                            "Friday",
                            "Saturday",
                            "Sunday"
                        },
                        FavoriteNumbers = new List <int> {
                            10, 15, 1332, 5555
                        }
                    }
                };

                // Act
                await testObjectRepository.SaveTestJsonObject(testObject);

                TestJsonObject retrievedTestObject = await testObjectRepository.GetTestJsonObject(testObject.Id);

                // Assert
                retrievedTestObject.Should().NotBeNull();
                retrievedTestObject.Should().BeEquivalentTo(testObject);
                retrievedTestObject.Content.Should().BeEquivalentTo(testObject.Content);
            }
        }
コード例 #5
0
        public void Limit_ShouldLimitResults()
        {
            ITestObjectRepository repo = GetTestObjectRepository();
            string description         = "Limit Test";

            List <TestObject> expected = GetLimitTestObject(description, 10);

            expected.ForEach(x => repo.Add(x));

            List <TestObject> actual1 = repo.GetByDescriptionWithLimit(description, 4);

            Assert.AreEqual(4, actual1.Count);
        }
コード例 #6
0
        public void OrderBy_ShouldOrderDescending()
        {
            ITestObjectRepository repo    = GetTestObjectRepository();
            string            description = "OrderByDescending Test";
            List <TestObject> expected    = GetLimitTestObject(description, 5);

            repo.Add(expected);

            List <TestObject> actual = repo.GetByDescriptionWithInputOnOrderDesc(description);

            Assert.AreEqual(expected.Count, actual.Count);

            expected = expected.OrderByDescending(x => x.InputOn).ToList();

            for (int i = 0; i < actual.Count; i++)
            {
                Assert.AreEqual(actual[i].InputOn, expected[i].InputOn);
            }
        }
コード例 #7
0
        public void Add_TestObject_ShouldAdd()
        {
            ITestObjectRepository repo     = GetTestObjectRepository();
            TestObject            expected = new TestObject {
                Title       = "Add Test",
                Description = "Add Test Description",
                StatusID    = Status.Active,
                InputOn     = DateTime.Now,
                InputByID   = 1,
                IsActive    = true
            };

            repo.Add(expected);

            TestObject actual = repo.GetByTitle(expected.Title);

            Assert.IsNotNull(actual);      // Make sure object was returned
            Assert.AreNotEqual(0, actual); // Make sure autonumber was assigned
            Assert.IsTrue(expected.AllPropsEqual(actual), "The object returned from the database does not match the original");
        }
コード例 #8
0
        public void When_Custom_Xml_Handler_Is_Not_Registered_Exception_Should_Be_Thrown()
        {
            ServiceCollection services =
                new ServiceCollectionBuilder().PrepareServiceCollection(s =>
            {
                s.ResetDapperCustomTypeHandlers();
            });

            ServiceProvider serviceProvider = services.BuildServiceProvider();

            using (IServiceScope scope = serviceProvider.CreateScope())
            {
                var scopedServices = scope.ServiceProvider;

                ITestObjectRepository testObjectRepository = scopedServices.GetRequiredService <ITestObjectRepository>();

                TestXmlObject testObject = CreateTestXmlObject();

                // Assert
                Assert.ThrowsAsync <NotSupportedException>(async() => await testObjectRepository.SaveTestXmlObject(testObject));
            }
        }
コード例 #9
0
        public void Remove_TestObject_ShouldRemove()
        {
            ITestObjectRepository repo   = GetTestObjectRepository();
            TestObject            newObj = new TestObject {
                Title       = "Remove Test",
                Description = "Remove Test Description",
                StatusID    = Status.Pending,
                InputOn     = DateTime.Now,
                InputByID   = 1,
                IsActive    = true
            };

            repo.Add(newObj);

            TestObject fromDbNotNull = repo.GetByID(newObj.ID);

            repo.Remove(newObj);
            TestObject fromDbNull = repo.GetByID(newObj.ID);

            Assert.IsNotNull(fromDbNotNull);
            Assert.IsNull(fromDbNull);
        }
コード例 #10
0
        public void Update_TestObject_ShouldUpdate()
        {
            ITestObjectRepository repo   = GetTestObjectRepository();
            TestObject            newObj = new TestObject {
                Title       = "Update Test",
                Description = "Update Test Description",
                StatusID    = Status.Active,
                InputOn     = DateTime.Now,
                InputByID   = 1,
                IsActive    = true
            };

            repo.Add(newObj);

            newObj.Title   += " - Updated";
            newObj.StatusID = Status.Closed;
            repo.Update(newObj);
            TestObject fromDB = repo.GetByID(newObj.ID);

            Assert.IsNotNull(fromDB); // Make sure object was returned
            Assert.IsTrue(newObj.AllPropsEqual(fromDB), "The object returned from the database does not match the updated original");
        }
コード例 #11
0
        public void When_Custom_Json_Handler_Is_Registered_Exception_Should_Not_Be_Thrown_V2()
        {
            ServiceCollection services =
                new ServiceCollectionBuilder().PrepareServiceCollection(s =>
            {
                s.ResetDapperCustomTypeHandlers();
                s.RegisterDapperCustomTypeHandlers(new[] { Assembly.GetExecutingAssembly() });
            });

            ServiceProvider serviceProvider = services.BuildServiceProvider();

            using (IServiceScope scope = serviceProvider.CreateScope())
            {
                var scopedServices = scope.ServiceProvider;

                ITestObjectRepository testObjectRepository = scopedServices.GetRequiredService <ITestObjectRepository>();

                TestJsonObject testObject = CreateTestJsonObject();

                // Assert
                Assert.DoesNotThrowAsync(async() => await testObjectRepository.SaveTestJsonObject(testObject));
            }
        }
        public async Task Null_Json_Data_Saved_In_DataBase_Should_Be_Restored_As_Null_Object()
        {
            ServiceCollection services =
                new ServiceCollectionBuilder().PrepareServiceCollection(s =>
            {
                s.ResetDapperCustomTypeHandlers();
                s.RegisterDapperCustomTypeHandlers(Assembly.GetExecutingAssembly());
            });

            ServiceProvider serviceProvider = services.BuildServiceProvider();

            using (IServiceScope scope = serviceProvider.CreateScope())
            {
                var scopedServices = scope.ServiceProvider;

                ITestObjectRepository testObjectRepository = scopedServices.GetRequiredService <ITestObjectRepository>();

                TestJsonObject testObject = new TestJsonObject
                {
                    FirstName = "John",
                    LastName  = "Doe",
                    StartWork = new DateTime(2018, 06, 01),
                    Content   = null
                };

                // Act
                await testObjectRepository.SaveTestJsonObject(testObject);

                TestJsonObject retrievedTestObject = await testObjectRepository.GetTestJsonObject(testObject.Id);

                // Assert
                retrievedTestObject.Should().NotBeNull();
                retrievedTestObject.Should().BeEquivalentTo(testObject);
                retrievedTestObject.Content.Should().BeEquivalentTo(testObject.Content);
            }
        }
コード例 #13
0
        public void GetBetweenDates_ShouldReturnValidResults()
        {
            ITestObjectRepository repo    = GetTestObjectRepository();
            TestObject            newObj1 = new TestObject {
                Title       = "Date Range Test 1",
                Description = "Remove Test Description",
                StatusID    = Status.Active,
                InputOn     = new DateTime(1999, 1, 4, 12, 34, 20),
                InputByID   = 1,
                IsActive    = true
            };
            TestObject newObj2 = new TestObject {
                Title       = "Date Range Test 2",
                Description = "Remove Test Description",
                StatusID    = Status.Active,
                InputOn     = new DateTime(1999, 1, 6, 8, 4, 56),
                InputByID   = 1,
                IsActive    = true
            };
            TestObject newObj3 = new TestObject {
                Title       = "Date Range Test 3",
                Description = "Remove Test Description",
                StatusID    = Status.Active,
                InputOn     = new DateTime(1999, 1, 9, 18, 14, 0),
                InputByID   = 1,
                IsActive    = true
            };

            repo.Add(newObj1);
            repo.Add(newObj2);
            repo.Add(newObj3);

            List <TestObject> actual = repo.GetByInputOnDateRange(new DateTime(1999, 1, 2), new DateTime(1999, 1, 7));

            Assert.AreEqual(2, actual.Count);
        }