예제 #1
0
def test_domain_action_instantiation():
    domain = Domain(
        intents=[{
            "chitchat": {
                "is_retrieval_intent": True
            }
        }],
        entities=[],
        slots=[],
        templates={},
        action_names=["my_module.ActionTest", "utter_test", "utter_chitchat"],
        forms={},
    )

    instantiated_actions = [
        action.action_for_name(action_name, domain, None)
        for action_name in domain.action_names
    ]

    assert len(instantiated_actions) == 14
    assert instantiated_actions[0].name() == ACTION_LISTEN_NAME
    assert instantiated_actions[1].name() == ACTION_RESTART_NAME
    assert instantiated_actions[2].name() == ACTION_SESSION_START_NAME
    assert instantiated_actions[3].name() == ACTION_DEFAULT_FALLBACK_NAME
    assert instantiated_actions[4].name() == ACTION_DEACTIVATE_LOOP_NAME
    assert instantiated_actions[5].name() == ACTION_REVERT_FALLBACK_EVENTS_NAME
    assert instantiated_actions[6].name(
    ) == ACTION_DEFAULT_ASK_AFFIRMATION_NAME
    assert instantiated_actions[7].name() == ACTION_DEFAULT_ASK_REPHRASE_NAME
    assert instantiated_actions[8].name() == ACTION_TWO_STAGE_FALLBACK_NAME
    assert instantiated_actions[9].name() == ACTION_BACK_NAME
    assert instantiated_actions[10].name() == RULE_SNIPPET_ACTION_NAME
    assert instantiated_actions[11].name() == "my_module.ActionTest"
    assert instantiated_actions[12].name() == "utter_test"
    assert instantiated_actions[13].name() == "utter_chitchat"
예제 #2
0
def test_get_form_action_if_not_in_forms():
    form_action_name = "my_business_logic"
    domain = Domain.from_yaml("""
    actions:
    - my_action
    """)

    with pytest.raises(ActionNotFoundException):
        assert not action.action_for_name(form_action_name, domain, None)
예제 #3
0
def test_get_form_action_without_slot_mapping():
    form_action_name = "my_business_logic"
    domain = Domain.from_yaml(f"""
    actions:
    - my_action
    forms:
    - {form_action_name}
    """)

    actual = action.action_for_name(form_action_name, domain, None)
    assert isinstance(actual, RemoteAction)
예제 #4
0
def test_overridden_form_action():
    form_action_name = "my_business_logic"
    domain = Domain.from_yaml(f"""
    actions:
    - my_action
    - {form_action_name}
    forms:
        {form_action_name}:
    """)

    actual = action.action_for_name(form_action_name, domain, None)
    assert isinstance(actual, RemoteAction)
예제 #5
0
def test_get_form_action_with_rasa_open_source_1_forms():
    form_action_name = "my_business_logic"
    with pytest.warns(FutureWarning):
        domain = Domain.from_yaml(f"""
        actions:
        - my_action
        forms:
        - {form_action_name}
        """)

    actual = action.action_for_name(form_action_name, domain, None)
    assert isinstance(actual, RemoteAction)
예제 #6
0
def test_get_form_action(slot_mapping: Text):
    form_action_name = "my_business_logic"
    domain = Domain.from_yaml(f"""
    actions:
    - my_action
    forms:
      {form_action_name}:
        {slot_mapping}
    """)

    actual = action.action_for_name(form_action_name, domain, None)
    assert isinstance(actual, FormAction)
예제 #7
0
def test_get_form_action():
    form_action_name = "my_business_logic"
    domain = Domain.from_yaml(f"""
    actions:
    - my_action
    forms:
      {form_action_name}:
        my_slot:
        - type: from_text
    """)

    actual = action.action_for_name(form_action_name, domain, None)
    assert isinstance(actual, FormAction)