def test_get_article_content_edit_history_ng_not_exists_target(self): # 該当データが取得できない場合 with self.assertRaises(RecordNotFoundError): DBUtil.get_article_content_edit_history(dynamodb=self.dynamodb, user_id='test', article_id='test', version='00')
def test_get_article_content_edit_history_ok(self): settings.ARTICLE_HISTORY_PUT_INTERVAL = 0 # テスト用データ作成 target_article = self.article_info_table_items[0] test_body = 'test_body' DBUtil.put_article_content_edit_history( dynamodb=self.dynamodb, user_id=target_article['user_id'], article_id=target_article['article_id'], sanitized_body=test_body) # 該当データが取得できること version = '00' actual_item = DBUtil.get_article_content_edit_history( dynamodb=self.dynamodb, user_id=target_article['user_id'], article_id=target_article['article_id'], version=version) expected_item = { 'user_id': target_article['user_id'], 'article_edit_history_id': target_article['article_id'] + '_' + version, 'body': test_body, 'article_id': target_article['article_id'], 'version': version, } for key in expected_item.keys(): self.assertEqual(expected_item[key], actual_item[key])
def exec_main_proc(self): article_content_edit_table = self.dynamodb.Table( os.environ['ARTICLE_CONTENT_EDIT_TABLE_NAME']) article_content_edit = article_content_edit_table.get_item( Key={ 'article_id': self.params['article_id'] }).get('Item') if article_content_edit: article_info_table = self.dynamodb.Table( os.environ['ARTICLE_INFO_TABLE_NAME']) article_info = article_info_table.get_item( Key={ 'article_id': self.params['article_id'] }).get('Item') article_info.update(article_content_edit) return_value = article_info else: article_info_table = self.dynamodb.Table( os.environ['ARTICLE_INFO_TABLE_NAME']) article_content_table = self.dynamodb.Table( os.environ['ARTICLE_CONTENT_TABLE_NAME']) article_info = article_info_table.get_item( Key={ 'article_id': self.params['article_id'] }).get('Item') article_content = article_content_table.get_item( Key={ 'article_id': self.params['article_id'] }).get('Item') if 'price' in article_info: article_content['body'] = article_content['paid_body'] article_content.pop('paid_body', None) article_info.update(article_content) return_value = article_info # version が指定されていた場合は、指定の version で body を上書き if self.params.get('version') is not None: article_content_edit_history = DBUtil.get_article_content_edit_history( self.dynamodb, self.event['requestContext']['authorizer'] ['claims']['cognito:username'], self.params['article_id'], self.params['version']) return_value['body'] = article_content_edit_history.get('body') return { 'statusCode': 200, 'body': json.dumps(return_value, cls=DecimalEncoder) }