public void CreateResponseFromRequest()
        {
            var model   = new CriterionFactory();
            var request = Create.CriteriaTaxonomyExtendedV2_1_1;

            var factory = new QualificationApplicationFactory();
            var espdUrl = "http://localhost/espd/request/12345";

            var response = factory.CreateEspd2_1_1ExtendedResponse(
                request,
                Create.EconomicOperatorParty(),
                new EuComGrowId(Guid.NewGuid()),
                Guid.NewGuid(),
                espdUrl
                );

            // Test references
            Assert.AreEqual(2, response.AdditionalDocumentReferences.Length, "Should have 2 references");
            var reference = response.AdditionalDocumentReferences[1];

            Assert.AreEqual(request.ID.Value, reference.ID.Value);
            Assert.AreEqual(request.UUID.Value, reference.UUID.Value);
            Assert.AreEqual("ESPD_REQUEST", reference.DocumentTypeCode.Value);
            Assert.AreEqual(request.IssueDate.Value, reference.IssueDate.Value);
            Assert.AreEqual(request.IssueTime.ToString(), reference.IssueTime.ToString());

            // Test Lot responses init
            Assert.AreEqual(1, response.TenderingCriterionResponses.Length, "Should have one response initialized");
            var criterionResponse = response.TenderingCriterionResponses[0];

            Assert.AreEqual("0", criterionResponse.ResponseValue?[0].ResponseID.Value, "Lot id should be set to 0");
        }
        public void CreateResponseFromRequest_WithLots()
        {
            var model   = new CriterionFactory();
            var request = Create.CriteriaTaxonomyExtendedV2_1_1;

            request.ProcurementProjectLots = new [] {
                new ProcurementProjectLot()
                {
                    ID = new Hilma.UBL.UnqualifiedDataTypes.IdentifierType("1"),
                },
                new ProcurementProjectLot()
                {
                    ID = new Hilma.UBL.UnqualifiedDataTypes.IdentifierType("2"),
                }
            };
            var factory = new QualificationApplicationFactory();
            var espdUrl = "http://localhost/espd/request/12345";

            var response = factory.CreateEspd2_1_1ExtendedResponse(
                request,
                Create.EconomicOperatorParty(),
                new EuComGrowId(Guid.NewGuid()),
                Guid.NewGuid(),
                espdUrl
                );

            // Test Lot responses no init
            Assert.AreEqual(0, response.TenderingCriterionResponses.Length, "Should have no responses initialized because of lots");
        }
        public void TestLotFinalize()
        {
            var factory = new QualificationApplicationFactory();
            var uuid    = Guid.NewGuid();
            var lotIds  = new [] { "Lot 1", "Lot 2" };
            var qar     = factory.CreateEspd2_1_1ExtendedRequest(
                new IdentifierType("TEST-123")
            {
                SchemeAgencyID = "TEST"
            },
                new IdentifierType("TEST-REF-111")
            {
                SchemeAgencyID = "TEST"
            },
                uuid,
                lotIds, false);

            var suitabilityCriterion = new CriterionSpecification().SelectionCriteria.Suitability.First();

            qar.TenderingCriteria = qar.TenderingCriteria = new[] { suitabilityCriterion };

            qar.FinalizeDocument(lotIds);

            var assertedCriteria = qar.TenderingCriteria.Last();

            Assert.AreEqual(suitabilityCriterion.Name, assertedCriteria.Name);

            var lotProperties =
                assertedCriteria.DescendantProperties()
                .Where(p => p.TypeCode.Equals(CriterionElementType.Requirement) && Equals(p.ValueDataTypeCode, ResponseDataTypeCode.LotIdentifier)).ToArray();

            Assert.AreEqual(2, lotProperties.Length, "Should have two lot properties");
            Assert.AreEqual("Lot 1", lotProperties[0].ExpectedID.Value);
            Assert.AreEqual("Lot 2", lotProperties[1].ExpectedID.Value);
        }
        public void TestFinalize_NoSelecedLots()
        {
            var factory = new QualificationApplicationFactory();
            var uuid    = Guid.NewGuid();
            var qar     = factory.CreateEspd2_1_1ExtendedRequest(new IdentifierType("TEST-123")
            {
                SchemeAgencyID = "TEST"
            },
                                                                 new IdentifierType("TEST-REF-111")
            {
                SchemeAgencyID = "TEST"
            }, uuid, new string[0], false);
            var suitabilityCriterion = new CriterionSpecification().SelectionCriteria.Suitability.First();

            qar.TenderingCriteria = qar.TenderingCriteria.Union(new[] { suitabilityCriterion }).ToArray();
            var firstPropertyId = qar.TenderingCriteria[0].TenderingCriterionPropertyGroups[0].TenderingCriterionProperties[0]
                                  .ID.Value;

            qar.FinalizeDocument(new string[0]);

            var firstPropertyIdAfter = qar.TenderingCriteria[0].TenderingCriterionPropertyGroups[0]
                                       .TenderingCriterionProperties[0].ID.Value;
            var assertedCriteria = qar.TenderingCriteria.Last();

            Assert.AreEqual(suitabilityCriterion.Name, assertedCriteria.Name);
            Assert.AreNotEqual(firstPropertyId, firstPropertyIdAfter, "Id, should not be the same");

            var lotIds = assertedCriteria.DescendantProperties()
                         .Where(p => p.TypeCode.Equals(CriterionElementType.Requirement) && Equals(p.ValueDataTypeCode, ResponseDataTypeCode.LotIdentifier));

            Assert.IsTrue(lotIds.All(id => id.ExpectedID == "0"), "Lot id:s should have been set to \"0\"");
        }
        public void TestLotFinalize_SingleLot_QuestionLots_NoValuesSet()
        {
            var factory = new QualificationApplicationFactory();
            var uuid    = Guid.NewGuid();
            var lotIds  = new[] { "0" };
            var qar     = factory.CreateEspd2_1_1ExtendedRequest(
                new IdentifierType("TEST-123")
            {
                SchemeAgencyID = "TEST"
            },
                new IdentifierType("TEST-REF-111")
            {
                SchemeAgencyID = "TEST"
            },
                uuid,
                lotIds, false);

            var referenceCriterion = new CriterionSpecification().SelectionCriteria.References.First();

            qar.TenderingCriteria = qar.TenderingCriteria = new[] { referenceCriterion };

            qar.FinalizeDocument(lotIds);

            var assertedCriteria = qar.TenderingCriteria.Last();

            Assert.AreEqual(referenceCriterion.Name, assertedCriteria.Name);

            var lotQuestionProperties =
                assertedCriteria.DescendantProperties()
                .Where(p => p.TypeCode.Equals(CriterionElementType.Question) &&
                       Equals(p.ValueDataTypeCode, ResponseDataTypeCode.LotIdentifier)).ToArray();

            Assert.AreEqual(1, lotQuestionProperties.Length, "Should have one question lot property");
            Assert.IsNull(lotQuestionProperties[0].ExpectedID, "lotQuestionProperties[0].ExpectedID == null");
        }
        public void TestSelfContained()
        {
            var factory = new QualificationApplicationFactory();
            var uuid    = Guid.NewGuid();
            var qar     = factory.CreateEspd2_1_1ExtendedRequest(new IdentifierType("TEST-123")
            {
                SchemeAgencyID = "TEST"
            },
                                                                 new IdentifierType("TEST-REF-111")
            {
                SchemeAgencyID = "TEST"
            },
                                                                 uuid,
                                                                 new string[0], false);

            var validationResults = new List <ValidationResult>();
            var isValid           = Validator.TryValidateObject(qar, new ValidationContext(qar), validationResults);

            foreach (var validationResult in validationResults)
            {
                Console.WriteLine(validationResult);
            }
            Assert.IsTrue(isValid, "Given notice does not pass validation");
        }
