このコミットが含まれているのは:
@@ -115,6 +115,50 @@ RSpec.describe 'Post imports API', type: :request do
|
||||
end
|
||||
|
||||
describe 'POST /posts/import' do
|
||||
it 'keeps the duration string contract through preview, validate, and import' do
|
||||
sign_in_as(member)
|
||||
allow(PostMetadataFetcher).to receive(:fetch).and_return(
|
||||
title: 'fetched title',
|
||||
thumbnail_base: nil,
|
||||
duration: '2.5',
|
||||
tags: '動画'
|
||||
)
|
||||
|
||||
post '/posts/import/preview', params: {
|
||||
source: 'https://example.com/video'
|
||||
}
|
||||
preview_row = json.fetch('rows').first
|
||||
expect(preview_row.dig('attributes', 'duration')).to eq('2.5')
|
||||
|
||||
post '/posts/import/validate', params: {
|
||||
rows: [{
|
||||
sourceRow: preview_row.fetch('source_row'),
|
||||
url: preview_row.fetch('url'),
|
||||
attributes: preview_row.fetch('attributes'),
|
||||
provenance: preview_row.fetch('provenance'),
|
||||
tagSources: preview_row.fetch('tag_sources'),
|
||||
metadataUrl: preview_row.fetch('metadata_url')
|
||||
}],
|
||||
changed_row: -1
|
||||
}
|
||||
validated_row = json.fetch('rows').first
|
||||
expect(validated_row.dig('attributes', 'duration')).to eq('2.5')
|
||||
|
||||
post '/posts/import', params: {
|
||||
rows: [{
|
||||
sourceRow: validated_row.fetch('source_row'),
|
||||
url: validated_row.fetch('url'),
|
||||
attributes: validated_row.fetch('attributes'),
|
||||
provenance: validated_row.fetch('provenance'),
|
||||
tagSources: validated_row.fetch('tag_sources'),
|
||||
metadataUrl: validated_row.fetch('metadata_url')
|
||||
}]
|
||||
}
|
||||
|
||||
expect(response).to have_http_status(:ok)
|
||||
expect(Post.order(:id).last.video_ms).to eq(2_500)
|
||||
end
|
||||
|
||||
it 'returns a formal skipped result for an existing post' do
|
||||
existing = create(:post, url: 'https://example.com/existing')
|
||||
sign_in_as(member)
|
||||
|
||||
新しい課題から参照
ユーザをブロックする