Beispiel #1
0
def text_request(reg):
    req = Request(
        MockTextMessage(),
        reg,
    )
    run(req.transform())
    return req
Beispiel #2
0
def test_transform_layers(reg):
    with patch_conf(LOADER_CONFIG):
        req = Request(
            MockTextMessage(),
            reg,
        )
        run(req.transform())
        stack = req.stack

        assert layers.RawText in stack._transformed
        assert stack.get_layer(layers.RawText).text == 'foo'
        assert len(stack.get_layers(layers.Text)) == 1
        assert len(stack.get_layers(layers.RawText)) == 1
Beispiel #3
0
def test_fsm_find_trigger(reg):
    with patch_conf(settings_file=ENGINE_SETTINGS_FILE):
        fsm = FSM()
        req = Request(MockTextMessage('hello'), reg)
        run(req.transform())

        trigger, state = run(fsm._find_trigger(req))
        assert isinstance(trigger, trig.Text)
        assert state == Hello

        req = Request(MockChoiceMessage(), reg)
        run(req.transform())
        trigger, state = run(fsm._find_trigger(req))
        assert trigger is None
        assert state is None

        reg = Register({
            Register.STATE: HowAreYou.name(),
            Register.TRANSITION: {
                'choices': {
                    'yes': {
                        'text': 'Yes',
                        'intent': 'YES',
                    },
                    'no': {
                        'text': 'No',
                        'intent': 'NO'
                    },
                },
            },
        })

        req = Request(MockChoiceMessage(), reg)
        run(req.transform())
        trigger, state = run(fsm._find_trigger(req))
        assert isinstance(trigger, trig.Choice)
        assert state == Great
Beispiel #4
0
def test_fsm_confused_state():
    with patch_conf(settings_file=ENGINE_SETTINGS_FILE):
        fsm = FSM()

        reg = Register({})
        req = Request(MockEmptyMessage(), reg)
        run(req.transform())
        assert fsm._confused_state(req) == BaseTestState

        reg = Register({Register.STATE: 'tests.issue_0001.states.Hello'})
        req = Request(MockEmptyMessage(), reg)
        run(req.transform())
        assert fsm._confused_state(req) == Hello
Beispiel #5
0
def test_choice_trigger(reg):
    with patch_conf(LOADER_CONFIG):
        req = Request(MockTextMessage('foo', True), reg)
        run(req.transform())
        ct_factory = trig.Choice.builder()
        ct = ct_factory(req)  # type: trig.Choice
        assert run(ct.rank()) == 1.0
        assert ct.slug == 'foo'

        req = Request(MockTextMessage('some other stuff'), reg)
        run(req.transform())
        ct_factory = trig.Choice.builder()
        ct = ct_factory(req)  # type: trig.Choice
        assert run(ct.rank()) == 1.0
        assert ct.slug == 'bar'
Beispiel #6
0
def test_request_stack(reg):
    req = Request(MockTextMessage('foo'), reg)
    run(req.transform())
    assert req.has_layer(l.Text)
    assert req.get_layer(l.Text).text == 'foo'
    assert len(req.get_layers(l.Text)) == 1
Beispiel #7
0
def test_request_trans_reg(reg):
    req = Request(MockTextMessage('foo'), reg)
    run(req.transform())
    assert req.get_trans_reg('foo') == 42
    assert req.get_trans_reg('bar') is None
    assert req.get_trans_reg('bar', True) is True