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'])
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)
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).' ] })
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)
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
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)
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)
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."] })
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")
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)
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")
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'])
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"])
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()
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()
def test_not_validate_tender_minimalstep_before_feature_start_date(self): self.test_tender["minimalStep"]["amount"] = 35 tender = Tender(self.test_tender) tender.validate()