def test_timestamp_assertions(): """Test that timestamps adhere to the format we think they should.""" def test_one(ts): # Helper function to test one timestamp. Returns 1 to increment # `num_parsed_ok`. try: parse_timestamp(ts) return 1 except ValueError as e: print(e) return 0 menus = menu._get_local_menu_data_json()["menus"] total_parsed = 0 # The number of timestamps tested. num_parsed_ok = 0 # The number of timestamps that parsed ok. for menu in menus: total_parsed += 1 num_parsed_ok += test_one(menu["date"]) total_parsed += 1 num_parsed_ok += test_one(menu["updated_at"]) if "created_at" in menu: total_parsed += 1 num_parsed_ok += test_one(menu["created_at"]) if num_parsed_ok == total_parsed: print("All %s timestamps parsed as expected." % total_parsed) else: print("%s of %s timestamps parsed as expected." % (num_parsed_ok, total_parsed))
def get_all_items(): """A convenience method to quickly get a list of all item JSON objects.""" menus = menu._get_local_menu_data_json()["menus"] all_items = [] for m in menus: all_items.extend(m["items"]) return all_items
def test_one_menu_per_day(): """Check if there's ever been multiple menus on a single date.""" menus = menu._get_local_menu_data_json()["menus"] get_menu_date = lambda menu: parse_timestamp(menu["date"]).date() menu_dates = sorted(map(get_menu_date, menus)) one_menu_per_day = True prev_date = menu_dates[0] for date in menu_dates[1:]: if date == prev_date: print("An extra menu was found for", date.strftime("%c")) one_menu_per_day = False prev_date = date if one_menu_per_day: print("No date with multiple menus found.")
def find_menu_keys(): find_dict_keys(menu._get_local_menu_data_json()["menus"])