Skip to content

Commit

Permalink
feat: Add methods to invite and kick users to/from Group (#82)
Browse files Browse the repository at this point in the history
* feat: Add methods to invite and kick users to/from Group

- Add methods to invite and kick users to/from Group
- Improve type hints for some methods in Group
- Add test for new features
- Re-run the relevant integration tests

* test: Add test to increase the code coverage

- Add test to increase coverage
- Remove unreachable code
-  chore: Move code coverage config to pyproject.toml
- Update coverage command in coverage github action
- Update example dotenv file

* chore: Bump version number

* Update coverage on Readme

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
  • Loading branch information
isFakeAccount and github-actions[bot] authored Jul 14, 2024
1 parent 0469143 commit ab35f1c
Show file tree
Hide file tree
Showing 26 changed files with 1,870 additions and 347 deletions.
4 changes: 0 additions & 4 deletions .coveragerc

This file was deleted.

2 changes: 1 addition & 1 deletion .github/workflows/code_coverage.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ jobs:
- name: Build coverage file
run: |
poetry run pytest --cov-config=.coveragerc --junitxml=pytest.xml --cov=psnawp_api | tee pytest-coverage.txt
poetry run pytest --cov-config=pyproject.toml | tee pytest-coverage.txt
env:
NPSSO_CODE: ${{ secrets.NPSSO_CODE }}
USER_NAME: ${{ vars.USER_NAME }}
Expand Down
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,7 @@ Retrieve User Information, Trophies, Game and Store data from the PlayStation Ne
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/license/MIT)

