public async Task <JournalTransactionModel> GetTestData()
        {
            JournalTransactionModel model = GetNewData();
            await _Service.CreateAsync(model);

            return(await _Service.ReadByIdAsync(model.Id));
        }
        public async Task Should_Success_CreateDuplicateReferenceNo_Data()
        {
            var service     = new JournalTransactionService(GetServiceProvider().Object, _dbContext(GetCurrentMethod()));
            var model       = _dataUtil(service).GetNewData();
            var createdData = await service.CreateAsync(model);

            var newModel = _dataUtil(service).GetNewData();

            newModel.ReferenceNo = model.ReferenceNo;
            var response = await service.CreateAsync(newModel);

            Assert.NotEqual(0, response);
        }
        public async Task Should_Throw_Exception_Create_Non_Exist_COA_Invalid_Format()
        {
            var service = new JournalTransactionService(GetServiceProvider().Object, _dbContext(GetCurrentMethod()));
            var model   = _dataUtil(service).GetNewData();
            var items   = new List <JournalTransactionItemModel>()
            {
                new JournalTransactionItemModel()
                {
                    COA = new COAModel()
                    {
                        Code = "9999.9.99.99",
                    },
                    Debit = 1000
                },
                new JournalTransactionItemModel()
                {
                    COA = new COAModel()
                    {
                        Code = "9999.9.9998",
                    },
                    Credit = 1000
                }
            };

            model.Items = items;
            //var Response = await service.CreateAsync(model);
            await Assert.ThrowsAsync <Exception>(() => service.CreateAsync(model));
        }
        public async Task Should_Success_Create_Data_Non_Exist_COA()
        {
            var service = new JournalTransactionService(GetServiceProvider().Object, _dbContext(GetCurrentMethod()));
            var model   = _dataUtil(service).GetNewData();
            var items   = new List <JournalTransactionItemModel>()
            {
                new JournalTransactionItemModel()
                {
                    COA = new COAModel()
                    {
                        Code = "9999.9.99.99",
                    },
                    Debit = 1000
                },
                new JournalTransactionItemModel()
                {
                    COA = new COAModel()
                    {
                        Code = "9999.9.99.98",
                    },
                    Credit = 1000
                }
            };

            model.Items = items;
            var Response = await service.CreateAsync(model);

            Assert.NotEqual(0, Response);
        }
        public async Task Should_Success_Create_Data()
        {
            var service  = new JournalTransactionService(GetServiceProvider().Object, _dbContext(GetCurrentMethod()));
            var model    = _dataUtil(service).GetNewData();
            var Response = await service.CreateAsync(model);

            Assert.NotEqual(0, Response);
        }
        public async Task Should_Success_Get_General_LedgerXls()
        {
            var service = new JournalTransactionService(GetServiceProvider().Object, _dbContext(GetCurrentMethod()));
            var model   = _dataUtil(service).GetNewPostedData();
            await service.CreateAsync(model);

            var response = await service.GetGeneralLedgerReportXls(DateTime.Now.AddYears(-1), DateTime.Now.AddYears(1), 0);

            Assert.NotNull(response);
        }
        public async Task Should_Success_Create_NextMonth_Data()
        {
            var dbContext = _dbContext(GetCurrentMethod());
            var service   = new JournalTransactionService(GetServiceProvider().Object, dbContext);
            var model     = _dataUtil(service).GetNewData();
            var Response  = await service.CreateAsync(model);

            var numberGenerator = dbContext.JournalTransactionNumbers.FirstOrDefault();

            numberGenerator.Month = model.CreatedUtc.Month - 1;
            dbContext.JournalTransactionNumbers.Update(numberGenerator);
            dbContext.SaveChanges();

            var newModel = _dataUtil(service).GetNewData();

            newModel.ReferenceNo = new Guid().ToString();
            var NewResponse = await service.CreateAsync(newModel);

            Assert.NotEqual(0, NewResponse);
        }
        public async Task Should_Success_Read_Unposted_Journal()
        {
            var service = new JournalTransactionService(GetServiceProvider().Object, _dbContext(GetCurrentMethod()));
            var model   = _dataUtil(service).GetNewData();

            model.Status = "DRAFT";
            var createdData = await service.CreateAsync(model);

            var response = service.ReadUnPostedTransactionsByPeriod(DateTimeOffset.Now.Month, DateTimeOffset.Now.Year);

            Assert.NotEmpty(response);
        }
        public async Task Should_Success_Read_ReferenceType()
        {
            var service = new JournalTransactionService(GetServiceProvider().Object, _dbContext(GetCurrentMethod()));
            var model   = _dataUtil(service).GetNewData();

            model.Status = "DRAFT";
            var createdData = await service.CreateAsync(model);

            var response = service.GetAllReferenceType(model.Description);

            Assert.NotEmpty(response);
        }