|
15 | 15 | # You should have received a copy of the GNU Lesser General Public License
|
16 | 16 | # along with this program. If not, see <http://www.gnu.org/licenses/>.
|
17 | 17 |
|
| 18 | +importpytest |
| 19 | + |
18 | 20 | fromgitlabimporttypes
|
19 | 21 |
|
20 | 22 |
|
| 23 | +classTestRequiredOptional: |
| 24 | +deftest_requiredoptional_empty(self): |
| 25 | +b=types.RequiredOptional() |
| 26 | +assertnotb.required |
| 27 | +assertnotb.optional |
| 28 | +assertnotb.exclusive |
| 29 | + |
| 30 | +deftest_requiredoptional_values_no_keywords(self): |
| 31 | +b=types.RequiredOptional( |
| 32 | + ("required1","required2"), |
| 33 | + ("optional1","optional2"), |
| 34 | + ("exclusive1","exclusive2"), |
| 35 | + ) |
| 36 | +assertb.required== ("required1","required2") |
| 37 | +assertb.optional== ("optional1","optional2") |
| 38 | +assertb.exclusive== ("exclusive1","exclusive2") |
| 39 | + |
| 40 | +deftest_requiredoptional_values_keywords(self): |
| 41 | +b=types.RequiredOptional( |
| 42 | +exclusive=("exclusive1","exclusive2"), |
| 43 | +optional=("optional1","optional2"), |
| 44 | +required=("required1","required2"), |
| 45 | + ) |
| 46 | +assertb.required== ("required1","required2") |
| 47 | +assertb.optional== ("optional1","optional2") |
| 48 | +assertb.exclusive== ("exclusive1","exclusive2") |
| 49 | + |
| 50 | +deftest_validate_attrs_required(self): |
| 51 | +data= {"required1":1,"optional2":2} |
| 52 | +rq=types.RequiredOptional(required=("required1",)) |
| 53 | +rq.validate_attrs(data=data) |
| 54 | +data= {"optional1":1,"optional2":2} |
| 55 | +withpytest.raises(AttributeError,match="Missing attributes: required1"): |
| 56 | +rq.validate_attrs(data=data) |
| 57 | + |
| 58 | +deftest_validate_attrs_exclusive(self): |
| 59 | +data= {"exclusive1":1,"optional1":1} |
| 60 | +rq=types.RequiredOptional(exclusive=("exclusive1","exclusive2")) |
| 61 | +rq.validate_attrs(data=data) |
| 62 | +data= {"exclusive1":1,"exclusive2":2,"optional1":1} |
| 63 | +withpytest.raises( |
| 64 | +AttributeError, |
| 65 | +match="Provide only one of these attributes: exclusive1, exclusive2", |
| 66 | + ): |
| 67 | +rq.validate_attrs(data=data) |
| 68 | + |
| 69 | + |
21 | 70 | deftest_gitlab_attribute_get():
|
22 | 71 | o=types.GitlabAttribute("whatever")
|
23 | 72 | asserto.get()=="whatever"
|
|