Example #1
0
class T05_ValidateField(unittest.TestCase):
    """ validate_field() """
    def setUp(self):
        unittest.TestCase.setUp(self)
        server = gnats.Server('somehost')
        conn = FakeServerConnectionForDB(server)
        self.db = Database(server, 'testdb', conn)

    def test_01_field_raises_on_invalid(self):
        """ validate_field raises on invalid field """
        self.assertRaises(gnats.InvalidFieldNameException,
                          self.db.validate_field, 'not-valid', {})

    def test_02_field_required_absent(self):
        """ validate_field complains on absent required value """
        out = self.db.validate_field('synopsis', {})
        self.assertTrue(len(out) == 1)
        self.assertTrue(out[0].lower().find('required') > -1)

    def test_03_field_required_blank(self):
        """ validate_field complains on blank required value """
        out = self.db.validate_field('synopsis', {'synopsis': ''})
        self.assertTrue(len(out) == 1)
        self.assertTrue(out[0].lower().find('required') > -1)

    def test_04_field_required_present(self):
        """ validate_field finds required value """
        out = self.db.validate_field('synopsis', {'synopsis': 'foo'})
        self.assertTrue(len(out) == 0)

    def test_05_field_enum_invalid(self):
        """ validate_field complains about invalid enum """
        out = self.db.validate_field('enum-fld', {
            'enum-fld': 'foo',
        })
        self.assertTrue(len(out) == 1)
        self.assertTrue(out[0].lower().find('illegal') > -1)

    def test_06_field_enum_valid(self):
        """ validate_field accepts valid enum """
        out = self.db.validate_field('enum-fld', {
            'enum-fld': 'cat1',
        })
        self.assertTrue(len(out) == 0)

    def test_07_field_enum_allow_any(self):
        """ validate_field honors allow_any_value """
        self.db.fields['enum-fld'].allow_any_value = True
        out = self.db.validate_field('enum-fld', {
            'enum-fld': 'foo',
        })
        self.assertTrue(len(out) == 0)

    def test_08_field_change_reason_missing(self):
        """ validate_field complains about missing change-reason """
        out = self.db.validate_field('enum-fld', {
            'enum-fld': 'cat2',
        },
                                     check_cr=True)
        self.assertTrue(len(out) == 1)
        self.assertTrue(out[0].lower().find('change reason') > -1)

    def test_09_field_change_reason_present(self):
        """ validate_field finds supplied change-reason """
        out = self.db.validate_field('enum-fld', {
            'enum-fld': 'cat2',
            'enum-fld-changed-why': 'foo',
        },
                                     check_cr=True)
        self.assertTrue(len(out) == 0)

    def test_10_field_multienum_string(self):
        """ Valid multienum value supplied as string """
        out = self.db.validate_field('multienum-fld', {
            'multienum-fld': 'product1:product2',
        })
        self.assertTrue(len(out) == 0)

    def test_11_field_bad_multienum_string(self):
        """ Invalid multienum value supplied as string """
        out = self.db.validate_field('multienum-fld', {
            'multienum-fld': 'productX:product2',
        })
        self.assertTrue(out[0].find('productX') > -1)

    def test_12_field_multienum_list(self):
        """ Valid multienum value supplied as list """
        out = self.db.validate_field(
            'multienum-fld', {
                'multienum-fld': 'product1 product2'.split(),
            })
        self.assertTrue(len(out) == 0)

    def test_13_field_bad_multienum_list(self):
        """ Invalid multienum value supplied as list """
        out = self.db.validate_field(
            'multienum-fld', {
                'multienum-fld': 'product1 productY'.split(),
            })
        self.assertTrue(out[0].find('productY') > -1)

    def test_14_field__multienum_bad_input_type(self):
        """ Multienum value supplied as non-list, non-string """
        out = self.db.validate_field('multienum-fld', {
            'multienum-fld': 1234,
        })
        self.assertTrue(out[0].find('neither') > -1)
