|
5 | 5 |
|
6 | 6 | from voluptuous import ( |
7 | 7 | Schema, Required, Optional, Extra, Invalid, In, Remove, Literal, |
8 | | - Url, MultipleInvalid, LiteralInvalid, NotIn, Match, Email, |
| 8 | + Url, MultipleInvalid, LiteralInvalid, TypeInvalid, NotIn, Match, Email, |
9 | 9 | Replace, Range, Coerce, All, Any, Length, FqdnUrl, ALLOW_EXTRA, PREVENT_EXTRA, |
10 | 10 | validate, ExactSequence, Equal, Unordered, Number, Maybe, Datetime, Date, |
11 | 11 | Contains, Marker) |
@@ -153,6 +153,39 @@ def test_literal(): |
153 | 153 | assert False, "Did not raise Invalid" |
154 | 154 |
|
155 | 155 |
|
| 156 | +def test_class(): |
| 157 | + class C1(object): |
| 158 | + pass |
| 159 | + |
| 160 | + schema = Schema(C1) |
| 161 | + schema(C1()) |
| 162 | + |
| 163 | + try: |
| 164 | + schema(None) |
| 165 | + except MultipleInvalid as e: |
| 166 | + assert_equal(str(e), "expected C1") |
| 167 | + assert_equal(len(e.errors), 1) |
| 168 | + assert_equal(type(e.errors[0]), TypeInvalid) |
| 169 | + else: |
| 170 | + assert False, "Did not raise Invalid" |
| 171 | + |
| 172 | + # In Python 2, this will be an old-style class (classobj instance) |
| 173 | + class C2: |
| 174 | + pass |
| 175 | + |
| 176 | + schema = Schema(C2) |
| 177 | + schema(C2()) |
| 178 | + |
| 179 | + try: |
| 180 | + schema(None) |
| 181 | + except MultipleInvalid as e: |
| 182 | + assert_equal(str(e), "expected C2") |
| 183 | + assert_equal(len(e.errors), 1) |
| 184 | + assert_equal(type(e.errors[0]), TypeInvalid) |
| 185 | + else: |
| 186 | + assert False, "Did not raise Invalid" |
| 187 | + |
| 188 | + |
156 | 189 | def test_email_validation(): |
157 | 190 | """ test with valid email """ |
158 | 191 | schema = Schema({"email": Email()}) |
|
0 commit comments