public void Mapping_With_AutoMapper_Profiles()
        {
            var configuration = new MapperConfiguration(cfg =>
            {
                cfg.AddProfile <SalesInvoiceExportMapper>();
                cfg.AddProfile <SalesInvoiceExportDetailMapper>();
                cfg.AddProfile <SalesInvoiceExportItemMapper>();
            });
            var mapper = configuration.CreateMapper();

            SalesInvoiceExportViewModel salesInvoiceViewModel = new SalesInvoiceExportViewModel {
                Id = 1
            };
            SalesInvoiceExportModel salesInvoiceModel = mapper.Map <SalesInvoiceExportModel>(salesInvoiceViewModel);

            Assert.Equal(salesInvoiceViewModel.Id, salesInvoiceModel.Id);

            SalesInvoiceExportDetailViewModel salesInvoiceDetailViewModel = new SalesInvoiceExportDetailViewModel {
                Id = 1
            };
            SalesInvoiceExportDetailModel salesInvoiceDetailModel = mapper.Map <SalesInvoiceExportDetailModel>(salesInvoiceDetailViewModel);

            Assert.Equal(salesInvoiceDetailViewModel.Id, salesInvoiceDetailModel.Id);

            SalesInvoiceExportItemViewModel salesInvoiceItemViewModel = new SalesInvoiceExportItemViewModel {
                Id = 1
            };
            SalesInvoiceExportItemModel salesInvoiceItemModel = mapper.Map <SalesInvoiceExportItemModel>(salesInvoiceItemViewModel);

            Assert.Equal(salesInvoiceItemViewModel.Id, salesInvoiceItemModel.Id);
        }
        public override async void UpdateAsync(long id, SalesInvoiceExportModel model)
        {
            try
            {
                if (model.SalesInvoiceExportDetails != null)
                {
                    HashSet <long> detailIds = salesInvoiceExportDetailLogic.GetIds(id);
                    foreach (var itemId in detailIds)
                    {
                        SalesInvoiceExportDetailModel data = model.SalesInvoiceExportDetails.FirstOrDefault(prop => prop.Id.Equals(itemId));
                        if (data == null)
                        {
                            await salesInvoiceExportDetailLogic.DeleteAsync(itemId);
                        }
                        else
                        {
                            salesInvoiceExportDetailLogic.UpdateAsync(itemId, data);
                        }
                    }

                    foreach (SalesInvoiceExportDetailModel item in model.SalesInvoiceExportDetails)
                    {
                        if (item.Id == 0)
                        {
                            salesInvoiceExportDetailLogic.Create(item);
                        }
                    }
                }

                EntityExtension.FlagForUpdate(model, IdentityService.Username, "sales-service");
                DbSet.Update(model);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public void Read_Return_Success()
        {
            string           testName        = GetCurrentMethod();
            var              dbContext       = _dbContext(testName);
            IIdentityService identityService = new IdentityService {
                Username = "******"
            };
            var model = new SalesInvoiceExportDetailModel()
            {
                Description = "Description"
            };

            dbContext.SalesInvoiceExportDetails.Add(model);
            dbContext.SaveChanges();
            SalesInvoiceExportDetailLogic unitUnderTest = new SalesInvoiceExportDetailLogic(GetServiceProvider(testName).Object, identityService, dbContext);

            var result = unitUnderTest.Read(1, 1, "{}", new List <string>()
            {
                ""
            }, null, "{}");

            Assert.True(0 < result.Data.Count);
            Assert.NotEmpty(result.Data);
        }