Exemple #1
0
 def test_valid(self):
     self.test_tender["items"][0]["classification"]["id"] = "33928000-1"
     self.test_tender["items"][0]["additionalClassifications"] = [
         self.valid_gmdn
     ]
     tender = Tender(self.test_tender)
     tender.validate()
    def test_migrate_from0to1(self):
        set_db_schema_version(self.db, 0)

        with open(os.path.join(os.path.dirname(__file__), 'data/tender-contract-complete.json'), 'r') as df:
            data = json.loads(df.read())

        t = Tender(data)
        t.store(self.db)
        tender = self.db.get(t.id)

        self.assertEqual(tender['awards'][0]['value'], data['awards'][0]['value'])
        self.assertEqual(tender['awards'][0]['suppliers'], data['awards'][0]['suppliers'])

        contract_data = deepcopy(tender['contracts'][0])
        del contract_data['value']
        del contract_data['suppliers']
        contract_data['tender_id'] = tender['_id']
        contract_data['tender_token'] = 'xxx'
        contract_data['procuringEntity'] = tender['procuringEntity']

        contract = Contract(contract_data)
        contract.dateModified = get_now()
        contract.store(self.db)
        contract_data = self.db.get(contract.id)
        self.assertNotIn("value", contract_data)
        self.assertNotIn("suppliers", contract_data)

        migrate_data(self.app.app.registry, 2)
        migrated_item = self.db.get(contract.id)

        self.assertIn("value", migrated_item)
        self.assertEqual(migrated_item['value'], tender['awards'][0]['value'])
        self.assertIn("suppliers", migrated_item)
        self.assertEqual(migrated_item['suppliers'], tender['awards'][0]['suppliers'])
Exemple #3
0
 def test_with_invalid_cpv(self):
     self.test_tender["items"][0]["additionalClassifications"].append(
         self.valid_ua_road)
     tender = Tender(self.test_tender)
     with self.assertRaises(ModelValidationError) as e:
         tender.validate()
     error_message = e.exception.messages["items"][0][
         "additionalClassifications"][0]
     self.assertIn(
         "Item shouldn't have additionalClassification with scheme UA-ROAD for cpv not starts with",
         error_message)
Exemple #4
0
 def test_validate_tender_minimalstep(self):
     self.test_tender["minimalStep"]["amount"] = 35
     tender = Tender(self.test_tender)
     with self.assertRaises(ModelValidationError) as e:
         tender.validate()
     self.assertEqual(
         e.exception.messages, {
             'minimalStep': [
                 'minimalstep must be between 0.5% and 3% of value (with 2 digits precision).'
             ]
         })
Exemple #5
0
 def test_with_invalid_cpv(self):
     self.test_tender["items"][0]["additionalClassifications"] = [
         self.valid_gmdn
     ]
     tender = Tender(self.test_tender)
     with self.assertRaises(ModelValidationError) as e:
         tender.validate()
     error_message = e.exception.message["items"][0][
         "additionalClassifications"][0]
     self.assertIn(
         u"Item shouldn't have additionalClassification with scheme GMDN for cpv not starts with",
         error_message)
Exemple #6
0
 def test_invalid_description(self):
     self.test_tender["items"][0]["classification"]["id"] = "33928000-1"
     self.test_tender["items"][0]["additionalClassifications"] = [{
         "scheme":
         "GMDN",
         "id":
         "10024",
         "description":
         "Адаптометр invalid"
     }]
     tender = Tender(self.test_tender)
     tender.validate()  # description isn't validated
Exemple #7
0
 def test_more_than_one_gmdn(self):
     self.test_tender["items"][0]["classification"]["id"] = "33928000-1"
     self.test_tender["items"][0]["additionalClassifications"] = [
         self.valid_gmdn, self.valid_gmdn
     ]
     tender = Tender(self.test_tender)
     with self.assertRaises(ModelValidationError) as e:
         tender.validate()
     error_message = e.exception.messages["items"][0][
         "additionalClassifications"][0]
     self.assertIn(
         "Item shouldn't have more than 1 additionalClassification",
         error_message)
