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'])
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"})
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'])
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'])
def test_simple_form_with_matcher(self): def matcher(value, form): return "TTT" class SimpleForm(DialogForm): name = DialogField(source='name', matcher=matcher) lastname = DialogField(source='some') class Meta: fields = ('name', 'lastname') form = SimpleForm({'name': 'Vasia', 'some': '1'}) form.match() self.assertEqual(form.get('name').get_value(), ['TTT'])
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'])
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)
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'])
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'])
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'])
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())