Skip to content

Commit 8b8c8c5

Browse files
committed
add tests for Releases
Use pytest to test Releases functionality. Signed-off-by: Mike Szczys <[email protected]>
1 parent 6b474b6 commit 8b8c8c5

File tree

3 files changed

+113
-0
lines changed

3 files changed

+113
-0
lines changed

golioth/pytest/conftest.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@ def anyio_backend():
1010
"fixtures.cohorts",
1111
"fixtures.deployments",
1212
"fixtures.packages",
13+
"fixtures.releases",
1314
"fixtures.tags",
1415
]
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import golioth
2+
import pytest
3+
from fixtures.rand_name import get_random_name
4+
5+
@pytest.fixture(scope="module")
6+
async def release(project, artifact, tag):
7+
release_tag = f'release-{get_random_name()}'
8+
release = await project.releases.create([artifact.id], [release_tag], [tag.id], False)
9+
yield release
10+
11+
await project.releases.delete(release.id)
12+
13+
14+
@pytest.fixture(scope="module")
15+
async def release_to_delete(project, artifact, tag):
16+
release_tag = f'release-{get_random_name()}'
17+
release = await project.releases.create([artifact.id], [release_tag], [tag.id], False)
18+
yield release
19+
20+
try:
21+
await project.release.delete(release.id)
22+
except:
23+
pass
24+
25+
26+
@pytest.fixture(scope="module")
27+
async def new_release_info(project, artifact, tag):
28+
release_tag = f'release-{get_random_name()}'
29+
release_info = {'artifact_id': artifact.id,
30+
'release_tag': release_tag,
31+
'tag_id': tag.id}
32+
33+
yield release_info
34+
35+
try:
36+
releases = await project.releases.get_all()
37+
for r in releases:
38+
if (r.artifact_ids == [release_info['artifact_id']] and
39+
r.release_tags == [release_info['release_tag']] and
40+
r.device_tags == [release_info['tag_id']]):
41+
42+
await project.releases.delete(r.id)
43+
break
44+
45+
except:
46+
pass

golioth/pytest/test_releases.py

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
import pytest
2+
from golioth import Release
3+
4+
pytestmark = pytest.mark.anyio
5+
6+
async def test_get_all(project, release):
7+
all_releases = await project.releases.get_all()
8+
for r in all_releases:
9+
if r.id == release.id:
10+
assert r.release_tags == release.release_tags
11+
assert r.device_tags == release.device_tags
12+
assert r.artifact_ids == release.artifact_ids
13+
assert r.rollout == release.rollout
14+
15+
return
16+
17+
assert False, "Release not found"
18+
19+
20+
async def test_get(project, release):
21+
found_release = await project.releases.get(release.id)
22+
23+
assert found_release.release_tags == release.release_tags
24+
assert found_release.device_tags == release.device_tags
25+
assert found_release.artifact_ids == release.artifact_ids
26+
assert found_release.rollout == release.rollout
27+
28+
29+
async def test_delete(project, release_to_delete):
30+
new_release = release_to_delete
31+
assert type(new_release) == Release
32+
33+
await project.releases.delete(new_release.id)
34+
35+
with pytest.raises(Exception):
36+
await project.releases.delete(new_release.id)
37+
38+
39+
async def test_create(project, new_release_info):
40+
new_release = await project.releases.create(artifact_ids = [new_release_info['artifact_id']],
41+
release_tags = [new_release_info['release_tag']],
42+
device_tags = [new_release_info['tag_id']],
43+
rollout = True)
44+
45+
assert new_release.artifact_ids == [new_release_info['artifact_id']]
46+
assert new_release.release_tags == [new_release_info['release_tag']]
47+
assert new_release.device_tags == [new_release_info['tag_id']]
48+
assert new_release.rollout == True
49+
50+
51+
async def test_rollout_set(project, release):
52+
found_release = await project.releases.get(release.id)
53+
54+
assert found_release.release_tags == release.release_tags
55+
assert found_release.device_tags == release.device_tags
56+
assert found_release.artifact_ids == release.artifact_ids
57+
assert found_release.rollout == release.rollout
58+
59+
await project.releases.rollout_set(release.id, not release.rollout)
60+
61+
found_release = await project.releases.get(release.id)
62+
63+
assert found_release.release_tags == release.release_tags
64+
assert found_release.device_tags == release.device_tags
65+
assert found_release.artifact_ids == release.artifact_ids
66+
assert found_release.rollout == (not release.rollout)

0 commit comments

Comments
 (0)