Skip to content

Commit e3fdd37

Browse files
committed
refactor: assert_self_mergeable을 assert_emails_mergeable로 리네이밍
1 parent af09dee commit e3fdd37

5 files changed

Lines changed: 19 additions & 17 deletions

File tree

‎app/admin_api/serializers/merge.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ def validate(self, attrs: dict) -> dict:
3030
if attrs["source"] == attrs["target"]:
3131
raise serializers.ValidationError({"target": MergeError("same_account").localized(en=False)})
3232
try:
33-
UserMergeHistory.assert_self_mergeable(attrs["source"], attrs["target"])
33+
UserMergeHistory.assert_emails_mergeable(attrs["source"], attrs["target"])
3434
except MergeError as e:
3535
raise serializers.ValidationError({"detail": e.localized(en=False)}) from e
3636
return attrs

‎app/admin_api/test/user_merge_test.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,8 @@ def test_create_into_already_merged_target_rejected(api_client, source_user, tar
132132

133133

134134
@pytest.mark.django_db
135-
def test_create_enforces_self_mergeable(api_client, source_user, target_user):
136-
# 운영자 병합도 assert_self_mergeable 적용 — target 에 인증 이메일이 없으면 거부(운영자가 보고 설정 가능).
135+
def test_create_enforces_emails_mergeable(api_client, source_user, target_user):
136+
# 운영자 병합도 assert_emails_mergeable 적용 — target 에 인증 이메일이 없으면 거부(운영자가 보고 설정 가능).
137137
EmailAddress.objects.filter(user=target_user).delete()
138138
response = api_client.post(reverse(LIST), {"source": source_user.id, "target": target_user.id}, format="json")
139139
assert response.status_code == http.HTTPStatus.BAD_REQUEST

‎app/user/account_views/merge.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ def merge_confirm(request: HttpRequest) -> HttpResponse:
6969

7070
try:
7171
with atomic():
72-
UserMergeHistory.assert_self_mergeable(source, request.user)
72+
UserMergeHistory.assert_emails_mergeable(source, request.user)
7373
UserMergeHistory.objects.create(source=source, target=request.user).merge()
7474
except MergeError as e:
7575
context = _confirm_context(source, request.user, error=e.localized(en=is_english()))
@@ -96,7 +96,7 @@ def _merge_source(request: HttpRequest) -> User:
9696
def _confirm_context(source: User, target: User, *, error: str | None = None) -> dict:
9797
if error is None:
9898
try:
99-
UserMergeHistory.assert_self_mergeable(source, target)
99+
UserMergeHistory.assert_emails_mergeable(source, target)
100100
except MergeError as e:
101101
error = e.localized(en=is_english())
102102
return {"source": source, "target": target, "error": error}

‎app/user/models/merge.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ def is_self_merge(self) -> bool:
7676
return self.created_by_id is not None and self.created_by_id == self.target_id
7777

7878
@staticmethod
79-
def assert_self_mergeable(source: UserExt, target: UserExt) -> None:
79+
def assert_emails_mergeable(source: UserExt, target: UserExt) -> None:
8080
if not EmailAddress.objects.filter(user=target).exists():
8181
raise MergeError("target_no_verified_email")
8282
if EmailAddress.objects.filter(user=target, verified=False).exists():

‎app/user/test/merge_test.py‎

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -294,35 +294,37 @@ def test_double_unmerge_rejected(source_user, target_user):
294294
merge.unmerge()
295295

296296

297-
# ---- assert_self_mergeable (본인 병합 사전검증) --------------------------------
297+
# ---- assert_emails_mergeable (이메일 병합 사전검증 — self/admin 공통) -----------------
298298

299299

300-
def test_self_mergeable_passes_when_both_verified(source_user, target_user):
301-
UserMergeHistory.assert_self_mergeable(source_user, target_user) # 둘 다 fixture 로 verified 이메일 보유 → no raise
300+
def test_emails_mergeable_passes_when_both_verified(source_user, target_user):
301+
UserMergeHistory.assert_emails_mergeable(
302+
source_user, target_user
303+
) # 둘 다 fixture 로 verified 이메일 보유 → no raise
302304

303305

304-
def test_self_mergeable_allows_email_less_source(source_user, target_user):
306+
def test_emails_mergeable_allows_email_less_source(source_user, target_user):
305307
EmailAddress.objects.filter(user=source_user).delete() # source 는 이메일 없음 → 허용
306308

307-
UserMergeHistory.assert_self_mergeable(source_user, target_user) # no raise
309+
UserMergeHistory.assert_emails_mergeable(source_user, target_user) # no raise
308310

309311

310-
def test_self_mergeable_rejects_email_less_target(source_user, target_user):
312+
def test_emails_mergeable_rejects_email_less_target(source_user, target_user):
311313
EmailAddress.objects.filter(user=target_user).delete() # target 에 인증 이메일 없음 → 거부
312314

313315
with pytest.raises(ValueError):
314-
UserMergeHistory.assert_self_mergeable(source_user, target_user)
316+
UserMergeHistory.assert_emails_mergeable(source_user, target_user)
315317

316318

317-
def test_self_mergeable_rejects_unverified_target_email(source_user, target_user):
319+
def test_emails_mergeable_rejects_unverified_target_email(source_user, target_user):
318320
EmailAddress.objects.create(user=target_user, email="extra@example.com", verified=False)
319321

320322
with pytest.raises(ValueError):
321-
UserMergeHistory.assert_self_mergeable(source_user, target_user)
323+
UserMergeHistory.assert_emails_mergeable(source_user, target_user)
322324

323325

324-
def test_self_mergeable_rejects_unverified_source_email(source_user, target_user):
326+
def test_emails_mergeable_rejects_unverified_source_email(source_user, target_user):
325327
EmailAddress.objects.create(user=source_user, email="extra@example.com", verified=False)
326328

327329
with pytest.raises(ValueError):
328-
UserMergeHistory.assert_self_mergeable(source_user, target_user)
330+
UserMergeHistory.assert_emails_mergeable(source_user, target_user)

0 commit comments

Comments
 (0)