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)
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)