Skip to content

Commit

Permalink
Add: Add tests for async GitHub releases API
Browse files Browse the repository at this point in the history
  • Loading branch information
bjoernricks committed Oct 25, 2022
1 parent 5fae080 commit e1b055a
Showing 1 changed file with 112 additions and 1 deletion.
113 changes: 112 additions & 1 deletion tests/github/api/test_release.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,123 @@
import httpx

from pontos.github.api import GitHubRESTApi
from pontos.github.api.release import GitHubAsyncRESTReleases
from pontos.helper import DEFAULT_TIMEOUT
from tests.github.api import default_request
from tests.github.api import (
GitHubAsyncRESTTestCase,
create_response,
default_request,
)

here = Path(__file__).parent


class GitHubAsyncRESTReleasesTestCase(GitHubAsyncRESTTestCase):
api_cls = GitHubAsyncRESTReleases

async def test_exists(self):
response = create_response(is_success=True)
self.client.get.return_value = response

self.assertTrue(await self.api.exists("foo/bar", "v1.2.3"))

self.client.get.assert_awaited_once_with(
"/repos/foo/bar/releases/tags/v1.2.3"
)

async def test_not_exists(self):
response = create_response(is_success=False)
self.client.get.return_value = response

self.assertFalse(await self.api.exists("foo/bar", "v1.2.3"))

self.client.get.assert_awaited_once_with(
"/repos/foo/bar/releases/tags/v1.2.3"
)

async def test_create(self):
response = create_response()
self.client.post.return_value = response

await self.api.create(
"foo/bar",
"v1.2.3",
body="foo",
name="baz",
target_commitish="stable",
)

self.client.post.assert_awaited_once_with(
"/repos/foo/bar/releases",
data={
"tag_name": "v1.2.3",
"draft": False,
"prerelease": False,
"name": "baz",
"body": "foo",
"target_commitish": "stable",
},
)

async def test_create_failure(self):
response = create_response()
self.client.post.side_effect = httpx.HTTPStatusError(
"404", request=MagicMock(), response=response
)

with self.assertRaises(httpx.HTTPStatusError):
await self.api.create(
"foo/bar",
"v1.2.3",
body="foo",
name="baz",
target_commitish="stable",
)

self.client.post.assert_awaited_once_with(
"/repos/foo/bar/releases",
data={
"tag_name": "v1.2.3",
"draft": False,
"prerelease": False,
"name": "baz",
"body": "foo",
"target_commitish": "stable",
},
)

async def test_get(self):
response = create_response()
response.json.return_value = {"id": 1}
self.client.get.return_value = response

release = await self.api.get(
"foo/bar",
"v1.2.3",
)

self.client.get.assert_awaited_once_with(
"/repos/foo/bar/releases/tags/v1.2.3",
)
self.assertEqual(release, {"id": 1})

async def test_get_failure(self):
response = create_response()
self.client.get.side_effect = httpx.HTTPStatusError(
"404", request=MagicMock(), response=response
)

with self.assertRaises(httpx.HTTPStatusError):
await self.api.get(
"foo/bar",
"v1.2.3",
)

self.client.get.assert_awaited_once_with(
"/repos/foo/bar/releases/tags/v1.2.3",
)


class GitHubReleaseTestCase(unittest.TestCase):
@patch("pontos.github.api.api.httpx.post")
def test_create_tag_reference(self, requests_mock: MagicMock):
Expand Down

0 comments on commit e1b055a

Please sign in to comment.