more tests
This commit is contained in:
parent
cfc2ccb89b
commit
7cba3615c8
@ -1,2 +1,7 @@
|
|||||||
[html]
|
[html]
|
||||||
directory = coverage_html_report
|
directory = coverage_html_report
|
||||||
|
|
||||||
|
[report]
|
||||||
|
show_missing = True
|
||||||
|
omit =
|
||||||
|
tasks*
|
||||||
|
1
api.py
1
api.py
@ -1,5 +1,6 @@
|
|||||||
import httpx
|
import httpx
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
from urllib.parse import urljoin
|
from urllib.parse import urljoin
|
||||||
|
|
||||||
|
|
||||||
|
12
api_tests.py
12
api_tests.py
@ -1,5 +1,7 @@
|
|||||||
import json
|
import json
|
||||||
import pytest
|
import pytest
|
||||||
|
import httpx
|
||||||
|
|
||||||
from api import API
|
from api import API
|
||||||
from pytest_httpx import HTTPXMock
|
from pytest_httpx import HTTPXMock
|
||||||
|
|
||||||
@ -11,6 +13,11 @@ def _load_fixture(name: str):
|
|||||||
with open(f"./tests/fixtures/{name}.json", "r") as f:
|
with open(f"./tests/fixtures/{name}.json", "r") as f:
|
||||||
return json.loads(f.read())
|
return json.loads(f.read())
|
||||||
|
|
||||||
|
def test_except(httpx_mock: HTTPXMock):
|
||||||
|
httpx_mock.add_response(method="GET", status_code=403)
|
||||||
|
with pytest.raises(httpx.HTTPStatusError):
|
||||||
|
API().get("boooger")
|
||||||
|
|
||||||
|
|
||||||
def test_get(httpx_mock: HTTPXMock):
|
def test_get(httpx_mock: HTTPXMock):
|
||||||
httpx_mock.add_response(method="GET", json=_load_fixture("user"))
|
httpx_mock.add_response(method="GET", json=_load_fixture("user"))
|
||||||
@ -35,3 +42,8 @@ def test_get_with_pagination(httpx_mock: HTTPXMock):
|
|||||||
httpx_mock.add_response(method="GET", json=_load_fixture("repos_1"))
|
httpx_mock.add_response(method="GET", json=_load_fixture("repos_1"))
|
||||||
repos = api.get_with_pagination("repos")
|
repos = api.get_with_pagination("repos")
|
||||||
assert len(repos) == 1
|
assert len(repos) == 1
|
||||||
|
|
||||||
|
# test exit on dict
|
||||||
|
httpx_mock.add_response(method="GET", json=_load_fixture("user"))
|
||||||
|
user = api.get_with_pagination("user")
|
||||||
|
assert user['login'] == 'tyrelsouza'
|
||||||
|
4
cli.py
4
cli.py
@ -10,9 +10,13 @@ def main():
|
|||||||
raise Exception("Please set GITHUB_TOKEN")
|
raise Exception("Please set GITHUB_TOKEN")
|
||||||
user_name = Prompt.ask("Username?")
|
user_name = Prompt.ask("Username?")
|
||||||
gh = GHub()
|
gh = GHub()
|
||||||
|
try:
|
||||||
success = gh.load_user(user_name=user_name)
|
success = gh.load_user(user_name=user_name)
|
||||||
if success:
|
if success:
|
||||||
print(gh.repos_table())
|
print(gh.repos_table())
|
||||||
|
except httpx.HTTPStatusError as e:
|
||||||
|
print(e)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
7
ghub.py
7
ghub.py
@ -9,18 +9,13 @@ class GHub:
|
|||||||
user = None
|
user = None
|
||||||
repos = None
|
repos = None
|
||||||
|
|
||||||
def load_user(self, user_name: str) -> bool:
|
def load_user(self, user_name: str)-> None:
|
||||||
self.user_name = user_name
|
self.user_name = user_name
|
||||||
self.api = API()
|
self.api = API()
|
||||||
try:
|
|
||||||
self.user = self.api.get(f"/users/{user_name}")
|
self.user = self.api.get(f"/users/{user_name}")
|
||||||
self.repos = self.api.get_with_pagination(
|
self.repos = self.api.get_with_pagination(
|
||||||
f"https://api.github.com/users/{user_name}/repos"
|
f"https://api.github.com/users/{user_name}/repos"
|
||||||
)
|
)
|
||||||
return True
|
|
||||||
except httpx.HTTPStatusError as e:
|
|
||||||
print(e)
|
|
||||||
return False
|
|
||||||
|
|
||||||
def repos_trimmed(self) -> list:
|
def repos_trimmed(self) -> list:
|
||||||
for repo in self.repos:
|
for repo in self.repos:
|
||||||
|
@ -1,25 +1,44 @@
|
|||||||
import json
|
import json
|
||||||
import pytest
|
import pytest
|
||||||
from ghub import GHub
|
from ghub import GHub
|
||||||
|
from pytest_httpx import HTTPXMock
|
||||||
|
|
||||||
|
def _load_fixture(name: str):
|
||||||
def _load_user():
|
with open(f"./tests/fixtures/{name}.json", "r") as f:
|
||||||
with open("./tests/fixtures/user.json", "r") as f:
|
|
||||||
return json.loads(f.read())
|
return json.loads(f.read())
|
||||||
|
|
||||||
|
|
||||||
def _load_repos():
|
|
||||||
with open("./tests/fixtures/repos_1.json", "r") as f:
|
|
||||||
return json.loads(f.read())
|
|
||||||
|
|
||||||
|
|
||||||
def _fake_tyrel() -> GHub:
|
def _fake_tyrel() -> GHub:
|
||||||
gh = GHub()
|
gh = GHub()
|
||||||
gh.user = _load_user()
|
gh.user = _load_fixture("user")
|
||||||
gh.repos = _load_repos()
|
gh.repos = _load_fixture("repos_1")
|
||||||
return gh
|
return gh
|
||||||
|
|
||||||
|
|
||||||
def test_load_repos():
|
def test_load_repos():
|
||||||
gh = _fake_tyrel()
|
gh = _fake_tyrel()
|
||||||
assert gh.repos[0]["git_url"] == "git://github.com/tyrelsouza/genealogy.git"
|
assert gh.repos[0]["git_url"] == "git://github.com/tyrelsouza/genealogy.git"
|
||||||
|
|
||||||
|
def test_repos_trimmed():
|
||||||
|
gh = _fake_tyrel()
|
||||||
|
repos = list(gh.repos_trimmed())
|
||||||
|
assert repos[0] == ['genealogy', 'None', '0','0','0', '0']
|
||||||
|
|
||||||
|
|
||||||
|
def test_get(httpx_mock: HTTPXMock):
|
||||||
|
httpx_mock.add_response(method="GET", json=_load_fixture("user"))
|
||||||
|
httpx_mock.add_response(method="GET", json=_load_fixture("repos_1"))
|
||||||
|
gh = GHub()
|
||||||
|
gh.load_user('tyrelsouza')
|
||||||
|
assert gh.user["login"] == "tyrelsouza"
|
||||||
|
assert len(gh.repos) == 1
|
||||||
|
|
||||||
|
def test_table():
|
||||||
|
gh = _fake_tyrel()
|
||||||
|
table = gh.repos_table()
|
||||||
|
assert table.row_count == 1
|
||||||
|
assert table.columns[0]._cells[0] == 'genealogy'
|
||||||
|
assert table.columns[1]._cells[0] == 'None'
|
||||||
|
assert table.columns[2]._cells[0] == '0'
|
||||||
|
assert table.columns[3]._cells[0] == '0'
|
||||||
|
assert table.columns[4]._cells[0] == '0'
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user