Skip to content

Commit 063631f

Browse files
author
richard.jackson2
committed
test: extend dedupe migration test for exact-case duplicates
Covers identical email duplicates in addition to case-variant scenarios.
1 parent db7d447 commit 063631f

1 file changed

Lines changed: 10 additions & 0 deletions

File tree

tests/test_migration_dedupe_users_by_email_case.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,9 @@ def migration_db(monkeypatch):
7575
ALICE_OLDEST = uuid.UUID("11111111-1111-1111-1111-111111111111")
7676
ALICE_MIDDLE = uuid.UUID("22222222-2222-2222-2222-222222222222")
7777
ALICE_NEWEST = uuid.UUID("33333333-3333-3333-3333-333333333333")
78+
# Exact-case duplicate of ALICE_OLDEST's email — covers identical (not just
79+
# case-variant) duplicate rows, which can exist before the unique index lands.
80+
ALICE_EXACT_DUP = uuid.UUID("77777777-7777-7777-7777-777777777777")
7881
BOB = uuid.UUID("44444444-4444-4444-4444-444444444444")
7982
CAROL_NO_CHILDREN = uuid.UUID("55555555-5555-5555-5555-555555555555")
8083
CAROL_DUP = uuid.UUID("66666666-6666-6666-6666-666666666666")
@@ -83,6 +86,7 @@ def migration_db(monkeypatch):
8386
TRANS_ON_ALICE_MIDDLE = uuid.UUID("a2a2a2a2-a2a2-a2a2-a2a2-a2a2a2a2a2a2")
8487
TRANS_ON_ALICE_NEWEST_1 = uuid.UUID("a3a3a3a3-a3a3-a3a3-a3a3-a3a3a3a3a3a3")
8588
TRANS_ON_ALICE_NEWEST_2 = uuid.UUID("a4a4a4a4-a4a4-a4a4-a4a4-a4a4a4a4a4a4")
89+
TRANS_ON_ALICE_EXACT_DUP = uuid.UUID("a5a5a5a5-a5a5-a5a5-a5a5-a5a5a5a5a5a5")
8690
TRANS_ON_BOB = uuid.UUID("b1b1b1b1-b1b1-b1b1-b1b1-b1b1b1b1b1b1")
8791

8892
REC_ON_ALICE_MIDDLE = uuid.UUID("c1c1c1c1-c1c1-c1c1-c1c1-c1c1c1c1c1c1")
@@ -103,6 +107,7 @@ def _seed(conn: sa.Connection) -> None:
103107
"""
104108
INSERT INTO "user" (id, email, created_datetime, updated_datetime, data_retention_days) VALUES
105109
(:a_old, 'Alice@Example.com', '2025-01-01 00:00:00+00', '2025-01-01 00:00:00+00', NULL),
110+
(:a_dup, 'Alice@Example.com', '2025-01-20 00:00:00+00', '2025-01-20 00:00:00+00', 14),
106111
(:a_mid, 'alice@example.com', '2025-02-01 00:00:00+00', '2025-02-01 00:00:00+00', 30),
107112
(:a_new, 'ALICE@EXAMPLE.COM', '2025-03-01 00:00:00+00', '2025-03-01 00:00:00+00', 7),
108113
(:bob, 'bob@example.com', '2025-01-15 00:00:00+00', '2025-01-15 00:00:00+00', NULL),
@@ -112,6 +117,7 @@ def _seed(conn: sa.Connection) -> None:
112117
),
113118
{
114119
"a_old": ALICE_OLDEST,
120+
"a_dup": ALICE_EXACT_DUP,
115121
"a_mid": ALICE_MIDDLE,
116122
"a_new": ALICE_NEWEST,
117123
"bob": BOB,
@@ -125,6 +131,7 @@ def _seed(conn: sa.Connection) -> None:
125131
"""
126132
INSERT INTO transcription (id, user_id, created_datetime, updated_datetime) VALUES
127133
(:t_old, :a_old, NOW(), NOW()),
134+
(:t_dup, :a_dup, NOW(), NOW()),
128135
(:t_mid, :a_mid, NOW(), NOW()),
129136
(:t_new_1, :a_new, NOW(), NOW()),
130137
(:t_new_2, :a_new, NOW(), NOW()),
@@ -133,11 +140,13 @@ def _seed(conn: sa.Connection) -> None:
133140
),
134141
{
135142
"t_old": TRANS_ON_ALICE_OLDEST,
143+
"t_dup": TRANS_ON_ALICE_EXACT_DUP,
136144
"t_mid": TRANS_ON_ALICE_MIDDLE,
137145
"t_new_1": TRANS_ON_ALICE_NEWEST_1,
138146
"t_new_2": TRANS_ON_ALICE_NEWEST_2,
139147
"t_bob": TRANS_ON_BOB,
140148
"a_old": ALICE_OLDEST,
149+
"a_dup": ALICE_EXACT_DUP,
141150
"a_mid": ALICE_MIDDLE,
142151
"a_new": ALICE_NEWEST,
143152
"bob": BOB,
@@ -208,6 +217,7 @@ def test_migration_merges_duplicates_reassigns_fks_and_lowercases(migration_db):
208217
)
209218
assert set(alice_trans) == {
210219
TRANS_ON_ALICE_OLDEST,
220+
TRANS_ON_ALICE_EXACT_DUP,
211221
TRANS_ON_ALICE_MIDDLE,
212222
TRANS_ON_ALICE_NEWEST_1,
213223
TRANS_ON_ALICE_NEWEST_2,

0 commit comments

Comments
 (0)