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])
Esempio n. 3
0
    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)
        }