<!-- Pytest Coverage Comment:Begin -->
<a href="https://github.com/isFakeAccount/psnawp/blob/main/README.md"><img alt="Coverage" src="https://img.shields.io/badge/Coverage-91%25-brightgreen.svg" /></a><details><summary>Coverage Report </summary><table><tr><th>File</th><th>Stmts</th><th>Miss</th><th>Cover</th><th>Missing</th></tr><tbody><tr><td colspan="5"><b>src/psnawp_api</b></td></tr><tr><td>&nbsp; &nbsp;<a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/__init__.py">__init__.py</a></td><td>2</td><td>0</td><td>100%</td><td>&nbsp;</td></tr><tr><td>&nbsp; &nbsp;<a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/psnawp.py">psnawp.py</a></td><td>38</td><td>2</td><td>2</td><td><a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/psnawp.py#L 95%"> 95%</a></td></tr><tr><td colspan="5"><b>src/psnawp_api/core</b></td></tr><tr><td>&nbsp; &nbsp;<a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/core/__init__.py">__init__.py</a></td><td>4</td><td>0</td><td>100%</td><td>&nbsp;</td></tr><tr><td>&nbsp; &nbsp;<a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/core/authenticator.py">authenticator.py</a></td><td>135</td><td>20</td><td>20</td><td><a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/core/authenticator.py#L 85%"> 85%</a></td></tr><tr><td>&nbsp; &nbsp;<a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/core/psnawp_exceptions.py">psnawp_exceptions.py</a></td><td>11</td><td>0</td><td>100%</td><td>&nbsp;</td></tr><tr><td>&nbsp; &nbsp;<a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/core/request_builder.py">request_builder.py</a></td><td>74</td><td>8</td><td>8</td><td><a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/core/request_builder.py#L 89%"> 89%</a></td></tr><tr><td colspan="5"><b>src/psnawp_api/models</b></td></tr><tr><td>&nbsp; &nbsp;<a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/__init__.py">__init__.py</a></td><td>7</td><td>0</td><td>100%</td><td>&nbsp;</td></tr><tr><td>&nbsp; &nbsp;<a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/client.py">client.py</a></td><td>76</td><td>2</td><td>2</td><td><a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/client.py#L 97%"> 97%</a></td></tr><tr><td>&nbsp; &nbsp;<a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/game_title.py">game_title.py</a></td><td>26</td><td>2</td><td>2</td><td><a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/game_title.py#L 92%"> 92%</a></td></tr><tr><td>&nbsp; &nbsp;<a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/group.py">group.py</a></td><td>53</td><td>8</td><td>8</td><td><a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/group.py#L 85%"> 85%</a></td></tr><tr><td>&nbsp; &nbsp;<a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/search.py">search.py</a></td><td>150</td><td>42</td><td>42</td><td><a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/search.py#L 72%"> 72%</a></td></tr><tr><td>&nbsp; &nbsp;<a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/title_stats.py">title_stats.py</a></td><td>75</td><td>3</td><td>3</td><td><a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/title_stats.py#L 96%"> 96%</a></td></tr><tr><td>&nbsp; &nbsp;<a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/user.py">user.py</a></td><td>83</td><td>2</td><td>2</td><td><a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/user.py#L 98%"> 98%</a></td></tr><tr><td colspan="5"><b>src/psnawp_api/models/listing</b></td></tr><tr><td>&nbsp; &nbsp;<a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/listing/__init__.py">__init__.py</a></td><td>2</td><td>0</td><td>100%</td><td>&nbsp;</td></tr><tr><td>&nbsp; &nbsp;<a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/listing/pagination_iterator.py">pagination_iterator.py</a></td><td>56</td><td>4</td><td>4</td><td><a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/listing/pagination_iterator.py#L 93%"> 93%</a></td></tr><tr><td colspan="5"><b>src/psnawp_api/models/trophies</b></td></tr><tr><td>&nbsp; &nbsp;<a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/trophies/__init__.py">__init__.py</a></td><td>6</td><td>0</td><td>100%</td><td>&nbsp;</td></tr><tr><td>&nbsp; &nbsp;<a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/trophies/trophy.py">trophy.py</a></td><td>130</td><td>9</td><td>9</td><td><a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/trophies/trophy.py#L 93%"> 93%</a></td></tr><tr><td>&nbsp; &nbsp;<a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/trophies/trophy_constants.py">trophy_constants.py</a></td><td>30</td><td>0</td><td>100%</td><td>&nbsp;</td></tr><tr><td>&nbsp; &nbsp;<a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/trophies/trophy_group.py">trophy_group.py</a></td><td>92</td><td>3</td><td>3</td><td><a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/trophies/trophy_group.py#L 97%"> 97%</a></td></tr><tr><td>&nbsp; &nbsp;<a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/trophies/trophy_summary.py">trophy_summary.py</a></td><td>27</td><td>1</td><td>1</td><td><a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/trophies/trophy_summary.py#L 96%"> 96%</a></td></tr><tr><td>&nbsp; &nbsp;<a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/trophies/trophy_titles.py">trophy_titles.py</a></td><td>88</td><td>2</td><td>2</td><td><a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/trophies/trophy_titles.py#L 98%"> 98%</a></td></tr><tr><td>&nbsp; &nbsp;<a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/models/trophies/utility_functions.py">utility_functions.py</a></td><td>7</td><td>0</td><td>100%</td><td>&nbsp;</td></tr><tr><td colspan="5"><b>src/psnawp_api/utils</b></td></tr><tr><td>&nbsp; &nbsp;<a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/utils/__init__.py">__init__.py</a></td><td>3</td><td>0</td><td>100%</td><td>&nbsp;</td></tr><tr><td>&nbsp; &nbsp;<a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/utils/endpoints.py">endpoints.py</a></td><td>2</td><td>0</td><td>100%</td><td>&nbsp;</td></tr><tr><td>&nbsp; &nbsp;<a href="https://github.com/isFakeAccount/psnawp/blob/main/src/psnawp_api/utils/misc.py">misc.py</a></td><td>5</td><td>0</td><td>100%</td><td>&nbsp;</td></tr><tr><td><b>TOTAL</b></td><td><b>1182</b></td><td><b>108</b></td><td><b>91%</b></td><td>&nbsp;</td></tr></tbody></table></details>
<!-- Pytest Coverage Comment:End -->
\n<!-- Pytest Coverage Comment:End -->

## How to install

Expand Down
3 changes: 3 additions & 0 deletions example.env
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
NPSSO_CODE=<64 character npsso code>
USER_NAME=<Your-username>
FRIEND_USER_NAME=<Your-friend-username>
BLOCKED_USER_NAME=<Username-that-has-blocked-you>
18 changes: 14 additions & 4 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "PSNAWP"
version = "2.0.0"
version = "2.1.0"
description = "Python API Wrapper for PlayStation Network API"
authors = ["isFakeAccount <trevorphillips@gmx.us>"]
license = "MIT"
Expand All @@ -19,7 +19,7 @@ classifiers = [
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Software Development :: Libraries :: Python Modules"
"Topic :: Software Development :: Libraries :: Python Modules",
]
packages = [{ include = "psnawp_api", from = "src" }]

Expand All @@ -42,7 +42,7 @@ pre-commit = "^3.7.1"
[tool.poetry.group.docs.dependencies]
sphinx = "^7.3.7"
furo = "^2024.04.27"
myst-parser = {extras = ["linkify"], version = "^3.0.1"}
myst-parser = { extras = ["linkify"], version = "^3.0.1" }

