def test_json(self): test_repo = ConvertRepo() test_type1 = ConvertType(test_repo, "test_type1") test_type2 = ConvertType(test_repo, "test_type2") test_repo.add_type(test_type1) test_repo.add_type(test_type2) test_unit1 = ConvertUnit(test_type1, ["unit1"], 1) test_unit2 = ConvertUnit(test_type2, ["unit2"], 1) test_type1.base_unit = test_unit1 test_type2.base_unit = test_unit2 test_group1 = ConvertPrefixGroup(test_repo, "group1") test_group2 = ConvertPrefixGroup(test_repo, "group2") test_repo.add_prefix_group(test_group1) test_repo.add_prefix_group(test_group2) # Save to JSON and load try: try: os.rename("store/convert.json", "store/convert.json.tmp") except OSError: pass test_repo.save_json() new_repo = ConvertRepo.load_json() assert len(new_repo.type_list) == 2 assert len(new_repo.prefix_group_list) == 2 assert "test_type1" in [x.name for x in new_repo.type_list] assert "test_type2" in [x.name for x in new_repo.type_list] assert "group1" in [x.name for x in new_repo.prefix_group_list] assert "group2" in [x.name for x in new_repo.prefix_group_list] finally: try: os.remove("store/convert.json") except OSError: pass try: os.rename("store/convert.json.tmp", "store/convert.json") except OSError: pass