示例#1
0
    def test_simple_form_with_group(self):
        def suggester(field, form):
            return ["TTT", "HHH"]

        def suggester2(field, form):
            return ["3", "1"]

        def chooser(value):
            return [value[0]]

        class SimpleForm(DialogForm):
            name = DialogField(source='name',
                               suggesters=[suggester],
                               choosers=[chooser])
            lastname = DialogField(source='some')
            gp = GroupField(source=[
                DialogField(source='f1', suggesters=[suggester2]),
                DialogField(source='f2')
            ])

            class Meta:
                fields = ('name', 'lastname', 'gp')

        form = SimpleForm({'name': 'Vasia', 'some': '1', 'f2': '33'})
        form.match()
        form.suggest()
        self.assertEqual(form.get('name').get_value(), ['TTT'])
        self.assertEqual(form.get('gp').get_value(), [])
        self.assertEqual(form.get('gp').origin.value, ['33'])
示例#2
0
    def test_with_db(self):
        def on_save(hist, d_context):
            d_context.context = hist.to_json()
            d_context.save()

        dc = DialogContext()
        dc.save()
        ndc = DialogContext.objects.get(id=dc.id)
        h = HistoryManager(dc, parse=lambda e: e.context, on_save=on_save)
        d = datetime.now()
        t = d.time()
        f = SimpleForm({
            'name': 'Vasia',
            'some': ['1'],
            'f1': '22',
            'f2': '33'
        })
        f.match()
        f.suggest()
        h.append('test', f, 'testing')
        self.assertEqual(len(h.all()), 1)
        ndc2 = DialogContext.objects.get(id=dc.id)
        h2 = HistoryManager(ndc2, parse=lambda e: e.context, on_save=on_save)
        self.assertEqual(h.first().name, h2.first().name)
        self.assertEqual(h2.first().form.get('name').get_value(), ['TTT'])
示例#3
0
    def test_form_validate(self):
        def matcher(field, form):
            return ['1', '3']

        class SimpleForm(DialogForm):
            lastnames = ListField(source='some', matcher=matcher)

            class Meta:
                fields = ('lastnames', )

            def validate(self, dialog):
                if not dialog:
                    raise ValueError("Need to pass dialog")
                if self.get('lastnames').get_value() != ['1', '3']:
                    raise ValueError("lastnames should be ['1','3']")

        form = SimpleForm({
            'name': 'Vasia',
            'some': ['1'],
            'f1': '22',
            'f2': '33'
        })
        form.match()
        form.suggest()
        self.assertEqual(form.get('lastnames').get_value(), ['1', '3'])
        form.validate(dialog={"1": "1"})
示例#4
0
    def test_simple_form_with_list(self):
        def matcher(field, form):
            return ['1', '3']

        def suggester(field, form):
            return ["TTT", "HHH"]

        def suggester2(field, form):
            return ["3", "1"]

        def chooser(value):
            return [value[0]]

        def chooser2(value):
            return [value[0]]

        class SimpleForm(DialogForm):
            lastnames = ListField(source='some', matcher=matcher)

            class Meta:
                fields = ('lastnames', )

        form = SimpleForm({
            'name': 'Vasia',
            'some': ['1'],
            'f1': '22',
            'f2': '33'
        })
        form.match()
        form.suggest()
        self.assertEqual(form.get('lastnames').get_value(), ['1', '3'])
示例#5
0
    def test_simple_form_with_suggester(self):
        def suggester(field, form):
            return ["TTT", "HHH"]

        class SimpleForm(DialogForm):
            name = DialogField(source='name', suggesters=[suggester])
            lastname = DialogField(source='some')

            class Meta:
                fields = ('name', 'lastname')

        form = SimpleForm({'name': 'Vasia', 'some': '1'})
        form.match()
        form.suggest()
        self.assertEqual(form.get('name').get_value(), ['TTT', 'HHH'])