Пример #7
0
        public static QualificationApplicationResponse QualificationApplicationResponse(IEnumerable <TenderingCriterion> additionalCriteria = null)
        {
            var request = CriteriaTaxonomyExtendedV2_1_1;

            request.AdditionalDocumentReferences = new AdditionalDocumentReference[] {
                new AdditionalDocumentReference
                {
                    ID = new IdentifierType
                    {
                        Value          = "2020/S 100-000001",
                        SchemeAgencyID = "EU-COM-OP"
                    },
                    DocumentTypeCode = new EuComGrowCodeType
                    {
                        ListID        = "DocRefContentType",
                        ListAgencyID  = "EU-COM-GROW",
                        ListVersionID = "2.1.1",
                        Value         = "TED_CN"
                    },
                    Attachment = new Attachment
                    {
                        ExternalReference = new ExternalReference
                        {
                            URI = new IdentifierType
                            {
                                Value = "http://ted.europa.eu"
                            },
                            FileName    = "Hankinta X",
                            Description = new[]
                            {
                                "Hankinta X",
                                "0000/S 000-000000",
                            }
                        }
                    }
                }
            };

            if (additionalCriteria != null)
            {
                request.TenderingCriteria = request.TenderingCriteria.Union(additionalCriteria).ToArray();
            }

            var factory  = new QualificationApplicationFactory();
            var espdUrl  = "http://localhost/espd/request/12345";
            var response = factory.CreateEspd2_1_1ExtendedResponse(
                request,
                EconomicOperatorParty(),
                new EuComGrowId(Guid.NewGuid()),
                Guid.NewGuid(),
                espdUrl
                );

            var evidences = new[]
            {
                new Evidence()
                {
                    ID                = EuComGrowId.Random(),
                    Description       = new[] { "Evidence stuff" },
                    DocumentReference = new DocumentReference[]
                    {
                        new DocumentReference()
                        {
                            ID          = EuComGrowId.Random(),
                            IssuerParty = new Party()
                            {
                                PartyName = new PartyName()
                                {
                                    Name = "Issuer"
                                }
                            }
                        }
                    }
                }
            };

            response.Evidences = evidences;
            response.TenderingCriterionResponses = CreateResponses(response).ToArray();

            return(response);
        }