aboutsummaryrefslogtreecommitdiff
path: root/tests/models/legacy/test_offerwall_parse_response.py
diff options
context:
space:
mode:
authorMax Nanis2026-03-06 16:49:46 -0500
committerMax Nanis2026-03-06 16:49:46 -0500
commit91d040211a4ed6e4157896256a762d3854777b5e (patch)
treecd95922ea4257dc8d3f4e4cbe8534474709a20dc /tests/models/legacy/test_offerwall_parse_response.py
downloadgeneralresearch-91d040211a4ed6e4157896256a762d3854777b5e.tar.gz
generalresearch-91d040211a4ed6e4157896256a762d3854777b5e.zip
Initial commitv3.3.4
Diffstat (limited to 'tests/models/legacy/test_offerwall_parse_response.py')
-rw-r--r--tests/models/legacy/test_offerwall_parse_response.py186
1 files changed, 186 insertions, 0 deletions
diff --git a/tests/models/legacy/test_offerwall_parse_response.py b/tests/models/legacy/test_offerwall_parse_response.py
new file mode 100644
index 0000000..7fb5315
--- /dev/null
+++ b/tests/models/legacy/test_offerwall_parse_response.py
@@ -0,0 +1,186 @@
+import json
+
+from generalresearch.models import Source
+from generalresearch.models.legacy.bucket import (
+ TopNPlusBucket,
+ SurveyEligibilityCriterion,
+ DurationSummary,
+ PayoutSummary,
+ BucketTask,
+)
+
+
+class TestOfferwallTopNAndStarwall:
+ def test_45b7228a7(self):
+ from generalresearch.models.legacy.offerwall import (
+ TopNOfferWall,
+ TopNOfferWallResponse,
+ StarwallOfferWallResponse,
+ )
+ from tests.models.legacy.data import (
+ RESPONSE_45b7228a7,
+ )
+
+ res = json.loads(RESPONSE_45b7228a7)
+ assert TopNOfferWallResponse.model_validate(res)
+ offerwall = TopNOfferWall.model_validate(res["offerwall"])
+ assert offerwall
+ offerwall.censor()
+ # Format is identical to starwall
+ assert StarwallOfferWallResponse.model_validate(res)
+
+ def test_b145b803(self):
+ from generalresearch.models.legacy.offerwall import (
+ TopNPlusOfferWallResponse,
+ StarwallPlusOfferWallResponse,
+ )
+ from tests.models.legacy.data import (
+ RESPONSE_b145b803,
+ )
+
+ res = json.loads(RESPONSE_b145b803)
+ assert TopNPlusOfferWallResponse.model_validate(res)
+ assert StarwallPlusOfferWallResponse.model_validate(res)
+
+ def test_d48cce47(self):
+ from generalresearch.models.legacy.offerwall import (
+ TopNPlusBlockOfferWallResponse,
+ StarwallPlusBlockOfferWallResponse,
+ )
+ from tests.models.legacy.data import (
+ RESPONSE_b145b803,
+ RESPONSE_d48cce47,
+ )
+
+ res = json.loads(RESPONSE_d48cce47) # this is a blocked user's response
+ assert TopNPlusBlockOfferWallResponse.model_validate(res)
+ assert StarwallPlusBlockOfferWallResponse.model_validate(res)
+ # otherwise it is identical to the plus's response
+ res = json.loads(RESPONSE_b145b803)
+ assert TopNPlusBlockOfferWallResponse.model_validate(res)
+ assert StarwallPlusBlockOfferWallResponse.model_validate(res)
+
+ def test_1e5f0af8(self):
+ from generalresearch.models.legacy.offerwall import (
+ TopNPlusBlockRecontactOfferWallResponse,
+ StarwallPlusBlockRecontactOfferWallResponse,
+ )
+ from tests.models.legacy.data import (
+ RESPONSE_d48cce47,
+ RESPONSE_1e5f0af8,
+ )
+
+ res = json.loads(RESPONSE_1e5f0af8)
+ assert TopNPlusBlockRecontactOfferWallResponse.model_validate(res)
+ assert StarwallPlusBlockRecontactOfferWallResponse.model_validate(res)
+
+ res = json.loads(RESPONSE_d48cce47) # this is a blocked user's response
+ assert TopNPlusBlockRecontactOfferWallResponse.model_validate(res)
+ assert StarwallPlusBlockRecontactOfferWallResponse.model_validate(res)
+
+ def test_eligibility_criteria(self):
+ b = TopNPlusBucket(
+ id="c82cf98c578a43218334544ab376b00e",
+ contents=[
+ BucketTask(
+ id="12345",
+ payout=10,
+ source=Source.TESTING,
+ id_code="t:12345",
+ loi=120,
+ )
+ ],
+ duration=DurationSummary(max=1, min=1, q1=1, q2=1, q3=1),
+ quality_score=1,
+ payout=PayoutSummary(max=1, min=1, q1=1, q2=1, q3=1),
+ uri="https://task.generalresearch.com/api/v1/52d3f63b2709/00ff1d9b71b94bf4b20d22cd56774120/?i=2a4a897a76464af2b85703b72a125da0&b=379fb74f-05b2-42dc-b283-47e1c8678b04&66482fb=82fe142",
+ eligibility_criteria=(
+ SurveyEligibilityCriterion(
+ question_id="71a367fb71b243dc89f0012e0ec91749",
+ question_text="what is something",
+ qualifying_answer=("1",),
+ qualifying_answer_label=("abc",),
+ property_code="t:123",
+ ),
+ SurveyEligibilityCriterion(
+ question_id="81a367fb71b243dc89f0012e0ec91749",
+ question_text="what is something 2",
+ qualifying_answer=("2",),
+ qualifying_answer_label=("ddd",),
+ property_code="t:124",
+ ),
+ ),
+ )
+ assert b.eligibility_criteria[0].rank == 0
+ assert b.eligibility_criteria[1].rank == 1
+ print(b.model_dump_json())
+ b.censor()
+ print(b.model_dump_json())
+
+
+class TestOfferwallSingle:
+ def test_5fl8bpv5(self):
+ from generalresearch.models.legacy.offerwall import (
+ SingleEntryOfferWallResponse,
+ )
+ from tests.models.legacy.data import (
+ RESPONSE_5fl8bpv5,
+ )
+
+ res = json.loads(RESPONSE_5fl8bpv5)
+ assert SingleEntryOfferWallResponse.model_validate(res)
+
+
+class TestOfferwallSoftPair:
+ def test_37d1da64(self):
+ from generalresearch.models.legacy.offerwall import (
+ SoftPairOfferwallResponse,
+ )
+ from tests.models.legacy.data import (
+ RESPONSE_37d1da64,
+ )
+
+ res = json.loads(RESPONSE_37d1da64)
+ assert SoftPairOfferwallResponse.model_validate(res)
+
+
+class TestMarketplace:
+ def test_5fa23085(self):
+ from generalresearch.models.legacy.offerwall import (
+ MarketplaceOfferwallResponse,
+ )
+
+ from tests.models.legacy.data import (
+ RESPONSE_5fa23085,
+ )
+
+ res = json.loads(RESPONSE_5fa23085)
+ assert MarketplaceOfferwallResponse.model_validate(res)
+
+
+class TestTimebucks:
+ def test_1705e4f8(self):
+ from generalresearch.models.legacy.offerwall import (
+ TimeBucksOfferwallResponse,
+ )
+ from tests.models.legacy.data import (
+ RESPONSE_1705e4f8,
+ )
+
+ res = json.loads(RESPONSE_1705e4f8)
+ assert TimeBucksOfferwallResponse.model_validate(res)
+
+ def test_0af0f7ec(self):
+ from generalresearch.models.legacy.offerwall import (
+ TimeBucksBlockOfferwallResponse,
+ )
+ from tests.models.legacy.data import (
+ RESPONSE_1705e4f8,
+ RESPONSE_0af0f7ec,
+ )
+
+ res = json.loads(RESPONSE_0af0f7ec)
+ assert TimeBucksBlockOfferwallResponse.model_validate(res)
+
+ res = json.loads(RESPONSE_1705e4f8)
+ assert TimeBucksBlockOfferwallResponse.model_validate(res)