コード例 #1
0
        public void Update(Guid jobDefinitionId, CoupaImporterJobDefinition coupaImporterJobDefinition)
        {
            var entityInContext = _context.CoupaImporterJodDefinitions.First(c => c.Id == jobDefinitionId);

            if (entityInContext == null)
            {
                return;
            }

            _context.Entry(entityInContext).CurrentValues.SetValues(coupaImporterJobDefinition);
            _context.Entry(entityInContext).State = EntityState.Modified;
        }
コード例 #2
0
        public CoupaImporterJobDefinitionDTO CreateRequisitionImportJobDefinition(Guid projectId, MemoryStream memoryStream, string fileName)
        {
            var requisitionList = CsvExtensionMethods.GetCsvValues <RequisitionDTO>(memoryStream);

            if (requisitionList == null)
            {
                return(null);
            }

            var coupaImporter = SetCoupaImporterJobDefinitionDTO(requisitionList, projectId, fileName, FileType.Requisition);
            var result        = _coupaImporterRepository.Add(CoupaImporterJobDefinition.MapFromDomainEntity(coupaImporter));

            return(CoupaImporterJobDefinitionDTO.MapFromDatabaseEntity(result));
        }
コード例 #3
0
        public void CreateInvoiceImportJobDefinition_StreamAndFileName_ReturnValidCoupaImporterJobDefinitionDTO()
        {
            //Arrange
            var projectId     = new Guid("4d75753e-618d-4067-9019-f91a64407bca");
            var jobDefinition = new CoupaImporterJobDefinition
            {
                Id        = new Guid("45744a2e-3dc1-472f-9bb5-378a0a9eeda4"),
                FileName  = "fileTest.csv",
                Status    = (int)CoupaImporterStatus.Pending,
                TimeStamp = DateTime.UtcNow,
                ProjectId = projectId
            };

            _coupaImporterRepository.Add(Arg.Is <CoupaImporterJobDefinition>(c => c.FileName == jobDefinition.FileName && c.ProjectId == projectId))
            .Returns(jobDefinition);

            //Act
            var result = _service.CreateInvoiceImportJobDefinition(projectId, ValidCsv(), "fileTest.csv");

            //Assert
            Assert.AreEqual(jobDefinition.Id, result.Id);
        }
コード例 #4
0
        public static CoupaImporterJobDefinitionDTO MapFromDatabaseEntity(CoupaImporterJobDefinition databaseEntity)
        {
            if (databaseEntity == null)
            {
                return(null);
            }

            return(new CoupaImporterJobDefinitionDTO
            {
                Id = databaseEntity.Id,
                FileName = databaseEntity.FileName,
                TimeStamp = databaseEntity.TimeStamp,
                Status = (CoupaImporterStatus)databaseEntity.Status,
                ProjectId = databaseEntity.ProjectId,
                FileType = databaseEntity.FileType,

                CoupaImporterJobDefinitionDetails =
                    databaseEntity.CoupaImporterJobDefinitionDetails
                    ?.Select(CoupaImporterJobDefinitionDetailDTO.MapFromDatabaseEntity).ToList() ??
                    new List <CoupaImporterJobDefinitionDetailDTO>()
            });
        }
コード例 #5
0
 public CoupaImporterJobDefinition Add(CoupaImporterJobDefinition jobDefinition)
 {
     return(_context.CoupaImporterJodDefinitions.Add(jobDefinition).Entity);
 }
