|
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 | +import pytest |
| 19 | + |
18 | 20 | from gitlab import types
|
19 | 21 |
|
20 | 22 |
|
| 23 | +class TestRequiredOptional: |
| 24 | + def test_requiredoptional_empty(self): |
| 25 | + b = types.RequiredOptional() |
| 26 | + assert not b.required |
| 27 | + assert not b.optional |
| 28 | + assert not b.exclusive |
| 29 | + |
| 30 | + def test_requiredoptional_values_no_keywords(self): |
| 31 | + b = types.RequiredOptional( |
| 32 | + ("required1", "required2"), |
| 33 | + ("optional1", "optional2"), |
| 34 | + ("exclusive1", "exclusive2"), |
| 35 | + ) |
| 36 | + assert b.required == ("required1", "required2") |
| 37 | + assert b.optional == ("optional1", "optional2") |
| 38 | + assert b.exclusive == ("exclusive1", "exclusive2") |
| 39 | + |
| 40 | + def test_requiredoptional_values_keywords(self): |
| 41 | + b = types.RequiredOptional( |
| 42 | + exclusive=("exclusive1", "exclusive2"), |
| 43 | + optional=("optional1", "optional2"), |
| 44 | + required=("required1", "required2"), |
| 45 | + ) |
| 46 | + assert b.required == ("required1", "required2") |
| 47 | + assert b.optional == ("optional1", "optional2") |
| 48 | + assert b.exclusive == ("exclusive1", "exclusive2") |
| 49 | + |
| 50 | + def test_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 | + with pytest.raises(AttributeError, match="Missing attributes: required1"): |
| 56 | + rq.validate_attrs(data=data) |
| 57 | + |
| 58 | + def test_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 | + with pytest.raises( |
| 64 | + AttributeError, |
| 65 | + match="Provide only one of these attributes: exclusive1, exclusive2", |
| 66 | + ): |
| 67 | + rq.validate_attrs(data=data) |
| 68 | + |
| 69 | + |
21 | 70 | def test_gitlab_attribute_get():
|
22 | 71 | o = types.GitlabAttribute("whatever")
|
23 | 72 | assert o.get() == "whatever"
|
|
0 commit comments