Example #2
0
class T05_ValidateField(unittest.TestCase):
    """ validate_field() """

    def setUp(self):
        unittest.TestCase.setUp(self)
        server = gnats.Server('somehost')
        conn = FakeServerConnectionForDB(server)
        self.db = Database(server, 'testdb', conn)

    def test_01_field_raises_on_invalid(self):
        """ validate_field raises on invalid field """
        self.assertRaises(gnats.InvalidFieldNameException,
                          self.db.validate_field, 'not-valid', {})

    def test_02_field_required_absent(self):
        """ validate_field complains on absent required value """
        out = self.db.validate_field('synopsis', {})
        self.assertTrue(len(out) == 1)
        self.assertTrue(out[0].lower().find('required') > -1)

    def test_03_field_required_blank(self):
        """ validate_field complains on blank required value """
        out = self.db.validate_field('synopsis', {'synopsis': ''})
        self.assertTrue(len(out) == 1)
        self.assertTrue(out[0].lower().find('required') > -1)

    def test_04_field_required_present(self):
        """ validate_field finds required value """
        out = self.db.validate_field('synopsis', {'synopsis': 'foo'})
        self.assertTrue(len(out) == 0)

    def test_05_field_enum_invalid(self):
        """ validate_field complains about invalid enum """
        out = self.db.validate_field('enum-fld', {'enum-fld': 'foo',})
        self.assertTrue(len(out) == 1)
        self.assertTrue(out[0].lower().find('illegal') > -1)

    def test_06_field_enum_valid(self):
        """ validate_field accepts valid enum """
        out = self.db.validate_field('enum-fld', {'enum-fld': 'cat1',})
        self.assertTrue(len(out) == 0)

    def test_07_field_enum_allow_any(self):
        """ validate_field honors allow_any_value """
        self.db.fields['enum-fld'].allow_any_value = True
        out = self.db.validate_field('enum-fld', {'enum-fld': 'foo',})
        self.assertTrue(len(out) == 0)

    def test_08_field_change_reason_missing(self):
        """ validate_field complains about missing change-reason """
        out = self.db.validate_field('enum-fld', {'enum-fld': 'cat2',},
                                     check_cr=True)
        self.assertTrue(len(out) == 1)
        self.assertTrue(out[0].lower().find('change reason') > -1)

    def test_09_field_change_reason_present(self):
        """ validate_field finds supplied change-reason """
        out = self.db.validate_field('enum-fld', {'enum-fld': 'cat2',
            'enum-fld-changed-why': 'foo',}, check_cr=True)
        self.assertTrue(len(out) == 0)

    def test_10_field_multienum_string(self):
        """ Valid multienum value supplied as string """
        out = self.db.validate_field('multienum-fld',
                                     {'multienum-fld': 'product1:product2',})
        self.assertTrue(len(out) == 0)

    def test_11_field_bad_multienum_string(self):
        """ Invalid multienum value supplied as string """
        out = self.db.validate_field('multienum-fld',
                                     {'multienum-fld': 'productX:product2',})
        self.assertTrue(out[0].find('productX') > -1)

    def test_12_field_multienum_list(self):
        """ Valid multienum value supplied as list """
        out = self.db.validate_field('multienum-fld',
            {'multienum-fld': 'product1 product2'.split(),})
        self.assertTrue(len(out) == 0)

    def test_13_field_bad_multienum_list(self):
        """ Invalid multienum value supplied as list """
        out = self.db.validate_field('multienum-fld',
            {'multienum-fld': 'product1 productY'.split(),})
        self.assertTrue(out[0].find('productY') > -1)

    def test_14_field__multienum_bad_input_type(self):
        """ Multienum value supplied as non-list, non-string """
        out = self.db.validate_field('multienum-fld',
            {'multienum-fld': 1234,})
        self.assertTrue(out[0].find('neither') > -1)