@@ -125,7 +125,10 @@ def test_get_user_weekly_trend_html_success(
125125
126126 assert trending_summary [0 ]["title" ] in user_weekly_trend_html
127127 assert trend_analysis ["insights" ] in user_weekly_trend_html
128- assert f'{ user_weekly_stats ["new_posts" ]} 개의 글' in user_weekly_trend_html
128+ assert (
129+ f'{ user_weekly_stats ["new_posts" ]} 개의 글'
130+ in user_weekly_trend_html
131+ )
129132 assert "마지막으로 글을 작성하신지" not in user_weekly_trend_html
130133 assert user .username in user_weekly_trend_html
131134 assert "이번주에 작성한 글" in user_weekly_trend_html
@@ -179,13 +182,16 @@ def test_get_user_weekly_trend_html_exception(
179182 )
180183
181184 @patch ("insight.tasks.weekly_newsletter_batch.logger" )
182- def test_get_newsletter_html_success (self , mock_logger , newsletter_batch ):
185+ def test_get_newsletter_html_success (
186+ self , mock_logger , newsletter_batch , user
187+ ):
183188 """정상 사용자 뉴스레터 HTML 렌더링 테스트"""
184189 is_expired_token_user = False
185190 weekly_trend_html = "test-weekly-trend-html"
186191 user_weekly_trend_html = "test-user-weekly-trend-html"
187192
188193 newsletter_html = newsletter_batch ._get_newsletter_html (
194+ user ,
189195 is_expired_token_user ,
190196 weekly_trend_html ,
191197 user_weekly_trend_html ,
@@ -198,33 +204,45 @@ def test_get_newsletter_html_success(self, mock_logger, newsletter_batch):
198204 assert "대시보드 보러가기" in newsletter_html
199205 assert "Weekly Report" in newsletter_html
200206 assert "Velog Dashboard" in newsletter_html
207+ assert (
208+ "user/newsletter-unsubscribe?email=" + user .email
209+ in newsletter_html
210+ )
201211
202212 @patch ("insight.tasks.weekly_newsletter_batch.logger" )
203213 def test_get_newsletter_html_expired_token_user (
204- self , mock_logger , newsletter_batch
214+ self , mock_logger , newsletter_batch , user
205215 ):
206216 """토큰 만료 사용자 뉴스레터 HTML 렌더링 테스트"""
207217 is_expired_token_user = True
208218 weekly_trend_html = "test-weekly-trend-html"
209219 user_weekly_trend_html = "test-user-weekly-trend-html"
210220
211221 newsletter_html = newsletter_batch ._get_newsletter_html (
222+ user ,
212223 is_expired_token_user ,
213224 weekly_trend_html ,
214225 user_weekly_trend_html ,
215226 )
216227
217228 # 템플릿 렌더링 검증
218229 assert "🚨 잠시만요, 토큰이 만료된 것 같아요!" in newsletter_html
219- assert "토큰이 만료되어 정상적으로 통계를 수집할 수 없었어요" in newsletter_html
230+ assert (
231+ "토큰이 만료되어 정상적으로 통계를 수집할 수 없었어요"
232+ in newsletter_html
233+ )
220234 assert weekly_trend_html in newsletter_html
221235 assert user_weekly_trend_html not in newsletter_html
222236 assert "대시보드 보러가기" in newsletter_html
223237 assert "활동 리포트" in newsletter_html
238+ assert (
239+ "user/newsletter-unsubscribe?email=" + user .email
240+ in newsletter_html
241+ )
224242
225243 @patch ("insight.tasks.weekly_newsletter_batch.logger" )
226244 def test_get_newsletter_html_exception (
227- self , mock_logger , newsletter_batch
245+ self , mock_logger , newsletter_batch , user
228246 ):
229247 """뉴스레터 HTML 렌더링 실패 시 예외 처리 테스트"""
230248 with patch (
@@ -234,6 +252,7 @@ def test_get_newsletter_html_exception(
234252
235253 with pytest .raises (Exception ):
236254 newsletter_batch ._get_newsletter_html (
255+ user ,
237256 False ,
238257 "test-weekly-trend-html" ,
239258 "test-user-weekly-trend-html" ,
0 commit comments