Skip to content

Commit b419581

Browse files
committed
Add simple unit test
1 parent b6c9ef5 commit b419581

2 files changed

Lines changed: 62 additions & 0 deletions

File tree

.github/workflows/check.yaml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,26 @@ jobs:
2929

3030
- name: Run Black
3131
uses: psf/black@stable
32+
33+
pytest:
34+
name: Run pytest
35+
runs-on: ubuntu-latest
36+
steps:
37+
- uses: actions/checkout@v4
38+
39+
- name: Install Python
40+
uses: actions/setup-python@v5
41+
42+
- name: Install dependencies
43+
run: |
44+
python -m pip install --upgrade pip
45+
pip install -r requirements.txt
46+
47+
- name: Install openpaygo
48+
run: pip install .
49+
50+
- name: Install pytest
51+
run: pip install pytest
52+
53+
- name: Run pytest
54+
run: pytest

test/test_encoder.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import json
2+
3+
import pytest
4+
5+
from openpaygo import OpenPAYGOTokenEncoder, TokenType
6+
7+
with open("test/test_tokens.jsonl") as f:
8+
sample_data = [json.loads(line) for line in f]
9+
10+
11+
@pytest.fixture
12+
def encoder():
13+
return OpenPAYGOTokenEncoder()
14+
15+
16+
@pytest.fixture
17+
def token_type_lookup():
18+
return {
19+
"ADD_TIME": TokenType.ADD_TIME,
20+
"SET_TIME": TokenType.SET_TIME,
21+
"DISABLE_PAYG": TokenType.DISABLE_PAYG,
22+
"COUNTER_SYNC": TokenType.COUNTER_SYNC,
23+
}
24+
25+
26+
@pytest.mark.parametrize("data", sample_data)
27+
def test_generate_token(encoder, token_type_lookup, data):
28+
new_count, final_token = encoder.generate_token(
29+
secret_key=data["key"],
30+
count=data["count"],
31+
value=data["value_raw"],
32+
token_type=token_type_lookup[data["token_type"]],
33+
starting_code=data["starting_code"],
34+
restricted_digit_set=data["restricted_digit_set"],
35+
extended_token=data["extended_token"],
36+
)
37+
38+
assert new_count == data["new_count"]
39+
assert final_token == data["token"]

0 commit comments

Comments
 (0)