diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-08-26 12:56:01 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-08-26 12:56:01 -0400 |
| commit | 117997cd5b849a236208cf9ea16f0f09c6962804 (patch) | |
| tree | 76205a8974aadf03a944a853389ccf66f81e2866 /test | |
| parent | f10eba00ea7c92315b4b39c69627058ad4931448 (diff) | |
| download | sqlalchemy-117997cd5b849a236208cf9ea16f0f09c6962804.tar.gz | |
Raise when two validators conflict
Two @validates decorators that make use of the same name
is not supported. Raise an exception.
Change-Id: Ia3e89ffdc9ef345a0de258e2ac0ac5e0bd421c61
Fixes: #3776
Diffstat (limited to 'test')
| -rw-r--r-- | test/orm/test_validators.py | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/test/orm/test_validators.py b/test/orm/test_validators.py index 417554f46..e59bb580a 100644 --- a/test/orm/test_validators.py +++ b/test/orm/test_validators.py @@ -1,7 +1,9 @@ from test.orm import _fixtures -from sqlalchemy.testing import fixtures, assert_raises, eq_, ne_ +from sqlalchemy.testing import fixtures, assert_raises, eq_, ne_, \ + assert_raises_message from sqlalchemy.orm import mapper, Session, validates, relationship from sqlalchemy.testing.mock import Mock, call +from sqlalchemy import exc class ValidatorTest(_fixtures.FixtureTest): @@ -145,6 +147,41 @@ class ValidatorTest(_fixtures.FixtureTest): ] ) + def test_validator_multi_warning(self): + users = self.tables.users + + class Foo(object): + @validates("name") + def validate_one(self, key, value): + pass + + @validates("name") + def validate_two(self, key, value): + pass + + assert_raises_message( + exc.InvalidRequestError, + "A validation function for mapped attribute " + "'name' on mapper Mapper|Foo|users already exists", + mapper, Foo, users + ) + + class Bar(object): + @validates("id") + def validate_three(self, key, value): + return value + 10 + + @validates("id", "name") + def validate_four(self, key, value): + return value + "foo" + + assert_raises_message( + exc.InvalidRequestError, + "A validation function for mapped attribute " + "'name' on mapper Mapper|Bar|users already exists", + mapper, Bar, users + ) + def test_validator_wo_backrefs_wo_removes(self): self._test_validator_backrefs(False, False) |
