Skip to content

Commit 9b5cc25

Browse files
committed
refactor: 테스트 개선
1 parent 153a6ed commit 9b5cc25

File tree

4 files changed

+28
-19
lines changed

4 files changed

+28
-19
lines changed

insight/tasks/weekly_newsletter_batch.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,8 @@ def _get_weekly_trend_html(self) -> str:
145145

146146
# 템플릿 렌더링이 제대로 되지 않은 경우 배치 종료
147147
if (
148-
" 주의 트렌딩 글" not in weekly_trend_html
149-
or "트렌드 분석" not in weekly_trend_html
148+
"이번 주의 트렌딩 글" not in weekly_trend_html
149+
or "주간 트렌드 분석" not in weekly_trend_html
150150
):
151151
logger.error(
152152
f"Failed to build weekly trend HTML for newsletter #{weekly_trend['id']}"

insight/tests/conftest.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,9 @@ def sample_newsletter(user):
160160
email_message=EmailMessage(
161161
to=[user.email],
162162
from_email=settings.DEFAULT_FROM_EMAIL,
163-
subject="Test Newsletter",
164-
text_body="Test content",
165-
html_body="<div>Test content</div>",
163+
subject="벨로그 대시보드 주간 뉴스레터 #1",
164+
text_body="Weekly Report Test content",
165+
html_body="<div>Weekly Report<br/>Velog Dashboard<br/>활동 리포트<br/>대시보드 보러가기</div>",
166166
),
167167
)
168168

insight/tests/tasks/test_weekly_newsletter_batch.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,8 @@ def test_build_newsletters_success(
196196
assert len(newsletters) == 1
197197
assert newsletters[0].user_id == user.id
198198
assert newsletters[0].email_message.to[0] == user.email
199+
# 제목 포맷 검증
200+
assert "벨로그 대시보드 주간 뉴스레터" in newsletters[0].email_message.subject
199201

200202
@patch("insight.tasks.weekly_newsletter_batch.logger")
201203
def test_send_newsletters_success(

insight/tests/tasks/test_weekly_newsletter_template.py

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,9 @@ def test_get_weekly_trend_html_success(
6161

6262
assert trending_summary[0]["title"] in weekly_trend_html
6363
assert trend_analysis["insights"] in weekly_trend_html
64-
assert "이 주의 트렌딩 글" in weekly_trend_html
65-
assert "트렌드 분석" in weekly_trend_html
64+
assert "벨로그 주간 트렌드" in weekly_trend_html
65+
assert "이번 주의 트렌딩 글" in weekly_trend_html
66+
assert "주간 트렌드 분석" in weekly_trend_html
6667

6768
@patch("insight.tasks.weekly_newsletter_batch.logger")
6869
@pytest.mark.django_db
@@ -124,12 +125,11 @@ def test_get_user_weekly_trend_html_success(
124125

125126
assert trending_summary[0]["title"] in user_weekly_trend_html
126127
assert trend_analysis["insights"] in user_weekly_trend_html
127-
assert (
128-
f'<b>{user_weekly_stats["new_posts"]}개</b>의 글을 작성'
129-
in user_weekly_trend_html
130-
)
128+
assert f'{user_weekly_stats["new_posts"]}개의 글' in user_weekly_trend_html
131129
assert "마지막으로 글을 작성하신지" not in user_weekly_trend_html
132130
assert user.username in user_weekly_trend_html
131+
assert "이번주에 작성한 글" in user_weekly_trend_html
132+
assert "주간 내 활동 분석" in user_weekly_trend_html
133133

134134
@patch("insight.tasks.weekly_newsletter_batch.logger")
135135
def test_get_user_weekly_trend_html_inactive_user(
@@ -147,13 +147,16 @@ def test_get_user_weekly_trend_html_inactive_user(
147147
insight_data = inactive_user_weekly_trend.insight
148148
user_weekly_reminder = insight_data.get("user_weekly_reminder")
149149

150-
assert "이번주에 쓴 글" not in user_weekly_trend_html
151-
assert "내 글을 분석해보면?" not in user_weekly_trend_html
152-
assert "글을 작성하지 않으셨네요" in user_weekly_trend_html
153-
assert (
154-
f'마지막으로 글을 작성하신지 {user_weekly_reminder["days_ago"]}일이 지났어요'
155-
in user_weekly_trend_html
156-
)
150+
assert "이번주에 작성한 글" not in user_weekly_trend_html
151+
assert "주간 내 활동 분석" not in user_weekly_trend_html
152+
# days_ago가 있는 경우와 없는 경우 모두 처리
153+
if user_weekly_reminder.get("days_ago"):
154+
assert (
155+
f'😭 마지막으로 글을 작성하신지 {user_weekly_reminder["days_ago"]}일이 지났어요!'
156+
in user_weekly_trend_html
157+
)
158+
else:
159+
assert "😭 글을 작성하지 않으셨네요!" in user_weekly_trend_html
157160

158161
@patch("insight.tasks.weekly_newsletter_batch.logger")
159162
def test_get_user_weekly_trend_html_exception(
@@ -193,6 +196,8 @@ def test_get_newsletter_html_success(self, mock_logger, newsletter_batch):
193196
assert weekly_trend_html in newsletter_html
194197
assert user_weekly_trend_html in newsletter_html
195198
assert "대시보드 보러가기" in newsletter_html
199+
assert "Weekly Report" in newsletter_html
200+
assert "Velog Dashboard" in newsletter_html
196201

197202
@patch("insight.tasks.weekly_newsletter_batch.logger")
198203
def test_get_newsletter_html_expired_token_user(
@@ -210,10 +215,12 @@ def test_get_newsletter_html_expired_token_user(
210215
)
211216

212217
# 템플릿 렌더링 검증
213-
assert "토큰이 만료" in newsletter_html
218+
assert "🚨 잠시만요, 토큰이 만료된 것 같아요!" in newsletter_html
219+
assert "토큰이 만료되어 정상적으로 통계를 수집할 수 없었어요" in newsletter_html
214220
assert weekly_trend_html in newsletter_html
215221
assert user_weekly_trend_html not in newsletter_html
216222
assert "대시보드 보러가기" in newsletter_html
223+
assert "활동 리포트" in newsletter_html
217224

218225
@patch("insight.tasks.weekly_newsletter_batch.logger")
219226
def test_get_newsletter_html_exception(

0 commit comments

Comments
 (0)