コード例 #6
0
        public void ProcessRequisitionImportJob_JobId_ProcessEachLineOfPurchaseOrderJobDetailsAndChangesItsStatusToProcessed()
        {
            //Arrange
            var jobDefinitionId = new Guid("45744a2e-3dc1-472f-9bb5-378a0a9eeda4");

            var jobDefinition = new CoupaImporterJobDefinition
            {
                Id       = jobDefinitionId,
                FileName = "Test.csv",
                Status   = (int)CoupaImporterStatus.Pending,
                CoupaImporterJobDefinitionDetails = new List <CoupaImporterJobDefinitionDetail>
                {
                    new CoupaImporterJobDefinitionDetail
                    {
                        Id               = new Guid("90d18a32-5090-4091-9c16-91dcb7983c38"),
                        IsProcessed      = false,
                        IsSuccessful     = null,
                        ErrorDescription = null,
                        LineNumber       = 1,
                        RawContent       = "{\"Id\":\"54a85421-ab58-4fef-ae4c-ab5651501291\",\"ProjectId\":\"00000000-0000-0000-0000-000000000000\",\"PurchaseOrderNumber\":7116,\"OrderTotal\":7630.0,\"AccountingTotal\":5608.64,\"Account\":\"6063-521-5412424-203050-SN-00000-000-000\",\"Supplier\":\"MEDIALINK PRINTING SERVICES PTE LTD\",\"OrderDate\":\"2019-05-05T00:00:00\",\"Item\":\"Q2 printing of brochures and placemats for SG Banks\",\"AccountingTotalCurrency\":\"USD\",\"Currency\":\"SGD\",\"ShippingAddress\":\"Twenty Anson, 20 Anson Road\n#18-01 Singapore 079912 Singapore\", \"ProjectDescription\":null, \"Commodity\":\"Mktg Print & Fulfillment (5412424 Print - Marketing Collateral)\", \"CostCode\":null, \"FixedAsset_CIPCategory\":null, \"TargetLocationCode\":null, \"ShipTo\":\"Andy Lim\", \"RequestedBy\":\"Andy Lim\", \"CreatedBy\":\"Doris Ma\", \"LastUpdatedBy\":\"Doris Ma\"}"
                    },
                    new CoupaImporterJobDefinitionDetail
                    {
                        Id               = new Guid("35246731-7870-400d-a646-456e5f824df7"),
                        IsProcessed      = false,
                        IsSuccessful     = null,
                        ErrorDescription = null,
                        LineNumber       = 2,
                        RawContent       = "{\"Id\":\"97647256-c8f1-4065-babb-670e7943a04b\",\"ProjectId\":\"00000000-0000-0000-0000-000000000000\",\"PurchaseOrderNumber\":7117,\"OrderTotal\":16100.0,\"AccountingTotal\":2052.22,\"Account\":\"6063-521-5412424-203050-SN-00000-000-000\",\"Supplier\":\"HETERMEDIA SERVICES LIMITED\",\"OrderDate\":\"2019-05-05T00:00:00\",\"Item\":\"Quarterly Update of Marketing Collaterals - Q2\",\"AccountingTotalCurrency\":\"USD\",\"Currency\":\"HKD\",\"ShippingAddress\":\"Twenty Anson, 20 Anson Road\\n#18-01\nSingapore 079912\nSingapore\",\"ProjectDescription\":null,\"Commodity\":\"Mktg Print & Fulfillment (5412424 Print - Marketing Collateral)\",\"CostCode\":null,\"FixedAsset_CIPCategory\":null,\"TargetLocationCode\":null,\"ShipTo\":\"Andy Lim\",\"RequestedBy\":\"Andy Lim\",\"CreatedBy\":\"Karen Leung\",\"LastUpdatedBy\":\"Karen Leung\"}"
                    }
                }
            };

            _coupaImporterRepository.Get(jobDefinitionId)
            .Returns(jobDefinition);

            //Act
            var response = _service.ProcessRequisitionImportJob(jobDefinitionId);

            //Assert
            Assert.AreEqual(CoupaImporterStatus.Processed, response.Status);
            Assert.IsEmpty(response.CoupaImporterJobDefinitionDetails.Where(d => d.IsProcessed == false));

            _coupaImporterRepository.Received(1)
            .UpdateAllJobDefinitionDetail(
                jobDefinition.Id,
                Arg.Is <List <CoupaImporterJobDefinitionDetail> >(d =>
                                                                  d.First().Id == jobDefinition.CoupaImporterJobDefinitionDetails.First().Id&&
                                                                  d.First().IsSuccessful == true && d.First().IsProcessed == true));

            _coupaImporterRepository.Received(1)
            .UpdateAllJobDefinitionDetail(
                jobDefinition.Id,
                Arg.Is <List <CoupaImporterJobDefinitionDetail> >(d =>
                                                                  d.First().Id == jobDefinition.CoupaImporterJobDefinitionDetails.First().Id&&
                                                                  d.Last().IsSuccessful == true && d.Last().IsProcessed == true));

            _coupaImporterRepository.Received(1)
            .Update(jobDefinitionId,
                    Arg.Is <CoupaImporterJobDefinition>(j =>
                                                        j.Id == jobDefinitionId && j.Status == (int)CoupaImporterStatus.Processed));
        }
