async def test_interactive_domain_persistence( mock_endpoint: EndpointConfig, tmp_path: Path ): # Test method interactive._write_domain_to_file tracker_dump = "data/test_trackers/tracker_moodbot.json" tracker_json = rasa.shared.utils.io.read_json_file(tracker_dump) events = tracker_json.get("events", []) domain_path = str(tmp_path / "interactive_domain_save.yml") url = f"{mock_endpoint.url}/domain" with aioresponses() as mocked: mocked.get(url, payload={}) serialised_domain = await interactive.retrieve_domain(mock_endpoint) old_domain = Domain.from_dict(serialised_domain) interactive._write_domain_to_file(domain_path, events, old_domain) saved_domain = rasa.shared.utils.io.read_config_file(domain_path) for default_action in action.default_actions(): assert default_action.name() not in saved_domain["actions"]
async def test_write_domain_to_file_with_form(tmp_path: Path): domain_path = str(tmp_path / "domain.yml") form_name = "my_form" old_domain = Domain.from_yaml( f""" version: "3.0" actions: - utter_greet - utter_goodbye forms: {form_name}: required_slots: [] intents: - greet """ ) events = [ActionExecuted(form_name), ActionExecuted(ACTION_LISTEN_NAME)] events = [e.as_dict() for e in events] interactive._write_domain_to_file(domain_path, events, old_domain) assert set(Domain.from_path(domain_path).action_names_or_texts) == set( old_domain.action_names_or_texts )