aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--generalresearch/models/thl/contest/__init__.py2
-rw-r--r--generalresearch/models/thl/task_status.py6
-rw-r--r--generalresearch/models/thl/wallet/cashout_method.py5
-rw-r--r--generalresearch/sql_helper.py6
-rw-r--r--generalresearch/wall_status_codes/dynata.py13
-rw-r--r--generalresearch/wall_status_codes/precision.py2
-rw-r--r--generalresearch/wall_status_codes/prodege.py2
-rw-r--r--generalresearch/wall_status_codes/repdata.py2
-rw-r--r--generalresearch/wall_status_codes/sago.py2
-rw-r--r--generalresearch/wall_status_codes/spectrum.py2
-rw-r--r--generalresearch/wall_status_codes/wxet.py4
-rw-r--r--test_utils/conftest.py19
-rw-r--r--test_utils/models/contest/conftest.py24
-rw-r--r--test_utils/spectrum/conftest.py110
-rw-r--r--test_utils/spectrum/surveys_json.py140
15 files changed, 151 insertions, 188 deletions
diff --git a/generalresearch/models/thl/contest/__init__.py b/generalresearch/models/thl/contest/__init__.py
index 0444586..842d85e 100644
--- a/generalresearch/models/thl/contest/__init__.py
+++ b/generalresearch/models/thl/contest/__init__.py
@@ -1,6 +1,6 @@
from __future__ import annotations
-from datetime import UTC, datetime, timezone
+from datetime import UTC, datetime
from typing import Self
from uuid import uuid4
diff --git a/generalresearch/models/thl/task_status.py b/generalresearch/models/thl/task_status.py
index 011d743..de767d6 100644
--- a/generalresearch/models/thl/task_status.py
+++ b/generalresearch/models/thl/task_status.py
@@ -1,7 +1,7 @@
from __future__ import annotations
from datetime import datetime
-from typing import Annotated, Any, Literal, Self
+from typing import Annotated, Any, Literal
from pydantic import (
BaseModel,
@@ -251,7 +251,7 @@ class TaskStatusResponse(BaseModel):
return self.product_user_id
@classmethod
- def from_session(cls, session: Session, product: Product) -> Self:
+ def from_session(cls, session: Session, product: Product) -> TaskStatusResponse:
user_payout_string = None
if session.user_payout is not None:
@@ -274,7 +274,7 @@ class TaskStatusResponse(BaseModel):
user_payout_string=user_payout_string,
product_id=session.user.product_id,
product_user_id=session.user.product_user_id,
- kwargs=session.url_metadata or dict(),
+ kwargs=session.url_metadata or {},
status_code_1=session.status_code_1,
status_code_2=session.status_code_2,
adjusted_status=session.adjusted_status,
diff --git a/generalresearch/models/thl/wallet/cashout_method.py b/generalresearch/models/thl/wallet/cashout_method.py
index 40c4717..6158afd 100644
--- a/generalresearch/models/thl/wallet/cashout_method.py
+++ b/generalresearch/models/thl/wallet/cashout_method.py
@@ -130,9 +130,8 @@ class CashoutMethodBase(BaseModel):
f"Invalid amount requested: ${amount / 100:.2f}. Must be between"
f" ${int(self.min_value) / 100:.2f} and ${int(self.max_value) / 100:.2f}"
)
- if self.type == PayoutType.CASH_IN_MAIL:
- if amount % 500 != 0:
- raise ValueError("Amount must be in increments of $5.00")
+ if self.type == PayoutType.CASH_IN_MAIL and amount % 500 != 0:
+ raise ValueError("Amount must be in increments of $5.00")
return True
diff --git a/generalresearch/sql_helper.py b/generalresearch/sql_helper.py
index ea45305..08b660d 100644
--- a/generalresearch/sql_helper.py
+++ b/generalresearch/sql_helper.py
@@ -166,7 +166,7 @@ class SqlHelper(SqlConnector):
:param cursor: If cursor is passed, the insert is NOT committed!
:param ignore_existing: adds 'ON CONFLICT DO NOTHING' to SQL statement.
"""
- assert len(set([len(x) for x in values_to_insert])) == 1
+ assert len({len(x) for x in values_to_insert}) == 1
if cursor is None:
connection = self.make_connection()
c = connection.cursor()
@@ -192,7 +192,6 @@ class SqlHelper(SqlConnector):
if cursor is None:
c.connection.commit()
-
def bulk_update(
self,
table_name: str,
@@ -203,7 +202,7 @@ class SqlHelper(SqlConnector):
if len(values_to_insert) == 0:
return
- assert len(set([len(x) for x in values_to_insert])) == 1
+ assert len({len(x) for x in values_to_insert}) == 1
if cursor is None:
connection = self.make_connection()
c = connection.cursor()
@@ -343,4 +342,3 @@ class SqlHelper(SqlConnector):
c.execute(query)
if cursor is None:
c.connection.commit()
-
diff --git a/generalresearch/wall_status_codes/dynata.py b/generalresearch/wall_status_codes/dynata.py
index 53eebe7..5d008c1 100644
--- a/generalresearch/wall_status_codes/dynata.py
+++ b/generalresearch/wall_status_codes/dynata.py
@@ -88,7 +88,7 @@ status_codes_ext_map: dict[StatusCode1, list[str]] = {
"5.10",
],
}
-ext_status_code_map: dict[str, StatusCode1] = dict()
+ext_status_code_map: dict[str, StatusCode1] = {}
for k, v in status_codes_ext_map.items():
k: StatusCode1
v: list[str]
@@ -117,16 +117,15 @@ def annotate_status_code(
return status, status_code, None
-def stop_marketplace_session(status_code_1: StatusCode1, ext_status_code_1) -> bool:
+def stop_marketplace_session(
+ status_code_1: StatusCode1, ext_status_code_1: str
+) -> bool:
if ext_status_code_1.startswith("5"):
# '5.10' is the user hit a Daily Limit, so they should not be sent in again today
return True
- if status_code_1 in {
+ return status_code_1 in {
StatusCode1.PS_QUALITY,
StatusCode1.BUYER_QUALITY_FAIL,
StatusCode1.PS_BLOCKED,
- }:
- return True
-
- return False
+ }
diff --git a/generalresearch/wall_status_codes/precision.py b/generalresearch/wall_status_codes/precision.py
index c7593cf..4466fa6 100644
--- a/generalresearch/wall_status_codes/precision.py
+++ b/generalresearch/wall_status_codes/precision.py
@@ -73,7 +73,7 @@ status_codes_ext_map: dict[StatusCode1, list[str]] = {
StatusCode1.PS_FAIL: ["21", "22"],
StatusCode1.PS_OVERQUOTA: ["31", "32", "23"],
}
-ext_status_code_map = dict()
+ext_status_code_map = {}
for k, v in status_codes_ext_map.items():
k: StatusCode1
v: list[str]
diff --git a/generalresearch/wall_status_codes/prodege.py b/generalresearch/wall_status_codes/prodege.py
index 2876ba9..058ce28 100644
--- a/generalresearch/wall_status_codes/prodege.py
+++ b/generalresearch/wall_status_codes/prodege.py
@@ -31,7 +31,7 @@ status_code_map: dict[StatusCode1, list[str]] = {
StatusCode1.PS_OVERQUOTA: ["13", "28", "29", "30", "31", "38"],
}
-status_class = dict()
+status_class = {}
for k, v in status_code_map.items():
k: StatusCode1
v: list[str]
diff --git a/generalresearch/wall_status_codes/repdata.py b/generalresearch/wall_status_codes/repdata.py
index 24aab14..0828b4c 100644
--- a/generalresearch/wall_status_codes/repdata.py
+++ b/generalresearch/wall_status_codes/repdata.py
@@ -58,7 +58,7 @@ status_code_map: dict[StatusCode1, list[str]] = {
StatusCode1.PS_OVERQUOTA: ["5001", "6001", "6002", "6003"],
}
-status_class = dict()
+status_class = {}
for k, v in status_code_map.items():
k: StatusCode1
v: list[str]
diff --git a/generalresearch/wall_status_codes/sago.py b/generalresearch/wall_status_codes/sago.py
index b66190c..1a55a91 100644
--- a/generalresearch/wall_status_codes/sago.py
+++ b/generalresearch/wall_status_codes/sago.py
@@ -167,7 +167,7 @@ status_codes_ext_map: dict[StatusCode1, list[str]] = {
StatusCode1.PS_FAIL: ["7", "29", "36", "47", "56", "58", "64"],
StatusCode1.PS_OVERQUOTA: ["29", "46", "33", "31"],
}
-ext_status_code_map: dict[str, StatusCode1] = dict()
+ext_status_code_map: dict[str, StatusCode1] = {}
for k, v in status_codes_ext_map.items():
k: StatusCode1
v: list[str]
diff --git a/generalresearch/wall_status_codes/spectrum.py b/generalresearch/wall_status_codes/spectrum.py
index 610e239..7dee1e8 100644
--- a/generalresearch/wall_status_codes/spectrum.py
+++ b/generalresearch/wall_status_codes/spectrum.py
@@ -140,7 +140,7 @@ status_codes_ext_map: dict[StatusCode1, list[str]] = {
"72",
],
}
-ext_status_code_map = dict()
+ext_status_code_map = {}
for k, v in status_codes_ext_map.items():
k: StatusCode1
v: list[str]
diff --git a/generalresearch/wall_status_codes/wxet.py b/generalresearch/wall_status_codes/wxet.py
index 6b3f67c..ad25ff3 100644
--- a/generalresearch/wall_status_codes/wxet.py
+++ b/generalresearch/wall_status_codes/wxet.py
@@ -29,7 +29,7 @@ status_codes_ext_map: dict[StatusCode1, list[WXETStatusCode1]] = {
StatusCode1.UNKNOWN: [],
StatusCode1.MARKETPLACE_FAIL: [WXETStatusCode1.BUYER_POSTBACK_NOT_RECEIVED],
}
-ext_status_code_map = dict()
+ext_status_code_map = {}
for k, v in status_codes_ext_map.items():
k: StatusCode1
v: list[WXETStatusCode1]
@@ -58,7 +58,7 @@ status_code2_map: dict[StatusCode1, list[WXETStatusCode2]] = {
WXETStatusCode2.TASK_VERSION_MISMATCH,
],
}
-ext_status_code2_map = dict()
+ext_status_code2_map = {}
for k, v in status_code2_map.items():
for vv in v:
ext_status_code2_map[vv] = k
diff --git a/test_utils/conftest.py b/test_utils/conftest.py
index 03e9305..6894450 100644
--- a/test_utils/conftest.py
+++ b/test_utils/conftest.py
@@ -361,16 +361,15 @@ def delete_df_collection(
create_main_accounts()
case DFCollectionType.WALL | DFCollectionType.SESSION:
- with thl_web_rw.make_connection() as conn:
- with conn.cursor() as c:
- c.execute("SET CONSTRAINTS ALL DEFERRED")
- for table in [
- "thl_wall",
- "thl_session",
- ]:
- c.execute(
- query=f"DELETE FROM {table};",
- )
+ with thl_web_rw.make_connection() as conn, conn.cursor() as c:
+ c.execute("SET CONSTRAINTS ALL DEFERRED")
+ for table in [
+ "thl_wall",
+ "thl_session",
+ ]:
+ c.execute(
+ query=f"DELETE FROM {table};",
+ )
case DFCollectionType.USER:
for table in ["thl_usermetadata", "thl_user"]:
diff --git a/test_utils/models/contest/conftest.py b/test_utils/models/contest/conftest.py
index b14e126..d9c8a6b 100644
--- a/test_utils/models/contest/conftest.py
+++ b/test_utils/models/contest/conftest.py
@@ -11,7 +11,15 @@ from pytest import FixtureRequest as Request
from generalresearch.currency import USDCent
from generalresearch.managers.thl.contest_manager import ContestManager
from generalresearch.managers.thl.ledger_manager.thl_ledger import ThlLedgerManager
+from generalresearch.models.thl.contest import (
+ ContestEndCondition,
+ ContestPrize,
+)
from generalresearch.models.thl.contest.contest import Contest
+from generalresearch.models.thl.contest.definitions import (
+ ContestPrizeKind,
+ ContestType,
+)
from generalresearch.models.thl.contest.leaderboard import (
LeaderboardContestCreate,
)
@@ -19,6 +27,8 @@ from generalresearch.models.thl.contest.milestone import (
MilestoneContestCreate,
)
from generalresearch.models.thl.contest.raffle import (
+ ContestEntryType,
+ RaffleContest,
RaffleContestCreate,
)
from generalresearch.models.thl.product import Product
@@ -33,18 +43,6 @@ from generalresearch.models.thl.user import User
@pytest.fixture
def raffle_contest_create() -> RaffleContestCreate:
- from generalresearch.models.thl.contest import (
- ContestEndCondition,
- ContestPrize,
- )
- from generalresearch.models.thl.contest.definitions import (
- ContestPrizeKind,
- ContestType,
- )
- from generalresearch.models.thl.contest.raffle import (
- ContestEntryType,
- RaffleContestCreate,
- )
# This is what we'll get from the fastapi endpoint
return RaffleContestCreate(
@@ -89,7 +87,7 @@ def raffle_contest_factory(
product_user_wallet_yes: Product,
raffle_contest_create: RaffleContestCreate,
contest_manager: ContestManager,
-) -> Callable[..., Contest]:
+) -> Callable[..., RaffleContest]:
def _inner(**kwargs):
raffle_contest_create.update(**kwargs)
diff --git a/test_utils/spectrum/conftest.py b/test_utils/spectrum/conftest.py
index d186a5b..7cd9321 100644
--- a/test_utils/spectrum/conftest.py
+++ b/test_utils/spectrum/conftest.py
@@ -89,6 +89,116 @@ def setup_spectrum_surveys(
@pytest.fixture(scope="session")
+def spectrum_api_surveys_json() -> list[str]:
+ return [
+ (
+ '{"cpi":"3.90","country_isos":["us"],"language_isos":["eng"],"buyer_id":"215","bid_loi":780,"source":"s",'
+ '"used_question_ids":["1235","212"],"survey_id":"111111","survey_name":"Exciting New Survey #14472374",'
+ '"status":22,"field_end_date":"2023-03-02T07:05:36.261000Z","category_code":"232","calculation_type":"COMPLETES",'
+ '"requires_pii":false,"survey_exclusions":"13947261,14126487,14361592,14376811,14385771,14387789,14472374",'
+ '"exclusion_period":30,"bid_ir":0.2,"overall_loi":null,"overall_ir":null,"last_block_loi":null,'
+ '"last_block_ir":null,"project_last_complete_date":null,"country_iso":"us","language_iso":"eng",'
+ '"include_psids":null,"exclude_psids":null'
+ ',"qualifications":["ee5e842","e6e0b0b"],"quotas":[{"remaining_count":100,'
+ '"condition_hashes":["32cbf31"]}],"conditions":null,"created_api":"2023-02-28T07:05:36.698000Z",'
+ '"modified_api":"2024-03-10T09:43:40.030000Z","updated":"2024-05-30T21:52:46.431612Z","is_live":true'
+ "}"
+ ),
+ (
+ '{"cpi":"3.90","country_isos":["us"],"language_isos":["eng"],"buyer_id":"215","bid_loi":780,"source":"s",'
+ '"used_question_ids":["1235","212"],"survey_id":"14472374","survey_name":"Exciting New Survey #14472374",'
+ '"status":22,"field_end_date":"2023-03-02T07:05:36.261000Z","category_code":"232","calculation_type":"COMPLETES",'
+ '"requires_pii":false,"survey_exclusions":"13947261,14126487,14361592,14376811,14385771,14387789,14472374",'
+ '"exclusion_period":30,"bid_ir":0.2,"overall_loi":null,"overall_ir":null,"last_block_loi":null,'
+ '"last_block_ir":null,"project_last_complete_date":null,"country_iso":"us","language_iso":"eng",'
+ '"include_psids":null,"exclude_psids":"0408319875e9dbffdc09e86671ad5636,23c4c66ecbc465906d0b0fd798740e64,'
+ '861df4603df3b7f754b8d4b89cbdb313","qualifications":["ee5e842","e6e0b0b"],"quotas":[{"remaining_count":100,'
+ '"condition_hashes":["32cbf31"]}],"conditions":null,"created_api":"2023-02-28T07:05:36.698000Z",'
+ '"modified_api":"2024-03-10T09:43:40.030000Z","updated":"2024-05-30T21:52:46.431612Z","is_live":true'
+ "}"
+ ),
+ (
+ '{"cpi":"3.90","country_isos":["us"],"language_isos":["eng"],"buyer_id":"215","bid_loi":780,"source":"s",'
+ '"used_question_ids":["1235","212"],"survey_id":"12345","survey_name":"Exciting New Survey #14472374",'
+ '"status":22,"field_end_date":"2023-03-02T07:05:36.261000Z","category_code":"232","calculation_type":"COMPLETES",'
+ '"requires_pii":false,"survey_exclusions":"13947261,14126487,14361592,14376811,14385771,14387789,14472374",'
+ '"exclusion_period":30,"bid_ir":0.2,"overall_loi":null,"overall_ir":null,"last_block_loi":null,'
+ '"last_block_ir":null,"project_last_complete_date":null,"country_iso":"us","language_iso":"eng",'
+ '"include_psids":"7d043991b1494dbbb57786b11c88239c","exclude_psids":null'
+ ',"qualifications":["ee5e842","e6e0b0b"],"quotas":[{"remaining_count":100,'
+ '"condition_hashes":["32cbf31"]}],"conditions":null,"created_api":"2023-02-28T07:05:36.698000Z",'
+ '"modified_api":"2024-03-10T09:43:40.030000Z","updated":"2024-05-30T21:52:46.431612Z","is_live":true'
+ "}"
+ ),
+ (
+ '{"cpi":"1.40","country_isos":["us"],"language_isos":["eng"],"buyer_id":"233","bid_loi":null,"source":"s",'
+ '"used_question_ids":["245","244","212","211","225"],"survey_id":"14970164","survey_name":"Exciting New Survey '
+ '#14970164","status":22,"field_end_date":"2024-05-07T16:18:33.000000Z","category_code":"232",'
+ '"calculation_type":"COMPLETES","requires_pii":false,"survey_exclusions":"14970164,29690277",'
+ '"exclusion_period":30,"bid_ir":null,"overall_loi":900,"overall_ir":0.56,"last_block_loi":600,'
+ '"last_block_ir":0.01,"project_last_complete_date":"2024-05-28T04:12:56.297000Z","country_iso":"us",'
+ '"language_iso":"eng","include_psids":null,"exclude_psids":"01c7156fd9639737effbbdebd7fd66f6,'
+ "0508b88f4991bac8b10e9de74ce80194,0a51c627d77cef41f802e51a00126697,15b888176ac4781c2c978a9a05c396f8,"
+ "17bc146b4f7fb05c7058d25da70c6a44,29935289c1f86a4144aab2e12652f305,2fe9d1d451efca10eba4fa4e5e2b74c9,"
+ "c3527b7ef570a1571ea19870f3c25600,cdf2771d57cda9f1bf334382b2b7afd8,cebf3ec50395d973310ea526457dd5a0,"
+ "cf3877cfc15e2e6ef2a56a7a7a37f3d3,dfa691e6d060e3643d5731df30be9f69,e0cb49537182660826aa351e1187809f,"
+ 'edb6d280113ca49561f25fdcb500fde6,fbfba66cfad602f1c26e61e6174eb1f7,fd4307b16fd15e8534a4551c9b6872fc",'
+ '"qualifications":["1ab337d","a01aa68","437774f","dc6065b","82b6ad6"],"quotas":[{"remaining_count":242,'
+ '"condition_hashes":["c23c0b9"]},{"remaining_count":0,"condition_hashes":["5b8c6cf"]},{"remaining_count":126,'
+ '"condition_hashes":["ac35a6e"]},{"remaining_count":110,"condition_hashes":["5e7e5aa"]},{"remaining_count":108,'
+ '"condition_hashes":["9a7aef3"]},{"remaining_count":127,"condition_hashes":["4f75127"]},{"remaining_count":0,'
+ '"condition_hashes":["95437ed"]},{"remaining_count":17,"condition_hashes":["b4b7b95"]},{"remaining_count":16,'
+ '"condition_hashes":["0ab0ae6"]},{"remaining_count":8,"condition_hashes":["6e86fb5"]},{"remaining_count":12,'
+ '"condition_hashes":["24de31e"]},{"remaining_count":69,"condition_hashes":["6bdf350"]},{"remaining_count":411,'
+ '"condition_hashes":["c94d422"]}],"conditions":null,"created_api":"2023-03-30T22:47:36.324000Z",'
+ '"modified_api":"2024-05-30T13:07:16.489000Z","updated":"2024-05-30T21:52:37.493282Z","is_live":true,'
+ '"all_hashes":["c94d422","b4b7b95","6bdf350","6e86fb5","82b6ad6","24de31e","1ab337d","c23c0b9","9a7aef3",'
+ '"ac35a6e","95437ed","5b8c6cf","437774f","a01aa68","5e7e5aa","4f75127","0ab0ae6","dc6065b"]}'
+ ),
+ (
+ '{"cpi":"1.23","country_isos":["au"],"language_isos":["eng"],"buyer_id":"215","bid_loi":780,"source":"s",'
+ '"used_question_ids":[],"survey_id":"69420","survey_name":"Everyone is eligible AU",'
+ '"status":22,"field_end_date":"2023-03-02T07:05:36.261000Z","category_code":"232","calculation_type":"COMPLETES",'
+ '"requires_pii":false,"survey_exclusions":"13947261,14126487,14361592,14376811,14385771,14387789,14472374",'
+ '"exclusion_period":30,"bid_ir":0.2,"overall_loi":null,"overall_ir":null,"last_block_loi":null,'
+ '"last_block_ir":null,"project_last_complete_date":null,"country_iso":"au","language_iso":"eng",'
+ '"include_psids":null,"exclude_psids":null'
+ ',"qualifications":[],"quotas":[{"remaining_count":100,'
+ '"condition_hashes":[]}],"conditions":null,"created_api":"2023-02-28T07:05:36.698000Z",'
+ '"modified_api":"2024-03-10T09:43:40.030000Z","updated":"2024-05-30T21:52:46.431612Z","is_live":true'
+ "}"
+ ),
+ (
+ '{"cpi":"1.23","country_isos":["us"],"language_isos":["eng"],"buyer_id":"215","bid_loi":780,"source":"s",'
+ '"used_question_ids":[],"survey_id":"69421","survey_name":"Everyone is eligible US",'
+ '"status":22,"field_end_date":"2023-03-02T07:05:36.261000Z","category_code":"232","calculation_type":"COMPLETES",'
+ '"requires_pii":false,"survey_exclusions":"13947261,14126487,14361592,14376811,14385771,14387789,14472374",'
+ '"exclusion_period":30,"bid_ir":0.2,"overall_loi":null,"overall_ir":null,"last_block_loi":null,'
+ '"last_block_ir":null,"project_last_complete_date":null,"country_iso":"us","language_iso":"eng",'
+ '"include_psids":null,"exclude_psids":null'
+ ',"qualifications":[],"quotas":[{"remaining_count":100,'
+ '"condition_hashes":[]}],"conditions":null,"created_api":"2023-02-28T07:05:36.698000Z",'
+ '"modified_api":"2024-03-10T09:43:40.030000Z","updated":"2024-05-30T21:52:46.431612Z","is_live":true'
+ "}"
+ ),
+ # For partial eligibility
+ (
+ '{"cpi":"1.23","country_isos":["us"],"language_isos":["eng"],"buyer_id":"215","bid_loi":780,"source":"s",'
+ '"used_question_ids":["1031", "212"],"survey_id":"999000","survey_name":"Pet owners",'
+ '"status":22,"field_end_date":"2023-03-02T07:05:36.261000Z","category_code":"232","calculation_type":"COMPLETES",'
+ '"requires_pii":false,"survey_exclusions":"13947261",'
+ '"exclusion_period":30,"bid_ir":0.2,"overall_loi":null,"overall_ir":null,"last_block_loi":null,'
+ '"last_block_ir":null,"project_last_complete_date":null,"country_iso":"us","language_iso":"eng",'
+ '"include_psids":null,"exclude_psids":null'
+ ',"qualifications":["0039b0c", "00f60a8"],"quotas":[{"remaining_count":100,'
+ '"condition_hashes":[]}],"conditions":null,"created_api":"2023-02-28T07:05:36.698000Z",'
+ '"modified_api":"2024-03-10T09:43:40.030000Z","updated":"2024-05-30T21:52:46.431612Z","is_live":true'
+ "}"
+ ),
+ ]
+
+
+@pytest.fixture(scope="session")
def spectrum_api_survey_json() -> dict[str, Any]:
return {
"survey_id": 29333264,
diff --git a/test_utils/spectrum/surveys_json.py b/test_utils/spectrum/surveys_json.py
deleted file mode 100644
index eb747a5..0000000
--- a/test_utils/spectrum/surveys_json.py
+++ /dev/null
@@ -1,140 +0,0 @@
-from generalresearch.models import LogicalOperator
-from generalresearch.models.spectrum.survey import (
- SpectrumCondition,
- SpectrumSurvey,
-)
-from generalresearch.models.thl.survey.condition import ConditionValueType
-
-SURVEYS_JSON = [
- '{"cpi":"3.90","country_isos":["us"],"language_isos":["eng"],"buyer_id":"215","bid_loi":780,"source":"s",'
- '"used_question_ids":["1235","212"],"survey_id":"111111","survey_name":"Exciting New Survey #14472374",'
- '"status":22,"field_end_date":"2023-03-02T07:05:36.261000Z","category_code":"232","calculation_type":"COMPLETES",'
- '"requires_pii":false,"survey_exclusions":"13947261,14126487,14361592,14376811,14385771,14387789,14472374",'
- '"exclusion_period":30,"bid_ir":0.2,"overall_loi":null,"overall_ir":null,"last_block_loi":null,'
- '"last_block_ir":null,"project_last_complete_date":null,"country_iso":"us","language_iso":"eng",'
- '"include_psids":null,"exclude_psids":null'
- ',"qualifications":["ee5e842","e6e0b0b"],"quotas":[{"remaining_count":100,'
- '"condition_hashes":["32cbf31"]}],"conditions":null,"created_api":"2023-02-28T07:05:36.698000Z",'
- '"modified_api":"2024-03-10T09:43:40.030000Z","updated":"2024-05-30T21:52:46.431612Z","is_live":true'
- "}",
- '{"cpi":"3.90","country_isos":["us"],"language_isos":["eng"],"buyer_id":"215","bid_loi":780,"source":"s",'
- '"used_question_ids":["1235","212"],"survey_id":"14472374","survey_name":"Exciting New Survey #14472374",'
- '"status":22,"field_end_date":"2023-03-02T07:05:36.261000Z","category_code":"232","calculation_type":"COMPLETES",'
- '"requires_pii":false,"survey_exclusions":"13947261,14126487,14361592,14376811,14385771,14387789,14472374",'
- '"exclusion_period":30,"bid_ir":0.2,"overall_loi":null,"overall_ir":null,"last_block_loi":null,'
- '"last_block_ir":null,"project_last_complete_date":null,"country_iso":"us","language_iso":"eng",'
- '"include_psids":null,"exclude_psids":"0408319875e9dbffdc09e86671ad5636,23c4c66ecbc465906d0b0fd798740e64,'
- '861df4603df3b7f754b8d4b89cbdb313","qualifications":["ee5e842","e6e0b0b"],"quotas":[{"remaining_count":100,'
- '"condition_hashes":["32cbf31"]}],"conditions":null,"created_api":"2023-02-28T07:05:36.698000Z",'
- '"modified_api":"2024-03-10T09:43:40.030000Z","updated":"2024-05-30T21:52:46.431612Z","is_live":true'
- "}",
- '{"cpi":"3.90","country_isos":["us"],"language_isos":["eng"],"buyer_id":"215","bid_loi":780,"source":"s",'
- '"used_question_ids":["1235","212"],"survey_id":"12345","survey_name":"Exciting New Survey #14472374",'
- '"status":22,"field_end_date":"2023-03-02T07:05:36.261000Z","category_code":"232","calculation_type":"COMPLETES",'
- '"requires_pii":false,"survey_exclusions":"13947261,14126487,14361592,14376811,14385771,14387789,14472374",'
- '"exclusion_period":30,"bid_ir":0.2,"overall_loi":null,"overall_ir":null,"last_block_loi":null,'
- '"last_block_ir":null,"project_last_complete_date":null,"country_iso":"us","language_iso":"eng",'
- '"include_psids":"7d043991b1494dbbb57786b11c88239c","exclude_psids":null'
- ',"qualifications":["ee5e842","e6e0b0b"],"quotas":[{"remaining_count":100,'
- '"condition_hashes":["32cbf31"]}],"conditions":null,"created_api":"2023-02-28T07:05:36.698000Z",'
- '"modified_api":"2024-03-10T09:43:40.030000Z","updated":"2024-05-30T21:52:46.431612Z","is_live":true'
- "}",
- '{"cpi":"1.40","country_isos":["us"],"language_isos":["eng"],"buyer_id":"233","bid_loi":null,"source":"s",'
- '"used_question_ids":["245","244","212","211","225"],"survey_id":"14970164","survey_name":"Exciting New Survey '
- '#14970164","status":22,"field_end_date":"2024-05-07T16:18:33.000000Z","category_code":"232",'
- '"calculation_type":"COMPLETES","requires_pii":false,"survey_exclusions":"14970164,29690277",'
- '"exclusion_period":30,"bid_ir":null,"overall_loi":900,"overall_ir":0.56,"last_block_loi":600,'
- '"last_block_ir":0.01,"project_last_complete_date":"2024-05-28T04:12:56.297000Z","country_iso":"us",'
- '"language_iso":"eng","include_psids":null,"exclude_psids":"01c7156fd9639737effbbdebd7fd66f6,'
- "0508b88f4991bac8b10e9de74ce80194,0a51c627d77cef41f802e51a00126697,15b888176ac4781c2c978a9a05c396f8,"
- "17bc146b4f7fb05c7058d25da70c6a44,29935289c1f86a4144aab2e12652f305,2fe9d1d451efca10eba4fa4e5e2b74c9,"
- "c3527b7ef570a1571ea19870f3c25600,cdf2771d57cda9f1bf334382b2b7afd8,cebf3ec50395d973310ea526457dd5a0,"
- "cf3877cfc15e2e6ef2a56a7a7a37f3d3,dfa691e6d060e3643d5731df30be9f69,e0cb49537182660826aa351e1187809f,"
- 'edb6d280113ca49561f25fdcb500fde6,fbfba66cfad602f1c26e61e6174eb1f7,fd4307b16fd15e8534a4551c9b6872fc",'
- '"qualifications":["1ab337d","a01aa68","437774f","dc6065b","82b6ad6"],"quotas":[{"remaining_count":242,'
- '"condition_hashes":["c23c0b9"]},{"remaining_count":0,"condition_hashes":["5b8c6cf"]},{"remaining_count":126,'
- '"condition_hashes":["ac35a6e"]},{"remaining_count":110,"condition_hashes":["5e7e5aa"]},{"remaining_count":108,'
- '"condition_hashes":["9a7aef3"]},{"remaining_count":127,"condition_hashes":["4f75127"]},{"remaining_count":0,'
- '"condition_hashes":["95437ed"]},{"remaining_count":17,"condition_hashes":["b4b7b95"]},{"remaining_count":16,'
- '"condition_hashes":["0ab0ae6"]},{"remaining_count":8,"condition_hashes":["6e86fb5"]},{"remaining_count":12,'
- '"condition_hashes":["24de31e"]},{"remaining_count":69,"condition_hashes":["6bdf350"]},{"remaining_count":411,'
- '"condition_hashes":["c94d422"]}],"conditions":null,"created_api":"2023-03-30T22:47:36.324000Z",'
- '"modified_api":"2024-05-30T13:07:16.489000Z","updated":"2024-05-30T21:52:37.493282Z","is_live":true,'
- '"all_hashes":["c94d422","b4b7b95","6bdf350","6e86fb5","82b6ad6","24de31e","1ab337d","c23c0b9","9a7aef3",'
- '"ac35a6e","95437ed","5b8c6cf","437774f","a01aa68","5e7e5aa","4f75127","0ab0ae6","dc6065b"]}',
- '{"cpi":"1.23","country_isos":["au"],"language_isos":["eng"],"buyer_id":"215","bid_loi":780,"source":"s",'
- '"used_question_ids":[],"survey_id":"69420","survey_name":"Everyone is eligible AU",'
- '"status":22,"field_end_date":"2023-03-02T07:05:36.261000Z","category_code":"232","calculation_type":"COMPLETES",'
- '"requires_pii":false,"survey_exclusions":"13947261,14126487,14361592,14376811,14385771,14387789,14472374",'
- '"exclusion_period":30,"bid_ir":0.2,"overall_loi":null,"overall_ir":null,"last_block_loi":null,'
- '"last_block_ir":null,"project_last_complete_date":null,"country_iso":"au","language_iso":"eng",'
- '"include_psids":null,"exclude_psids":null'
- ',"qualifications":[],"quotas":[{"remaining_count":100,'
- '"condition_hashes":[]}],"conditions":null,"created_api":"2023-02-28T07:05:36.698000Z",'
- '"modified_api":"2024-03-10T09:43:40.030000Z","updated":"2024-05-30T21:52:46.431612Z","is_live":true'
- "}",
- '{"cpi":"1.23","country_isos":["us"],"language_isos":["eng"],"buyer_id":"215","bid_loi":780,"source":"s",'
- '"used_question_ids":[],"survey_id":"69421","survey_name":"Everyone is eligible US",'
- '"status":22,"field_end_date":"2023-03-02T07:05:36.261000Z","category_code":"232","calculation_type":"COMPLETES",'
- '"requires_pii":false,"survey_exclusions":"13947261,14126487,14361592,14376811,14385771,14387789,14472374",'
- '"exclusion_period":30,"bid_ir":0.2,"overall_loi":null,"overall_ir":null,"last_block_loi":null,'
- '"last_block_ir":null,"project_last_complete_date":null,"country_iso":"us","language_iso":"eng",'
- '"include_psids":null,"exclude_psids":null'
- ',"qualifications":[],"quotas":[{"remaining_count":100,'
- '"condition_hashes":[]}],"conditions":null,"created_api":"2023-02-28T07:05:36.698000Z",'
- '"modified_api":"2024-03-10T09:43:40.030000Z","updated":"2024-05-30T21:52:46.431612Z","is_live":true'
- "}",
- # For partial eligibility
- '{"cpi":"1.23","country_isos":["us"],"language_isos":["eng"],"buyer_id":"215","bid_loi":780,"source":"s",'
- '"used_question_ids":["1031", "212"],"survey_id":"999000","survey_name":"Pet owners",'
- '"status":22,"field_end_date":"2023-03-02T07:05:36.261000Z","category_code":"232","calculation_type":"COMPLETES",'
- '"requires_pii":false,"survey_exclusions":"13947261",'
- '"exclusion_period":30,"bid_ir":0.2,"overall_loi":null,"overall_ir":null,"last_block_loi":null,'
- '"last_block_ir":null,"project_last_complete_date":null,"country_iso":"us","language_iso":"eng",'
- '"include_psids":null,"exclude_psids":null'
- ',"qualifications":["0039b0c", "00f60a8"],"quotas":[{"remaining_count":100,'
- '"condition_hashes":[]}],"conditions":null,"created_api":"2023-02-28T07:05:36.698000Z",'
- '"modified_api":"2024-03-10T09:43:40.030000Z","updated":"2024-05-30T21:52:46.431612Z","is_live":true'
- "}",
-]
-
-# make sure hashes for 111111 are in db
-c1 = SpectrumCondition(
- question_id="1001",
- value_type=ConditionValueType.LIST,
- values=["a", "b", "c"],
- negate=False,
- logical_operator=LogicalOperator.OR,
-)
-c2 = SpectrumCondition(
- question_id="1001",
- value_type=ConditionValueType.LIST,
- values=["a"],
- negate=False,
- logical_operator=LogicalOperator.OR,
-)
-c3 = SpectrumCondition(
- question_id="1002",
- value_type=ConditionValueType.RANGE,
- values=["18-24", "30-32"],
- negate=False,
- logical_operator=LogicalOperator.OR,
-)
-c4 = SpectrumCondition(
- question_id="212",
- value_type=ConditionValueType.LIST,
- values=["23", "24"],
- negate=False,
- logical_operator=LogicalOperator.OR,
-)
-c5 = SpectrumCondition(
- question_id="1031",
- value_type=ConditionValueType.LIST,
- values=["113", "114", "121"],
- negate=False,
- logical_operator=LogicalOperator.OR,
-)
-CONDITIONS = [c1, c2, c3, c4, c5]
-survey = SpectrumSurvey.model_validate_json(SURVEYS_JSON[0])
-assert c1.criterion_hash in survey.qualifications
-assert c3.criterion_hash in survey.qualifications