Skip to content

Commit 4e092f5

Browse files
authored
Merge pull request #365 from AlisProject/develop
Update 0.46.0
2 parents 6fd2aab + 3e206f6 commit 4e092f5

File tree

2 files changed

+51
-11
lines changed

2 files changed

+51
-11
lines changed

src/handlers/me/articles/like/create/me_articles_like_create.py

+15-11
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,11 @@ def validate_params(self):
3838
)
3939

4040
def exec_main_proc(self):
41+
# 「いいね」情報登録処理
42+
article_user_id = self.__get_article_user_id(self.event['pathParameters']['article_id'])
4143
try:
4244
article_liked_user_table = self.dynamodb.Table(os.environ['ARTICLE_LIKED_USER_TABLE_NAME'])
43-
self.__create_article_liked_user(article_liked_user_table)
45+
self.__create_article_liked_user(article_liked_user_table, article_user_id)
4446
except ClientError as e:
4547
if e.response['Error']['Code'] == 'ConditionalCheckFailedException':
4648
return {
@@ -50,14 +52,16 @@ def exec_main_proc(self):
5052
else:
5153
raise
5254

53-
try:
54-
article_info_table = self.dynamodb.Table(os.environ['ARTICLE_INFO_TABLE_NAME'])
55-
article_info = article_info_table.get_item(Key={'article_id': self.params['article_id']}).get('Item')
56-
self.__create_like_notification(article_info)
57-
self.__update_unread_notification_manager(article_info)
58-
except Exception as e:
59-
logging.fatal(e)
60-
traceback.print_exc()
55+
# 通知情報登録処理。「セルフいいね」だった場合は通知を行わない
56+
if article_user_id != self.event['requestContext']['authorizer']['claims']['cognito:username']:
57+
try:
58+
article_info_table = self.dynamodb.Table(os.environ['ARTICLE_INFO_TABLE_NAME'])
59+
article_info = article_info_table.get_item(Key={'article_id': self.params['article_id']}).get('Item')
60+
self.__create_like_notification(article_info)
61+
self.__update_unread_notification_manager(article_info)
62+
except Exception as e:
63+
logging.fatal(e)
64+
traceback.print_exc()
6165

6266
return {
6367
'statusCode': 200
@@ -104,12 +108,12 @@ def __update_unread_notification_manager(self, article_info):
104108
ExpressionAttributeValues={':unread': True}
105109
)
106110

107-
def __create_article_liked_user(self, article_liked_user_table):
111+
def __create_article_liked_user(self, article_liked_user_table, article_user_id):
108112
epoch = int(time.time())
109113
article_liked_user = {
110114
'article_id': self.event['pathParameters']['article_id'],
111115
'user_id': self.event['requestContext']['authorizer']['claims']['cognito:username'],
112-
'article_user_id': self.__get_article_user_id(self.event['pathParameters']['article_id']),
116+
'article_user_id': article_user_id,
113117
'created_at': epoch,
114118
'target_date': time.strftime('%Y-%m-%d', time.gmtime(epoch)),
115119
'sort_key': TimeUtil.generate_sort_key()

tests/handlers/me/articles/like/create/test_me_articles_like_create.py

+36
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,42 @@ def test_main_with_updating_notification(self):
262262
self.assertEqual(notification, expected_notification)
263263
self.assertEqual(len(notification_after), len(notification_before))
264264

265+
@patch('time.time', MagicMock(return_value=1520150272.000015))
266+
def test_main_ok_with_self_liked_user(self):
267+
params = {
268+
'pathParameters': {
269+
'article_id': self.article_info_table_items[2]['article_id']
270+
},
271+
'requestContext': {
272+
'authorizer': {
273+
'claims': {
274+
'cognito:username': self.article_info_table_items[2]['user_id'],
275+
'phone_number_verified': 'true',
276+
'email_verified': 'true'
277+
}
278+
}
279+
}
280+
}
281+
282+
article_liked_user_table = self.dynamodb.Table(os.environ['ARTICLE_LIKED_USER_TABLE_NAME'])
283+
notification_table = self.dynamodb.Table(os.environ['NOTIFICATION_TABLE_NAME'])
284+
unread_notification_manager_table = self.dynamodb.Table(os.environ['UNREAD_NOTIFICATION_MANAGER_TABLE_NAME'])
285+
article_liked_user_before = article_liked_user_table.scan()['Items']
286+
notification_before = notification_table.scan()['Items']
287+
unread_notification_manager_before = unread_notification_manager_table.scan()['Items']
288+
289+
response = MeArticlesLikeCreate(event=params, context={}, dynamodb=self.dynamodb).main()
290+
291+
notification_after = notification_table.scan()['Items']
292+
unread_notification_manager_after = unread_notification_manager_table.scan()['Items']
293+
article_liked_user_after = article_liked_user_table.scan()['Items']
294+
295+
self.assertEqual(response['statusCode'], 200)
296+
# article_liked_user へは書き込まれるが、通知情報へは書き込まれないことを確認
297+
self.assertEqual(len(article_liked_user_after), len(article_liked_user_before) + 1)
298+
self.assertEqual(notification_before, notification_after)
299+
self.assertEqual(unread_notification_manager_before, unread_notification_manager_after)
300+
265301
@patch('me_articles_like_create.MeArticlesLikeCreate._MeArticlesLikeCreate__create_like_notification',
266302
MagicMock(side_effect=Exception()))
267303
def test_raise_exception_in_creating_notification(self):

0 commit comments

Comments
 (0)