Exemple #8
0
 def test_more_than_one_ua_road(self):
     self.test_tender["items"][0]["classification"]["id"] = "71322200-3"
     self.test_tender["items"][0]["additionalClassifications"] = [
         self.valid_ua_road, self.valid_ua_road
     ]
     tender = Tender(self.test_tender)
     with self.assertRaises(ModelValidationError) as e:
         tender.validate()
     error_message = e.exception.message["items"][0][
         "additionalClassifications"][0]
     self.assertIn(
         "Item shouldn't have more than 1 additionalClassification",
         error_message)
Exemple #9
0
 def test_required_id_description(self):
     self.test_tender["items"][0]["classification"]["id"] = "33928000-1"
     self.test_tender["items"][0]["additionalClassifications"] = [{
         "scheme":
         "GMDN"
     }]
     tender = Tender(self.test_tender)
     with self.assertRaises(ModelValidationError) as e:
         tender.validate()
     error_messages = e.exception.messages["items"][0][
         "additionalClassifications"][0]
     self.assertEqual(
         error_messages, {
             "id": ["This field is required."],
             "description": ["This field is required."]
         })
Exemple #10
0
 def test_invalid_id(self):
     self.test_tender["items"][0]["classification"]["id"] = "33928000-1"
     self.test_tender["items"][0]["additionalClassifications"] = [{
         "scheme":
         "GMDN",
         "id":
         "some invalid id",
         "description":
         "Адаптометр"
     }]
     tender = Tender(self.test_tender)
     with self.assertRaises(ModelValidationError) as e:
         tender.validate()
     error_message = e.exception.messages["items"][0][
         "additionalClassifications"][0]["id"][0]
     self.assertEqual(error_message, "GMDN id not found in standards")
Exemple #11
0
 def test_invalid_description(self):
     self.test_tender["items"][0]["classification"]["id"] = "71322200-3"
     self.test_tender["items"][0]["additionalClassifications"].append({
         "scheme":
         "UA-ROAD",
         "id":
         "М-06",
         "description":
         "Some invalid description"
     })
     tender = Tender(self.test_tender)
     with self.assertRaises(ModelValidationError) as e:
         tender.validate()
     error_message = e.exception.messages["items"][0][
         "additionalClassifications"][0]["description"][0]
     self.assertEqual("UA-ROAD description invalid", error_message)
Exemple #12
0
 def test_invalid_id(self):
     self.test_tender["items"][0]["classification"]["id"] = "71322200-3"
     self.test_tender["items"][0]["additionalClassifications"].append({
         "scheme":
         "UA-ROAD",
         "id":
         "some invalid id",
         "description":
         "Київ - Чоп (на м. Будапешт через мм. Львів, Мукачево і Ужгород)",
     })
     tender = Tender(self.test_tender)
     with self.assertRaises(ModelValidationError) as e:
         tender.validate()
     error_message = e.exception.messages["items"][0][
         "additionalClassifications"][0]["id"][0]
     self.assertEqual(error_message, "UA-ROAD id not found in standards")