示例#6
0
 def test_append_history(self):
     json_data = {}
     dc = mock.Mock(DialogContext)
     dc.context = json_data
     h = HistoryManager(dc, parse=lambda e: e.context)
     f = SimpleForm({
         'name': 'Vasia',
         'some': ['1'],
         'f1': '22',
         'f2': '33'
     })
     f.match()
     f.suggest()
     h.append('test', f, 'testing')
     self.assertEqual(len(h.all()), 1)
     self.assertEqual(f, h.first().form)
示例#7
0
    def test_form_overriders(self):
        def suggester3(field, form):
            return ['12', '34', 55]

        form = SimpleForm(
            {
                'name': 'Vasia',
                'some': ['1'],
                'f1': '22',
                'f2': '33'
            },
            overrides=[OverrideField(source='name', suggesters=[suggester3])])
        form.match()
        form.suggest()
        self.assertEqual(form.get('lastnames').get_value(), ['1', '3'])
        self.assertEqual(form.get('name').get_value(), ['12'])
        self.assertEqual(form.get('gp').get_value(), ['3'])
示例#8
0
    def test_append_history_compare_deserialize(self):
        def on_save(hist, d_context):
            d_context.context = hist.to_json()
            d_context.save()

        json_data = {}
        dc = mock.Mock(DialogContext)
        dc.context = json_data
        h = HistoryManager(dc, parse=lambda e: e.context, on_save=on_save)
        f = SimpleForm({
            'name': 'Vasia',
            'some': ['1'],
            'f1': '22',
            'f2': '33'
        })
        f.match()
        f.suggest()
        h.append('test', f, 'testing')
        self.assertEqual(len(h.all()), 1)
        h2 = HistoryManager(dc, parse=lambda e: e.context, on_save=on_save)
        self.assertEqual(h.first().name, h2.first().name)
        self.assertEqual(h2.first().form.get('name').get_value(), ['TTT'])
示例#9
0
    def test_history_with_old_gen(self):
        def on_save(hist, d_context):
            d_context.context = hist.to_json()
            d_context.save()

        json_data = {}
        dc = mock.Mock(DialogContext)
        dc.context = json_data

        json_data_old = [{
            'timestamp': datetime.now(),
            'name': 'a'
        }, {
            'timestamp': datetime.now(),
            'name': 'b'
        }]
        dc_old = mock.Mock(DialogContext)
        dc_old.context = json_data_old

        h = HistoryManager(dc,
                           dc_old,
                           parse=lambda e: e.context,
                           on_save=on_save)
        f = SimpleForm({
            'name': 'Vasia',
            'some': ['1'],
            'f1': '22',
            'f2': '33'
        })
        f.match()
        f.suggest()
        h.append('test', f, 'testing')
        self.assertEqual(len(h.all()), 1)
        self.assertEqual(len(h.old.all()), 2)

        h2 = HistoryManager(dc, parse=lambda e: e.context, on_save=on_save)
        self.assertEqual(h.first().name, h2.first().name)
        self.assertEqual(h2.first().form.get('name').get_value(), ['TTT'])
示例#10
0
 def test_form_serializer(self):
     form = SimpleForm({
         'name': 'Vasia',
         'some': ['1'],
         'f1': '22',
         'f2': '33'
     })
     form.match()
     form.suggest()
     self.assertEqual(form.get('lastnames').get_value(), ['1', '3'])
     self.assertEqual(form.get('name').get_value(), ['TTT'])
     self.assertEqual(form.get('gp').get_value(), ['3'])
     result = form.serialize()
     new_form = DialogForm.get_form(result)
     self.assertEqual(
         form.get('lastnames').get_value(),
         new_form.get('lastnames').get_value())
     self.assertEqual(
         form.get('name').get_value(),
         new_form.get('name').get_value())
     self.assertEqual(
         form.get('gp').get_value(),
         new_form.get('gp').get_value())