def test_expand_restriction_format(self): string_restriction = 'settings.some_attribute.value != true' dict_restriction_long_format = { 'condition': 'settings.some_attribute.value != true', 'message': 'Another attribute required' } dict_restriction_short_format = { 'settings.some_attribute.value != true': 'Another attribute required' } result = { 'action': 'disable', 'condition': 'settings.some_attribute.value != true', } invalid_format = ['some_condition'] # check string format self.assertDictEqual( RestrictionMixin._expand_restriction( string_restriction), result) result['message'] = 'Another attribute required' # check long format self.assertDictEqual( RestrictionMixin._expand_restriction( dict_restriction_long_format), result) # check short format self.assertDictEqual( RestrictionMixin._expand_restriction( dict_restriction_short_format), result) # check invalid format self.assertRaises( errors.InvalidData, RestrictionMixin._expand_restriction, invalid_format)
def test_check_restrictions(self): attributes = self.data.get('attributes') for gkey, gvalue in six.iteritems(attributes): for key, value in six.iteritems(gvalue): result = RestrictionMixin.check_restrictions( models={'settings': attributes}, restrictions=value.get('restrictions', [])) # check when couple restrictions true for some item if key == 'attribute_1': self.assertTrue(result.get('result')) self.assertEqual( result.get('message'), 'Only one of attributes 1 and 2 allowed. ' + 'Only one of attributes 1 and 3 allowed') # check when different values uses in restriction if key == 'attribute_3': self.assertTrue(result.get('result')) self.assertEqual( result.get('message'), 'Only one of attributes 3 and 4 allowed')