Exemple #13
0
 def test_gmdn_with_inn_atc(self):
     self.test_tender["items"][0]["classification"]["id"] = "33928000-1"
     for scheme in ["INN", "ATC"]:
         self.test_tender["items"][0]["additionalClassifications"] = [
             self.valid_gmdn,
             {
                 "scheme": scheme,
                 "id": "id",
                 "description": "description"
             },
         ]
         tender = Tender(self.test_tender)
         with self.assertRaises(ModelValidationError) as e:
             tender.validate()
         error_message = e.exception.messages["items"][0][
             "additionalClassifications"][0]
         self.assertIn(
             "Item shouldn't have additionalClassifications with both schemes INN/ATC and GMDN",
             error_message)
    def test_migrate_from0to1(self):
        set_db_schema_version(self.db, 0)

        with open(
                os.path.join(os.path.dirname(__file__),
                             'data/tender-contract-complete.json'), 'r') as df:
            data = json.loads(df.read())

        t = Tender(data)
        t.store(self.db)
        tender = self.db.get(t.id)

        self.assertEqual(tender['awards'][0]['value'],
                         data['awards'][0]['value'])
        self.assertEqual(tender['awards'][0]['suppliers'],
                         data['awards'][0]['suppliers'])

        contract_data = deepcopy(tender['contracts'][0])
        del contract_data['value']
        del contract_data['suppliers']
        contract_data['tender_id'] = tender['_id']
        contract_data['tender_token'] = 'xxx'
        contract_data['procuringEntity'] = tender['procuringEntity']

        contract = Contract(contract_data)
        contract.dateModified = get_now()
        contract.store(self.db)
        contract_data = self.db.get(contract.id)
        self.assertNotIn("value", contract_data)
        self.assertNotIn("suppliers", contract_data)

        migrate_data(self.app.app.registry, 1)
        migrated_item = self.db.get(contract.id)
        tender['awards'][0]['value']['amount'] = \
            str(tender['awards'][0]['value']['amount'])
        self.assertIn("value", migrated_item)

        tender['awards'][0]['value']["amount"] = str(
            tender['awards'][0]['value']["amount"])
        self.assertEqual(migrated_item['value'], tender['awards'][0]['value'])
        self.assertIn("suppliers", migrated_item)
        self.assertEqual(migrated_item['suppliers'],
                         tender['awards'][0]['suppliers'])
Exemple #15
0
    def test_migrate_from0to1(self):
        set_db_schema_version(self.db, 0)

        with open(
                os.path.join(os.path.dirname(__file__),
                             "data/tender-contract-complete.json"), "r") as df:
            data = json.loads(df.read())

        t = Tender(data)
        t.store(self.db)
        tender = self.db.get(t.id)

        self.assertEqual(tender["awards"][0]["value"],
                         data["awards"][0]["value"])
        self.assertEqual(tender["awards"][0]["suppliers"],
                         data["awards"][0]["suppliers"])

        contract_data = deepcopy(tender["contracts"][0])
        del contract_data["value"]
        del contract_data["suppliers"]
        contract_data["tender_id"] = tender["_id"]
        contract_data["tender_token"] = "xxx"
        contract_data["procuringEntity"] = tender["procuringEntity"]

        contract = Contract(contract_data)
        contract.dateModified = get_now()
        contract.store(self.db)
        contract_data = self.db.get(contract.id)
        self.assertNotIn("value", contract_data)
        self.assertNotIn("suppliers", contract_data)

        migrate_data(self.app.app.registry, 1)
        migrated_item = self.db.get(contract.id)
        tender["awards"][0]["value"]["amount"] = str(
            tender["awards"][0]["value"]["amount"])
        self.assertIn("value", migrated_item)

        tender["awards"][0]["value"]["amount"] = str(
            tender["awards"][0]["value"]["amount"])
        self.assertEqual(migrated_item["value"], tender["awards"][0]["value"])
        self.assertIn("suppliers", migrated_item)
        self.assertEqual(migrated_item["suppliers"],
                         tender["awards"][0]["suppliers"])
Exemple #16
0
 def test_not_validate_minimalstep_for_tender_with_lots(self):
     self.test_tender["minimalStep"]["amount"] = 35
     self.test_tender["lots"] = self.test_lots
     tender = Tender(self.test_tender)
     tender.validate()
Exemple #17
0
 def test_valid(self):
     self.test_tender["items"][0]["classification"]["id"] = "71322200-3"
     self.test_tender["items"][0]["additionalClassifications"].append(
         self.valid_ua_road)
     tender = Tender(self.test_tender)
     tender.validate()
Exemple #18
0
 def test_not_validate_tender_minimalstep_before_feature_start_date(self):
     self.test_tender["minimalStep"]["amount"] = 35
     tender = Tender(self.test_tender)
     tender.validate()