aboutsummaryrefslogtreecommitdiff
path: root/tests/managers/thl/test_user_manager/test_user_metadata.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/managers/thl/test_user_manager/test_user_metadata.py
downloadgeneralresearch-91d040211a4ed6e4157896256a762d3854777b5e.tar.gz
generalresearch-91d040211a4ed6e4157896256a762d3854777b5e.zip
Initial commitv3.3.4
Diffstat (limited to 'tests/managers/thl/test_user_manager/test_user_metadata.py')
-rw-r--r--tests/managers/thl/test_user_manager/test_user_metadata.py88
1 files changed, 88 insertions, 0 deletions
diff --git a/tests/managers/thl/test_user_manager/test_user_metadata.py b/tests/managers/thl/test_user_manager/test_user_metadata.py
new file mode 100644
index 0000000..91dc16a
--- /dev/null
+++ b/tests/managers/thl/test_user_manager/test_user_metadata.py
@@ -0,0 +1,88 @@
+from uuid import uuid4
+
+import pytest
+
+from generalresearch.models.thl.user_profile import UserMetadata
+from test_utils.models.conftest import user, user_manager, user_factory
+
+
+class TestUserMetadataManager:
+
+ def test_get_notset(self, user, user_manager, user_metadata_manager):
+ # The row in the db won't exist. It just returns the default obj with everything None (except for the user_id)
+ um1 = user_metadata_manager.get(user_id=user.user_id)
+ assert um1 == UserMetadata(user_id=user.user_id)
+
+ def test_create(self, user_factory, product, user_metadata_manager):
+ from generalresearch.models.thl.user import User
+
+ u1: User = user_factory(product=product)
+
+ email_address = f"{uuid4().hex}@example.com"
+ um = UserMetadata(user_id=u1.user_id, email_address=email_address)
+ # This happens in the model itself, nothing to do with the manager (a model_validator)
+ assert um.email_sha256 is not None
+
+ user_metadata_manager.update(um)
+ um2 = user_metadata_manager.get(email_address=email_address)
+ assert um == um2
+
+ def test_create_no_email(self, product, user_factory, user_metadata_manager):
+ from generalresearch.models.thl.user import User
+
+ u1: User = user_factory(product=product)
+ um = UserMetadata(user_id=u1.user_id)
+ assert um.email_sha256 is None
+
+ user_metadata_manager.update(um)
+ um2 = user_metadata_manager.get(user_id=u1.user_id)
+ assert um == um2
+
+ def test_update(self, product, user_factory, user_metadata_manager):
+ from generalresearch.models.thl.user import User
+
+ u: User = user_factory(product=product)
+
+ email_address = f"{uuid4().hex}@example1.com"
+ um = UserMetadata(user_id=u.user_id, email_address=email_address)
+ user_metadata_manager.update(user_metadata=um)
+
+ um.email_address = email_address.replace("example1", "example2")
+ user_metadata_manager.update(user_metadata=um)
+
+ um2 = user_metadata_manager.get(email_address=um.email_address)
+ assert um2.email_address != email_address
+
+ assert um2 == UserMetadata(
+ user_id=u.user_id,
+ email_address=email_address.replace("example1", "example2"),
+ )
+
+ def test_filter(self, user_factory, product, user_metadata_manager):
+ from generalresearch.models.thl.user import User
+
+ user1: User = user_factory(product=product)
+ user2: User = user_factory(product=product)
+
+ email_address = f"{uuid4().hex}@example.com"
+ res = user_metadata_manager.filter(email_addresses=[email_address])
+ assert len(res) == 0
+
+ # Create 2 user metadata with the same email address
+ user_metadata_manager.update(
+ user_metadata=UserMetadata(
+ user_id=user1.user_id, email_address=email_address
+ )
+ )
+ user_metadata_manager.update(
+ user_metadata=UserMetadata(
+ user_id=user2.user_id, email_address=email_address
+ )
+ )
+
+ res = user_metadata_manager.filter(email_addresses=[email_address])
+ assert len(res) == 2
+
+ with pytest.raises(expected_exception=ValueError) as e:
+ res = user_metadata_manager.get(email_address=email_address)
+ assert "More than 1 result returned!" in str(e.value)