def test_reference_3(self): """ This entry does not have DOI. ICSD ver. 2017 had multiple references, while ICSD ver. 2019 does not have. """ code = 5151 query = { "icsd_collection_code": code, } queryer = Queryer(query=query) queryer.perform_icsd_query() self.assertEqual(1, queryer.hits) with open("expected/{}/meta_data.json".format(code)) as f: expected_dict = json.load(f) with open("{}/meta_data.json".format(code)) as f: crawled_dict = json.load(f) self.assertEqual("Powder Diffraction (1987) 2, p225-p226", expected_dict['reference_2']) self.assertEqual("", crawled_dict['reference_2']) for key in new_keys + conflicting_keys: del crawled_dict[key] for key in abolished_keys + conflicting_keys: del expected_dict[key] self.assertDictEqual(expected_dict, crawled_dict)
def test_dynamic_table(self): code = 418537 query = { "icsd_collection_code": code, } queryer = Queryer(query=query) queryer.perform_icsd_query() self.assertEqual(1, queryer.hits)
def test_warning_parse(self): code = 418498 query = { "icsd_collection_code": code, } queryer = Queryer(query=query, structure_source="all") queryer.perform_icsd_query() self.assertEqual(1, queryer.hits) with open("{}/meta_data.json".format(code)) as f: crawled_dict = json.load(f) assert crawled_dict['theoretical_calculation'] == True
def command_scrape(args): if args.all: scrape_all(args.dlcif == False, args.maxdl) if args.code > 0: query = { "icsd_collection_code": args.code, } queryer = Queryer(query=query, structure_source=args.source) queryer.skipcif = args.dlcif == False queryer.perform_icsd_query() if args.composition != "": query = { "composition": args.composition, } queryer = Queryer(query=query, structure_source=args.source) queryer.perform_icsd_query()
def test_metadata(self): query = { "composition": "H:18:18 Al:6:6 O:28:28 P:4:4", } queryer = Queryer(query=query) queryer.perform_icsd_query() self.assertEqual(1, queryer.hits) with open("expected/5013/meta_data.json") as f: expected_dict = json.load(f) with open("5013/meta_data.json") as f: crawled_dict = json.load(f) for key in new_keys + conflicting_keys: del crawled_dict[key] for key in abolished_keys + conflicting_keys: del expected_dict[key] self.assertDictEqual(expected_dict, crawled_dict)
def test_random(self): paths = glob.glob("expected/*") path = random.choice(paths) code = path.split("/")[-1] query = { "icsd_collection_code": code, } queryer = Queryer(query=query) queryer.perform_icsd_query() self.assertEqual(1, queryer.hits) with open("expected/{}/meta_data.json".format(code)) as f: expected_dict = json.load(f) with open("{}/meta_data.json".format(code)) as f: crawled_dict = json.load(f) self.assertCountEqual(crawled_dict['comments'], expected_dict['comments']) if expected_dict['R_value'] == "": self.assertEqual(crawled_dict['R_value'], None) if expected_dict['structural_prototype'] != crawled_dict[ 'structural_prototype']: print("Structural prototypes did not match: 2017ver:{} 2019ver:{}". format(expected_dict['structural_prototype'], crawled_dict['structural_prototype'])) assert "Version" in crawled_dict['ICSD_version'] for key in new_keys + conflicting_keys: del crawled_dict[key] for key in abolished_keys + conflicting_keys: del expected_dict[key] self.assertDictEqual(expected_dict, crawled_dict)
def test_cell_parameter(self): code = 251445 query = { "icsd_collection_code": code, } queryer = Queryer(query=query) queryer.perform_icsd_query() self.assertEqual(1, queryer.hits) with open("expected/{}/meta_data.json".format(code)) as f: expected_dict = json.load(f) with open("{}/meta_data.json".format(code)) as f: crawled_dict = json.load(f) for key in new_keys + conflicting_keys: del crawled_dict[key] for key in abolished_keys + conflicting_keys: del expected_dict[key] self.assertDictEqual(expected_dict, crawled_dict)
def test_theory(self): code = 195347 query = { "icsd_collection_code": code, } queryer = Queryer(query=query, structure_source="theory") queryer.perform_icsd_query() self.assertEqual(1, queryer.hits) with open("expected/{}/meta_data.json".format(code)) as f: expected_dict = json.load(f) with open("{}/meta_data.json".format(code)) as f: crawled_dict = json.load(f) for key in new_keys + conflicting_keys: del crawled_dict[key] for key in abolished_keys + conflicting_keys: del expected_dict[key] self.assertDictEqual(expected_dict, crawled_dict)
def test_AlOF(self): query = {'composition': 'Al O F', 'number_of_elements': '3'} queryer = Queryer(query=query, structure_source='theory') queryer.perform_icsd_query() self.assertEqual(2, queryer.hits)