public async Task InsertPolicyProductType()
        {
            var options = TestHelper.GetDbContext("InsertPolicyProductType");

            var policyType = TestHelper.InsertPolicyType(options);

            var char1 = new PolicyTypeCharacteristicEntity {
                Id = Guid.NewGuid(), Name = "A", DisplayOrder = 0, PolicyTypeId = policyType.Id
            };
            var charDesc1 = new PolicyTypeCharacteristicDescription()
            {
                PolicyTypeCharacteristicId = char1.Id, Description = "Description 1"
            };

            using (var context = new DataContext(options))
            {
                context.PolicyTypeCharacteristic.Add(char1);
                context.SaveChanges();
            }

            //Given
            var model = new PolicyProductType()
            {
                Name         = "1",
                Code         = "one",
                PolicyTypeId = policyType.Id,
                PolicyTypeCharacteristics = new List <PolicyTypeCharacteristicDescription>()
                {
                    charDesc1
                }
            };

            using (var context = new DataContext(options))
            {
                var service = new ClientLookupService(context);

                //When
                var result = await service.InsertPolicyProductType(model);

                //Then
                Assert.True(result.Success);

                var actual = await context.PolicyProductType.FindAsync(((PolicyProductType)result.Tag).Id);

                Assert.Equal(model.Name, actual.Name);
                Assert.Equal(model.Code, actual.Code);
                Assert.Equal(model.PolicyTypeId, actual.PolicyTypeId);
                Assert.Equal(model.PolicyTypeCharacteristics.Single().PolicyTypeCharacteristicId, actual.PolicyTypeCharacteristics.Single().PolicyTypeCharacteristicId);
            }
        }
        public async Task GetPolicyProductTypes()
        {
            var options = TestHelper.GetDbContext("GetPolicyProductTypes");

            var policyType = TestHelper.InsertPolicyType(options);

            var char1 = new PolicyTypeCharacteristicEntity {
                Id = Guid.NewGuid(), Name = "A", DisplayOrder = 0, PolicyTypeId = policyType.Id
            };
            var charDesc1 = new PolicyTypeCharacteristicDescription()
            {
                PolicyTypeCharacteristicId = char1.Id, Description = "Description 1"
            };

            //Given
            var lkp1 = new PolicyProductTypeEntity
            {
                Id           = Guid.NewGuid(),
                Name         = "A",
                Code         = "aa",
                PolicyTypeId = policyType.Id,
                PolicyTypeCharacteristics = new List <PolicyTypeCharacteristicDescription>()
                {
                    charDesc1
                }
            };
            var lkp2 = new PolicyProductTypeEntity {
                Id = Guid.NewGuid(), Name = "B", Code = "bb", PolicyTypeId = policyType.Id
            };
            var lkp3 = new PolicyProductTypeEntity {
                Id = Guid.NewGuid(), Name = "C", Code = "cc", PolicyTypeId = policyType.Id
            };

            using (var context = new DataContext(options))
            {
                context.PolicyTypeCharacteristic.Add(char1);

                //Jumbled order
                context.PolicyProductType.Add(lkp2);
                context.PolicyProductType.Add(lkp1);
                context.PolicyProductType.Add(lkp3);

                context.SaveChanges();
            }

            using (var context = new DataContext(options))
            {
                var service = new ClientLookupService(context);

                //When
                var actual = await service.GetPolicyProductTypes();

                //Then
                Assert.Equal(3, actual.Count);

                var actual1 = actual[0];
                Assert.Equal(lkp1.Id, actual1.Id);
                Assert.Equal(lkp1.Name, actual1.Name);
                Assert.Equal(lkp1.Code, actual1.Code);
                Assert.Equal(lkp1.PolicyTypeId, actual1.PolicyTypeId);
                Assert.Equal(lkp1.PolicyTypeCharacteristics.Single().PolicyTypeCharacteristicId, actual1.PolicyTypeCharacteristics.Single().PolicyTypeCharacteristicId);

                var actual2 = actual[1];
                Assert.Equal(lkp2.Id, actual2.Id);

                var actual3 = actual[2];
                Assert.Equal(lkp3.Id, actual3.Id);
            }
        }