async def test_no_json_dumping_if_data_did_not_change( self, bot_data, user_data, chat_data, conversations, callback_data, monkeypatch): dict_persistence = DictPersistence() await dict_persistence.update_bot_data(bot_data) await dict_persistence.update_user_data(12345, user_data[12345]) await dict_persistence.update_chat_data(-12345, chat_data[-12345]) await dict_persistence.update_conversation("name", (1, 1), "new_state") await dict_persistence.update_callback_data(callback_data) assert dict_persistence.user_data_json == json.dumps( {12345: user_data[12345]}) assert dict_persistence.chat_data_json == json.dumps( {-12345: chat_data[-12345]}) assert dict_persistence.bot_data_json == json.dumps(bot_data) assert (dict_persistence.conversations_json == DictPersistence._encode_conversations_to_json( {"name": { (1, 1): "new_state" }})) assert dict_persistence.callback_data_json == json.dumps(callback_data) flag = False def dumps(*args, **kwargs): nonlocal flag flag = True # Since the data doesn't change, json.dumps shoduln't be called beyond this point! monkeypatch.setattr(json, "dumps", dumps) await dict_persistence.update_bot_data(bot_data) await dict_persistence.update_user_data(12345, user_data[12345]) await dict_persistence.update_chat_data(-12345, chat_data[-12345]) await dict_persistence.update_conversation("name", (1, 1), "new_state") await dict_persistence.update_callback_data(callback_data) assert not flag
async def test_updating( self, user_data_json, chat_data_json, bot_data_json, callback_data, callback_data_json, conversations, conversations_json, ): dict_persistence = DictPersistence( user_data_json=user_data_json, chat_data_json=chat_data_json, bot_data_json=bot_data_json, callback_data_json=callback_data_json, conversations_json=conversations_json, ) user_data = await dict_persistence.get_user_data() user_data[12345]["test3"]["test4"] = "test6" assert dict_persistence.user_data != user_data assert dict_persistence.user_data_json != json.dumps(user_data) await dict_persistence.update_user_data(12345, user_data[12345]) assert dict_persistence.user_data == user_data assert dict_persistence.user_data_json == json.dumps(user_data) await dict_persistence.drop_user_data(67890) assert 67890 not in dict_persistence.user_data dict_persistence._user_data = None await dict_persistence.drop_user_data(123) assert isinstance(await dict_persistence.get_user_data(), dict) chat_data = await dict_persistence.get_chat_data() chat_data[-12345]["test3"]["test4"] = "test6" assert dict_persistence.chat_data != chat_data assert dict_persistence.chat_data_json != json.dumps(chat_data) await dict_persistence.update_chat_data(-12345, chat_data[-12345]) assert dict_persistence.chat_data == chat_data assert dict_persistence.chat_data_json == json.dumps(chat_data) await dict_persistence.drop_chat_data(-67890) assert -67890 not in dict_persistence.chat_data dict_persistence._chat_data = None await dict_persistence.drop_chat_data(123) assert isinstance(await dict_persistence.get_chat_data(), dict) bot_data = await dict_persistence.get_bot_data() bot_data["test3"]["test4"] = "test6" assert dict_persistence.bot_data != bot_data assert dict_persistence.bot_data_json != json.dumps(bot_data) await dict_persistence.update_bot_data(bot_data) assert dict_persistence.bot_data == bot_data assert dict_persistence.bot_data_json == json.dumps(bot_data) callback_data = await dict_persistence.get_callback_data() callback_data[1]["test3"] = "test4" callback_data[0][0][2]["button2"] = "test41" assert dict_persistence.callback_data != callback_data assert dict_persistence.callback_data_json != json.dumps(callback_data) await dict_persistence.update_callback_data(callback_data) assert dict_persistence.callback_data == callback_data assert dict_persistence.callback_data_json == json.dumps(callback_data) conversation1 = await dict_persistence.get_conversations("name1") conversation1[(123, 123)] = 5 assert not dict_persistence.conversations["name1"] == conversation1 await dict_persistence.update_conversation("name1", (123, 123), 5) assert dict_persistence.conversations["name1"] == conversation1 conversations["name1"][(123, 123)] = 5 assert (dict_persistence.conversations_json == DictPersistence._encode_conversations_to_json(conversations)) assert await dict_persistence.get_conversations("name1" ) == conversation1 dict_persistence._conversations = None await dict_persistence.update_conversation("name1", (123, 123), 5) assert dict_persistence.conversations["name1"] == {(123, 123): 5} assert await dict_persistence.get_conversations("name1") == { (123, 123): 5 } assert (dict_persistence.conversations_json == DictPersistence._encode_conversations_to_json( {"name1": { (123, 123): 5 }}))