Skip to content

Commit c601f0f

Browse files
authored
fix: update seller information to new format (#152)
1 parent 31c042b commit c601f0f

File tree

5 files changed

+28
-11
lines changed

5 files changed

+28
-11
lines changed

src/marktplaats/api_types.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,3 +253,9 @@ class MetaTags(TypedDict):
253253
metaTitle: str
254254
metaDescription: str
255255
pageTitleH1: str
256+
257+
258+
class Review(TypedDict):
259+
numberOfReviews: int
260+
averageScore: int
261+
reviewSystem: str

src/marktplaats/models/listing_seller.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,16 @@
1010

1111

1212
if TYPE_CHECKING:
13-
from marktplaats.api_types import SellerInformation
13+
from marktplaats.api_types import Review, SellerInformation
1414

1515

1616
@dataclass
1717
class Seller:
1818
id: int
1919
name: str
2020
is_verified: bool
21-
average_score: float
22-
number_of_reviews: int
21+
average_score: float | None
22+
number_of_reviews: int | None
2323
bank_account: bool
2424
identification: bool
2525
phone_number: bool
@@ -47,12 +47,15 @@ def get_seller(self) -> Seller:
4747
body = request.text
4848
body_json = json.loads(body)
4949

50+
review: Review | None = (
51+
body_json["reviews"][0] if body_json["reviews"] else None
52+
)
5053
return Seller(
5154
self.id,
5255
self.name,
5356
self.is_verified,
54-
body_json["averageScore"],
55-
body_json["numberOfReviews"],
57+
review["averageScore"] if review else None,
58+
review["numberOfReviews"] if review else None,
5659
body_json["bankAccount"],
5760
body_json["identification"],
5861
body_json["phoneNumber"],

tests/mock/seller_response.json

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,14 @@
55
"paymentMethod": {
66
"name": "ideal"
77
},
8-
"numberOfReviews": 26,
9-
"averageScore": 5,
108
"smbVerified": false,
11-
"profilePictures": {}
9+
"profilePictures": {},
10+
"salesRepresentatives": [],
11+
"reviews": [
12+
{
13+
"numberOfReviews": 175,
14+
"averageScore": 4.8,
15+
"reviewSystem": "INTERNAL_REVIEWS"
16+
}
17+
]
1218
}

tests/test_live.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,9 @@ def _validate_response(search: SearchQuery, check_time: bool = False) -> None:
6161
assert isinstance(seller.id, int)
6262
assert isinstance(seller.name, str)
6363
assert isinstance(seller.is_verified, bool)
64-
assert seller.average_score is not None
65-
assert isinstance(seller.number_of_reviews, int)
64+
if seller.average_score is not None:
65+
assert isinstance(seller.average_score, (float, int))
66+
assert isinstance(seller.number_of_reviews, int)
6667
assert isinstance(seller.bank_account, bool)
6768
assert isinstance(seller.identification, bool)
6869
assert isinstance(seller.phone_number, bool)

tests/test_query.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,8 @@ def test_request_1() -> None:
133133

134134
assert not seller.is_verified # should still be false
135135
assert seller.id == 7405065 # should still be the same
136-
assert seller.average_score == 5
136+
assert seller.average_score == 4.8 # noqa: RUF069
137+
assert seller.number_of_reviews == 175
137138
assert seller.bank_account
138139
assert not seller.identification
139140
assert seller.phone_number

0 commit comments

Comments
 (0)