[tool.poetry.group.tests.dependencies]
pytest = "^8.2.2"
Expand All @@ -57,9 +57,19 @@ requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

[tool.pytest.ini_options]
addopts = ["--cov=psnawp_api"]
addopts = "--cov=psnawp_api --cov-report html --junitxml=pytest.xml"
testpaths = ["tests"]

[tool.coverage.report]
exclude_also = [
"if TYPE_CHECKING:",
"@overload",
"raise NotImplementedError",
"__repr__",
"__str__",
]


[tool.mypy]
strict = true
check_untyped_defs = true
Expand Down
54 changes: 13 additions & 41 deletions pytest-coverage.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,54 +4,26 @@ rootdir: /home/runner/work/psnawp/psnawp
configfile: pyproject.toml
testpaths: tests
plugins: cov-5.0.0, vcr-1.0.2
collected 75 items
collected 81 items

tests/integration_tests/integration_test_psnawp_api/core/test_authenticator.py . [ 1%]
.. [ 4%]
tests/integration_tests/integration_test_psnawp_api/models/test_client.py . [ 5%]
................. [ 28%]
tests/integration_tests/integration_test_psnawp_api/models/test_game_title.py . [ 29%]
........ [ 40%]
tests/integration_tests/integration_test_psnawp_api/models/test_group.py . [ 41%]
........ [ 52%]
tests/integration_tests/integration_test_psnawp_api/models/test_search.py . [ 53%]
. [ 54%]
tests/integration_tests/integration_test_psnawp_api/models/test_user.py . [ 56%]
.. [ 3%]
tests/integration_tests/integration_test_psnawp_api/models/test_client.py . [ 4%]
................. [ 25%]
tests/integration_tests/integration_test_psnawp_api/models/test_game_title.py . [ 27%]
........ [ 37%]
tests/integration_tests/integration_test_psnawp_api/models/test_group.py . [ 38%]
............. [ 54%]
tests/integration_tests/integration_test_psnawp_api/models/test_search.py . [ 55%]
.. [ 58%]
tests/integration_tests/integration_test_psnawp_api/models/test_user.py . [ 59%]
............................... [ 97%]
tests/integration_tests/integration_test_psnawp_api/utils/test_utils_misc.py . [ 98%]
. [100%]

-------- generated xml file: /home/runner/work/psnawp/psnawp/pytest.xml --------

---------- coverage: platform linux, python 3.10.12-final-0 ----------
Name Stmts Miss Cover
--------------------------------------------------------------------------
src/psnawp_api/__init__.py 2 0 100%
src/psnawp_api/core/__init__.py 4 0 100%
src/psnawp_api/core/authenticator.py 135 20 85%
src/psnawp_api/core/psnawp_exceptions.py 11 0 100%
src/psnawp_api/core/request_builder.py 74 8 89%
src/psnawp_api/models/__init__.py 7 0 100%
src/psnawp_api/models/client.py 76 2 97%
src/psnawp_api/models/game_title.py 26 2 92%
src/psnawp_api/models/group.py 53 8 85%
src/psnawp_api/models/listing/__init__.py 2 0 100%
src/psnawp_api/models/listing/pagination_iterator.py 56 4 93%
src/psnawp_api/models/search.py 150 42 72%
src/psnawp_api/models/title_stats.py 75 3 96%
src/psnawp_api/models/trophies/__init__.py 6 0 100%
src/psnawp_api/models/trophies/trophy.py 130 9 93%
src/psnawp_api/models/trophies/trophy_constants.py 30 0 100%
src/psnawp_api/models/trophies/trophy_group.py 92 3 97%
src/psnawp_api/models/trophies/trophy_summary.py 27 1 96%
src/psnawp_api/models/trophies/trophy_titles.py 88 2 98%
src/psnawp_api/models/trophies/utility_functions.py 7 0 100%
src/psnawp_api/models/user.py 83 2 98%
src/psnawp_api/psnawp.py 38 2 95%
src/psnawp_api/utils/__init__.py 3 0 100%
src/psnawp_api/utils/endpoints.py 2 0 100%
src/psnawp_api/utils/misc.py 5 0 100%
--------------------------------------------------------------------------
TOTAL 1182 108 91%
Coverage HTML written to dir htmlcov

============================== 75 passed in 4.31s ==============================
============================== 81 passed in 4.77s ==============================
Loading

0 comments on commit ab35f1c

Please sign in to comment.