コード例 #7
0
        public void ProcessPurchaseOrderImportJob_JobId_ProcessEachLineOfInvoiceJobDetailsAndChangesItsStatusToProcessed()
        {
            //Arrange
            var jobDefinitionId = new Guid("45744a2e-3dc1-472f-9bb5-378a0a9eeda4");

            var jobDefinition = new CoupaImporterJobDefinition
            {
                Id       = jobDefinitionId,
                FileName = "Test.csv",
                Status   = (int)CoupaImporterStatus.Pending,
                CoupaImporterJobDefinitionDetails = new List <CoupaImporterJobDefinitionDetail>
                {
                    new CoupaImporterJobDefinitionDetail
                    {
                        Id               = new Guid("90d18a32-5090-4091-9c16-91dcb7983c38"),
                        IsProcessed      = false,
                        IsSuccessful     = null,
                        ErrorDescription = null,
                        LineNumber       = 1,
                        RawContent       = "{\"Id\":\"77dc1029-b2ba-4beb-a8df-7214ae3baad8\",\"ProjectId\":\"00000000-0000-0000-0000-000000000000\",\"InvoiceNumber\":null,\"Total\":0.0,\"Paid\":false,\"Account\":null,\"Supplier\":\"HYPOVEREINSBANK BKK\",\"PurchaseOrderNumber\":12,\"InvoiceDate\":\"2019-05-06T00:00:00\",\"ReceivedOrCreatedDate\":\"0001 - 01 - 01T00: 00:00\",\"Status\":\"New\",\"LocalPaymentDate\":null}"
                    },
                    new CoupaImporterJobDefinitionDetail
                    {
                        Id               = new Guid("35246731-7870-400d-a646-456e5f824df7"),
                        IsProcessed      = false,
                        IsSuccessful     = null,
                        ErrorDescription = null,
                        LineNumber       = 2,
                        RawContent       = "{\"Id\":\"e7344d8f-809c-4667-bb87-ccf1d692eaa2\",\"ProjectId\":\"00000000-0000-0000-0000-000000000000\",\"InvoiceNumber\":null,\"Total\":0.0,\"Paid\":false,\"Account\":null,\"Supplier\":null,\"PurchaseOrderNumber\":13,\"InvoiceDate\":\"2019-05-06T00:00:00\",\"ReceivedOrCreatedDate\":\"0001 - 01 - 01T00: 00:00\",\"Status\":\"New\",\"LocalPaymentDate\":null}"
                    }
                }
            };

            _coupaImporterRepository.Get(jobDefinitionId)
            .Returns(jobDefinition);

            //Act
            var response = _service.ProcessPurchaseOrderImportJob(jobDefinitionId);

            //Assert
            Assert.AreEqual(CoupaImporterStatus.Processed, response.Status);
            Assert.IsEmpty(response.CoupaImporterJobDefinitionDetails.Where(d => d.IsProcessed == false));

            _coupaImporterRepository.Received(1)
            .UpdateAllJobDefinitionDetail(
                jobDefinition.Id,
                Arg.Is <List <CoupaImporterJobDefinitionDetail> >(d =>
                                                                  d.First().Id == jobDefinition.CoupaImporterJobDefinitionDetails.First().Id&&
                                                                  d.First().IsSuccessful == true && d.First().IsProcessed == true));

            _coupaImporterRepository.Received(1)
            .UpdateAllJobDefinitionDetail(
                jobDefinition.Id,
                Arg.Is <List <CoupaImporterJobDefinitionDetail> >(d =>
                                                                  d.First().Id == jobDefinition.CoupaImporterJobDefinitionDetails.First().Id&&
                                                                  d.Last().IsSuccessful == true && d.Last().IsProcessed == true));

            _coupaImporterRepository.Received(1)
            .Update(jobDefinitionId,
                    Arg.Is <CoupaImporterJobDefinition>(j =>
                                                        j.Id == jobDefinitionId && j.Status == (int)CoupaImporterStatus.Processed));
        }