diff options
Diffstat (limited to 'tests/models/legacy/test_offerwall_parse_response.py')
| -rw-r--r-- | tests/models/legacy/test_offerwall_parse_response.py | 186 |
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) |
