def test_ParamFormField(self): test_dict = {'rule': 'test', 'nd': 5, 'par_type': 'exit'} params = params_exit.exit_test(**test_dict) parameters = params.parameters from django import forms class ParamTestForm(forms.Form): chars = forms.CharField() params = ParamFormField(par_type='exit', parameters=parameters) # empty form ptf = ParamTestForm() self.assertFalse(ptf.is_bound) self.assertFalse(ptf.is_valid()) self.assertFalse(ptf.errors) self.assertIn('value="20"', str(ptf['params'])) self.assertIn('value="test"', str(ptf['params'])) self.assertNotIn('value="exit"', str(ptf['params'])) # bound_form ptf2 = ParamTestForm({'params_0': 'test', 'params_1': 5, 'chars': 'Hello'}) self.assertIsInstance(params, _Param) self.assertTrue(ptf2.is_bound) self.assertTrue(ptf2.is_valid()) self.assertFalse(ptf2.errors) self.assertIsInstance(ptf2.cleaned_data['params'], _Param) self.assertEqual(str2dict(unicode(ptf2.cleaned_data['params'])), str2dict(unicode(params)))
def test_custom_field(self): test_dict = {'rule': 'test', 'nd': 5, 'par_type': 'exit'} params = params_exit.exit_test(**test_dict) pm = ParamModel.objects.create(params=params) self.assertEqual(pm._meta.get_field('params').verbose_name, 'parameters') self.assertEqual(pm.params._nd, 5) self.assertEqual(pm.params.rule, 'test') self.assertEqual(pm.params.par_type, 'exit') pm1 = ParamModel.objects.get(pk=pm.pk) self.assertIsInstance(pm1.params, _Param) self.assertEqual(str2dict(unicode(pm1.params)), {'rule': 'test', 'nd': 5}) test_dict2 = {'rule': 'test', 'nd': 8, 'par_type': 'exit'} params2 = params_exit.exit_test(**test_dict2) self.assertQuerysetEqual(ParamModel.objects.filter( params__in=[params, params2]), [{'rule': 'test', 'nd': 5}], lambda qs: str2dict(unicode(qs.params))) self.assertRaises(TypeError, lambda: ParamModel.objects.filter( params__lt=params)) stream = serializers.serialize("json", ParamModel.objects.all()) self.assertEqual(stream, '[{"pk": %d, "model": "metasystem.parammodel", "fields": {"params": "ccollections\\nOrderedDict\\np1\\n((lp2\\n(lp3\\nS\'rule\'\\np4\\naS\'test\'\\np5\\naa(lp6\\nS\'nd\'\\np7\\naI5\\naatRp8\\n."}}]' % pm1.pk) obj = list(serializers.deserialize("json", stream))[0] self.assertEqual(obj.object, pm) pm.delete() test_dict = {'rule': 'test', 'nd': 5, 'par_type': 'exit'} params = params_exit.exit_test(**test_dict) pm1 = ParamModel.objects.create(params=params) test_dict = {'rule': 'test', 'nd': 8, 'par_type': 'exit'} params = params_exit.exit_test(**test_dict) pm2 = ParamModel.objects.create(params=params) self.assertQuerysetEqual( ParamModel.objects.all(), [ {'rule': 'test', 'nd': 5}, {'rule': 'test', 'nd': 8}, ], lambda qs: str2dict(unicode(qs.params)) )
def test_defer(self): test_dict = {'rule': 'test', 'nd': 5, 'par_type': 'exit'} params = params_exit.exit_test(**test_dict) pm = ParamModel.objects.create(params=params) self.assertIsInstance(pm.params, _Param) pm = ParamModel.objects.get(pk=pm.pk) self.assertIsInstance(pm.params, _Param) self.assertEqual(pm.params.get_dict(), params.get_dict()) pm = ParamModel.objects.defer('params').get(pk=pm.pk) pm.save() pm = ParamModel.objects.get(pk=pm.pk) self.assertIsInstance(pm.params, _Param) self.assertEqual(pm.params.get_dict(), params.get_dict())
def test_ParamFormField_MODEL(self): test_dict = {'rule': 'test', 'nd': 5, 'par_type': 'exit'} params = params_exit.exit_test(**test_dict) pm = ParamModel.objects.create(params=params) parameters = params.parameters from django import forms class ParamTestForm(forms.ModelForm): params = ParamFormField(par_type='exit', parameters=parameters) class Meta: model = ParamModel # create an empty form ptf = ParamTestForm() self.assertFalse(ptf.is_bound) self.assertFalse(ptf.is_valid()) self.assertFalse(ptf.errors) self.assertIn('value="20"', str(ptf['params'])) self.assertIn('value="test"', str(ptf['params'])) self.assertNotIn('value="exit"', str(ptf['params'])) # create an unbound form pm = ParamModel.objects.get(pk=pm.pk) ptf2 = ParamTestForm(instance=pm) self.assertFalse(ptf2.is_bound) self.assertFalse(ptf2.errors) self.assertIn('value="5"', str(ptf2['params'])) self.assertIn('value="test"', str(ptf2['params'])) self.assertNotIn('value="exit"', str(ptf2['params'])) # create an bound form ptf2 = ParamTestForm({'params_0': 'test', 'params_1': 5, 'chars': 'Hello'}) self.assertIsInstance(params, _Param) self.assertTrue(ptf2.is_bound) self.assertTrue(ptf2.is_valid()) self.assertFalse(ptf2.errors) self.assertIsInstance(ptf2.cleaned_data['params'], _Param) self.assertEqual(str2dict(unicode(ptf2.cleaned_data['params'])), str2dict(unicode(params)))