summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorNejc Habjan <nejc.habjan@siemens.com>2022-11-27 00:11:32 +0100
committerJohn Villalovos <john@sodarock.com>2022-12-18 01:13:20 -0600
commit5f8b8f5be901e944dfab2257f9e0cc4b2b1d2cd5 (patch)
tree30d3b0fa7103cc52829979af1578f2c4bebff4b5 /tests
parent1816107b8d87614e7947837778978d8de8da450f (diff)
downloadgitlab-5f8b8f5be901e944dfab2257f9e0cc4b2b1d2cd5.tar.gz
feat(api): add support for resource groups
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/objects/test_resource_groups.py79
1 files changed, 79 insertions, 0 deletions
diff --git a/tests/unit/objects/test_resource_groups.py b/tests/unit/objects/test_resource_groups.py
new file mode 100644
index 0000000..dd579ac
--- /dev/null
+++ b/tests/unit/objects/test_resource_groups.py
@@ -0,0 +1,79 @@
+"""
+GitLab API:
+https://docs.gitlab.com/ee/api/resource_groups.html
+"""
+import pytest
+import responses
+
+from gitlab.v4.objects import ProjectResourceGroup, ProjectResourceGroupUpcomingJob
+
+from .test_jobs import job_content
+
+resource_group_content = {
+ "id": 3,
+ "key": "production",
+ "process_mode": "unordered",
+ "created_at": "2021-09-01T08:04:59.650Z",
+ "updated_at": "2021-09-01T08:04:59.650Z",
+}
+
+
+@pytest.fixture
+def resp_list_resource_groups():
+ with responses.RequestsMock() as rsps:
+ rsps.add(
+ method=responses.GET,
+ url="http://localhost/api/v4/projects/1/resource_groups",
+ json=[resource_group_content],
+ content_type="application/json",
+ status=200,
+ )
+ yield rsps
+
+
+@pytest.fixture
+def resp_get_resource_group():
+ with responses.RequestsMock() as rsps:
+ rsps.add(
+ method=responses.GET,
+ url="http://localhost/api/v4/projects/1/resource_groups/production",
+ json=resource_group_content,
+ content_type="application/json",
+ status=200,
+ )
+ yield rsps
+
+
+@pytest.fixture
+def resp_list_upcoming_jobs():
+ with responses.RequestsMock() as rsps:
+ rsps.add(
+ method=responses.GET,
+ url="http://localhost/api/v4/projects/1/resource_groups/production/upcoming_jobs",
+ json=[job_content],
+ content_type="application/json",
+ status=200,
+ )
+ yield rsps
+
+
+def test_list_project_resource_groups(project, resp_list_resource_groups):
+ resource_groups = project.resource_groups.list()
+ assert isinstance(resource_groups, list)
+ assert isinstance(resource_groups[0], ProjectResourceGroup)
+ assert resource_groups[0].process_mode == "unordered"
+
+
+def test_get_project_resource_group(project, resp_get_resource_group):
+ resource_group = project.resource_groups.get("production")
+ assert isinstance(resource_group, ProjectResourceGroup)
+ assert resource_group.process_mode == "unordered"
+
+
+def test_list_resource_group_upcoming_jobs(project, resp_list_upcoming_jobs):
+ resource_group = project.resource_groups.get("production", lazy=True)
+ upcoming_jobs = resource_group.upcoming_jobs.list()
+
+ assert isinstance(upcoming_jobs, list)
+ assert isinstance(upcoming_jobs[0], ProjectResourceGroupUpcomingJob)
+ assert upcoming_jobs[0].ref == "main"