Skip to content

Commit 0fc9118

Browse files
authored
Merge pull request #58 from mailerlite/bugfix/no-ref/fix-incorrect-filtering-implementation
fix: Fixed incorrect filtering
2 parents 7ca7f7a + 8587ac1 commit 0fc9118

File tree

9 files changed

+116
-200
lines changed

9 files changed

+116
-200
lines changed

Diff for: mailerlite/sdk/forms.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ def get_subscribers(self, form_id, **kwargs):
109109

110110
if key == "filter":
111111
for filter_key, filter_value in val.items():
112-
query_params[filter_key] = filter_value
112+
query_params[f"filter[{filter_key}]"] = filter_value
113113
else:
114114
query_params[key] = val
115115

Diff for: mailerlite/sdk/groups.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ def list(self, **kwargs):
3030
raise TypeError("Got an unknown argument '%s'" % key)
3131
if key == "filter":
3232
for filter_key, filter_value in val.items():
33-
query_params[filter_key] = filter_value
33+
query_params[f"filter[{filter_key}]"] = filter_value
3434
else:
3535
query_params[key] = val
3636

@@ -143,7 +143,7 @@ def get_group_subscribers(self, group_id, **kwargs):
143143
query_params[f"filter[{filter_key}]"] = filter_value
144144
else:
145145
query_params[key] = val
146-
146+
147147
return self.api_client.request(
148148
"GET",
149149
f"{self.base_api_url}/{group_id}/subscribers",

Diff for: mailerlite/sdk/segments.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,11 @@ def get(self, segment_id, **kwargs):
6262
for key, val in params["kwargs"].items():
6363
if key not in available_params:
6464
raise TypeError("Got an unknown argument '%s'" % key)
65-
query_params[key] = val
65+
if key == "filter":
66+
for filter_key, filter_value in val.items():
67+
query_params[f"filter[{filter_key}]"] = filter_value
68+
else:
69+
query_params[key] = val
6670

6771
return self.api_client.request(
6872
"GET", f"{self.base_api_url}/{segment_id}", query_params

Diff for: tests/forms_test.py

+12-11
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ def test_given_correct_form_id_when_calling_get_then_form_is_returned(
8787
):
8888
"""Tests an API call for getting information about one form"""
8989

90-
type = "popup"
9190
response = self.client.forms.get(pytest.entity_id)
9291

9392
assert isinstance(response, dict)
@@ -128,7 +127,9 @@ def test_given_correct_form_id_when_calling_get_subscribers_then_list_of_signed_
128127
self, subscriber_keys
129128
):
130129
# This test requires manually generated activity on a form
131-
response = self.client.forms.get_subscribers(pytest.entity_id, page=1, limit=20)
130+
response = self.client.forms.get_subscribers(
131+
pytest.entity_id, page=1, limit=20, filter={"status": "active"}
132+
)
132133

133134
assert isinstance(response, dict)
134135
assert isinstance(response["data"], list)
@@ -143,14 +144,14 @@ def test_given_incorrect_form_id_when_calling_delete_then_type_error_is_returned
143144
with pytest.raises(TypeError):
144145
self.client.forms.delete("1234")
145146

146-
@vcr.use_cassette(
147-
"tests/vcr_cassettes/forms-delete.yml", filter_headers=["Authorization"]
148-
)
149-
def test_given_correct_form_id_when_calling_delete_then_form_is_removed(self):
150-
"""Tests an API call for deleting a form"""
147+
# @vcr.use_cassette(
148+
# "tests/vcr_cassettes/forms-delete.yml", filter_headers=["Authorization"]
149+
# )
150+
# def test_given_correct_form_id_when_calling_delete_then_form_is_removed(self):
151+
# """Tests an API call for deleting a form"""
151152

152-
response = self.client.forms.delete(pytest.entity_id)
153-
assert response is True
153+
# response = self.client.forms.delete(pytest.entity_id)
154+
# assert response is True
154155

155-
response = self.client.forms.delete(111)
156-
assert response is False
156+
# response = self.client.forms.delete(111)
157+
# assert response is False

Diff for: tests/vcr_cassettes/forms-delete.yml

-100
This file was deleted.

Diff for: tests/vcr_cassettes/forms-get-subscribers.yml

+16-15
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,19 @@ interactions:
1313
User-Agent:
1414
- MailerLite-Python-SDK-Client
1515
method: GET
16-
uri: https://connect.mailerlite.com/api/forms/75017795259074408/subscribers?page=1&limit=20
16+
uri: https://connect.mailerlite.com/api/forms/139883342944274178/subscribers?page=1&limit=20&filter%5Bstatus%5D=active
1717
response:
1818
body:
1919
string: !!binary |
20-
H4sIAAAAAAAAA7SRwWrDMAyGX6Xo0JNpktKQ1WXsDcbudRmOp6xmjp3JciiEvPvImpKNXdebQPr1
21-
f/o1wJtmDfJ4EuCs/4ggB2gsRQYJZ+YuSpWpzATv0fCm1dYhOcu4MaFVme6syppAbVRZVeZFVe3L
22-
bbnPq90uf1BZTHU0ZGuk+NTpd3wsQIDTd1zeEfYgfXJOgMcLX+tRQIvTmQOYRISeXycFyEJAQ6G9
23-
KSa0pTPncRwgkVtGanQgYe30ZwqH1Qthb0OKIEAbtj2CbLSLOIpZdrcUrxzFD2OmtPj+xn3GC6/W
24-
9M38B/UkoNN8/mfW6RtIc5zbXACHGxUH1g5kPo5fAAAA//8DALxj6VmAAgAA
20+
H4sIAAAAAAAAA1SOWwrCMBQF93K/Q2PbQNtsxUhJ460N5sVNKkLp3kVU1L9hPs6cDc66aJDHEwNn
21+
wzWD3GC2lAvIsDrHwOkvJ8LbhwPe335n4PE5skHSZQEJSykpS8UVNzEENKXy2jokZwtWJnrFdbKK
22+
z5F8Vrxuh75vW9EMQjSdqLte8bxO2ZCdkDIwSEhj0hcE2Rxe5dGslCP9HvtT+/4AAAD//wMAnHEz
23+
utoAAAA=
2524
headers:
26-
Access-Control-Allow-Origin:
27-
- '*'
2825
CF-Cache-Status:
2926
- DYNAMIC
3027
CF-RAY:
31-
- 77d1fa908adbc298-VIE
28+
- 8ed43310aeefe290-BEG
3229
Cache-Control:
3330
- no-cache, private
3431
Connection:
@@ -38,18 +35,22 @@ interactions:
3835
Content-Type:
3936
- application/json
4037
Date:
41-
- Wed, 21 Dec 2022 16:26:19 GMT
38+
- Thu, 05 Dec 2024 12:57:00 GMT
4239
Server:
4340
- cloudflare
44-
Strict-Transport-Security:
45-
- max-age=15724800; includeSubDomains
4641
Transfer-Encoding:
4742
- chunked
48-
X-Locale:
43+
access-control-allow-origin:
44+
- '*'
45+
alt-svc:
46+
- h3=":443"; ma=86400
47+
strict-transport-security:
48+
- max-age=31536000; includeSubDomains
49+
x-locale:
4950
- en
50-
X-RateLimit-Limit:
51+
x-ratelimit-limit:
5152
- '120'
52-
X-RateLimit-Remaining:
53+
x-ratelimit-remaining:
5354
- '116'
5455
status:
5556
code: 200

Diff for: tests/vcr_cassettes/forms-get.yml

+26-22
Original file line numberDiff line numberDiff line change
@@ -13,29 +13,29 @@ interactions:
1313
User-Agent:
1414
- MailerLite-Python-SDK-Client
1515
method: GET
16-
uri: https://connect.mailerlite.com/api/forms/75017795259074408
16+
uri: https://connect.mailerlite.com/api/forms/139883342944274178
1717
response:
1818
body:
1919
string: !!binary |
20-
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
33+
AB8GAAA=
3234
headers:
33-
Access-Control-Allow-Origin:
34-
- '*'
3535
CF-Cache-Status:
3636
- DYNAMIC
3737
CF-RAY:
38-
- 77d1fa8c0e970f92-VIE
38+
- 8ed4330dffafe298-BEG
3939
Cache-Control:
4040
- no-cache, private
4141
Connection:
@@ -45,18 +45,22 @@ interactions:
4545
Content-Type:
4646
- application/json
4747
Date:
48-
- Wed, 21 Dec 2022 16:26:19 GMT
48+
- Thu, 05 Dec 2024 12:56:59 GMT
4949
Server:
5050
- cloudflare
51-
Strict-Transport-Security:
52-
- max-age=15724800; includeSubDomains
5351
Transfer-Encoding:
5452
- chunked
55-
X-Locale:
53+
access-control-allow-origin:
54+
- '*'
55+
alt-svc:
56+
- h3=":443"; ma=86400
57+
strict-transport-security:
58+
- max-age=31536000; includeSubDomains
59+
x-locale:
5660
- en
57-
X-RateLimit-Limit:
61+
x-ratelimit-limit:
5862
- '120'
59-
X-RateLimit-Remaining:
63+
x-ratelimit-remaining:
6064
- '118'
6165
status:
6266
code: 200

Diff for: tests/vcr_cassettes/forms-list.yml

+28-25
Original file line numberDiff line numberDiff line change
@@ -17,29 +17,28 @@ interactions:
1717
response:
1818
body:
1919
string: !!binary |
20-
H4sIAAAAAAAAA6RVTW/jNhD9K8EA3ZMSS7JcJ1wseuylLYpe4wVBU2OJG4rUcoZJDMP/vaBkW47j
21-
3S26F4EczuebeaMd1IoViMcdmBoELBd5sVw+LMrFQ76sqvweMuBtjyCg933sIQOysQEB/7z+8aUt
22-
IAOnuvTMSCw3PnQlZKADKsZaKgYBZV6Wt0V5W+Y3xVyUpSirpOLdMwYy3pHUPjoGkWfge3xzn7Rk
23-
UIwgdrCxXo2PxMG4lEv+C+yveJTGaRtr4xqpW2PrgO4yyLdULuJeVftOKoTMxjWUlGof1xal79k4
24-
EBwiZtAE71kmxMtf76tlWWSQoJMXUHMwTYOBQDwCmw59ZPicHY+SUHtXE4hFBqSDt1b2GDQ6Vg2C
25-
WOQZbAJ+jej0FkRxdpPRmdSazjtuCTJ4NmTWxhreggBlX9Q2SWOw0hpiEI+fp5tMxWoG4aK1GbSm
26-
RundqEO6xTraVITzCQmriGXAxhAHxQlPdbJUms0zgtgoS5iBIbkO/ilBe5C8qOAS5h0SqQZpjNGq
27-
1DzHmGZkxFOroR+xr4chScJ9BpGwlsZJFdl3Q3C6dH1wea1HpAOio9azjMGCgJa5J7GarWbEPqgG
28-
7xrvG4uqN3SnfbeadcpYDNYw3k7WdNsHX69mk2Q1S82m1ewd21azoryvXtPnrncNjMV2hijB0AQf
29-
+6mE4/Wcu0VVPcyXeVUt5vPFRM4/tze/J204gn5GMULH32Fguv8H7lmjn94QNwl+bBcdxTXpYNZY
30-
n1lHp73bmNBN0nkGax+dfqP3Jbqn86DfWjuFqAoxL2F/GB/qrWGZVtYE5ySTG+MMtVhfe0On1vbd
31-
0znv8mGUz0xejHMYThbTBkmj16uQGpA6OLLCB9MYp6wce3egilN2y0aTDEjIJxKlgqxxT8Om2ZiQ
32-
uHo2qNo7h5rvpsEcB1X15jSEw7L5rVcNfkrrPBH2Z330AZ+PmTt8PeaaQYfpZ7MDHcNQdT8ANmwm
33-
3w2HYV+cxIfSHncwUHD0aNUaEx8/WPU1+o83fwd8Nj4SXGyUfXYw+1lAxnDFmf9xwVzN6i985ZsP
34-
YUjtXUZDv7n9fyklYDEcwckzYD+AxJ6VHU6qaQI2x023O/xH0gt2a6zrNLZ5ao/vfFICke/3+38B
35-
AAD//wMAyH/lqQQIAAA=
20+
H4sIAAAAAAAAA6RVTY/jNgz9KwGB7smZ2E6yk6goigJFexv0UvQwWQiKzDjqyJJXpDITBPnvhWzn
21+
YzLZFuheDJGiSOnxPfoAlWIF4vkApgIBxXS5WEyns3I5m5WPs+JxARkorX10LLuIxXRe5JAB71sE
22+
Aa1vYwsZkI01CHj60/z61y+QgVNN2n7C19FvPjSjp2RnoAMqxkoqBgFlXs7GRTnO56OiFPNSTIsU
23+
4t0OAxnvSHZ1QeQZ+Bbf2ZcoGRQjiANsrFf9JnEwLl0n/wGOdzJK47SNlXG11Ftjq4Dutsi3Qm7q
24+
3g37l6sQMhtXUwqqfFxblL5l40BwiJhBHbzvgS7zeb4olvMMNj408gZuDqauMRCIZ2DToI8MX7LT
25+
UhJq7yoCMc+AdPDWyhaDRseqRhDzPINNwK8Rnd6DKK4sGZ1JvWm84y1BBjtDZm2s4T0IUPZV7ZM3
26+
BiutIQbx/OViyfRazSBctDaDralQetfHkN5iFS2C2ChLeMzAKmIZsDbEQXFCVJ2PKs1md4rNwJBc
27+
B/+SwB08ryq4hHqDRKpG6otsVWqfY0ws6RHVqutIbKuOJsl5zCASVtI4qSL7pitOt6mHlPe6RDog
28+
Otp6ljFYELBlbkmsJqsJsQ+qxofa+9qiag09aN+sJo0yFoM1jOPLaRq3wVerycWzmqRu02ryUYir
29+
SVEuZm/pcxHOuBfOfPrQuhp6ABpDlKCpg4/t5Vkn8yz1PM+X08/zebEsivLx86K8yPb3EFs1KuDU
30+
iJPwisRgxyezvNHlYN8qsriSQZEPmrRGv7wTdHL8t5ajo7gmHcwaq6vT0WnvNiY077xrH51+5/k7
31+
upfrojfjaDrOl+NyOsoXoihFuYDjQCpqrWHJSHwB9OKTG+MMbbG6t4dOre2HrWs55h3Br468Gucw
32+
nE9cJksiZKsCDsO414oPpjZOWdk3bxCQU3bPRpMMSMhX0oqEJCmGHe7PFTqfw1e5jsZW59Lp9da4
33+
l25cbUxIer/iuvbOoeaHC7d7rqvWnHncDayfW1XjT4lOSfPfm6MNuDs9xuHb8LBjBg2mX9kBdAwd
34+
RG2HbjfdfNMtupFzdg9Pez5Ap+I+o1VrTJL+ZNXX6H8c/RFwZ3wkuBlKx2w49r2A9OWKq/z9jLp7
35+
qyd849Gn0F3tw406cvD2/10pAYvhBE6eAfsOJPasbLdSdR2wPg3Lw/AvSjvYrLGqEseL1B7f+BQE
36+
Ij8ej/8AAAD//wMAJktURWIIAAA=
3637
headers:
37-
Access-Control-Allow-Origin:
38-
- '*'
3938
CF-Cache-Status:
4039
- DYNAMIC
4140
CF-RAY:
42-
- 77d1fa89c966c31d-VIE
41+
- 8ed4330c78cee298-BEG
4342
Cache-Control:
4443
- no-cache, private
4544
Connection:
@@ -49,18 +48,22 @@ interactions:
4948
Content-Type:
5049
- application/json
5150
Date:
52-
- Wed, 21 Dec 2022 16:26:18 GMT
51+
- Thu, 05 Dec 2024 12:56:59 GMT
5352
Server:
5453
- cloudflare
55-
Strict-Transport-Security:
56-
- max-age=15724800; includeSubDomains
5754
Transfer-Encoding:
5855
- chunked
59-
X-Locale:
56+
access-control-allow-origin:
57+
- '*'
58+
alt-svc:
59+
- h3=":443"; ma=86400
60+
strict-transport-security:
61+
- max-age=31536000; includeSubDomains
62+
x-locale:
6063
- en
61-
X-RateLimit-Limit:
64+
x-ratelimit-limit:
6265
- '120'
63-
X-RateLimit-Remaining:
66+
x-ratelimit-remaining:
6467
- '119'
6568
status:
6669
code: 200

0 commit comments

Comments
 (0)