このコミットが含まれているのは:
@@ -314,6 +314,7 @@ RSpec.describe 'Materials API', type: :request do
|
||||
.and change(Tag, :count).by(1)
|
||||
.and change(TagName, :count).by(1)
|
||||
.and change(MaterialVersion, :count).by(1)
|
||||
.and change { event_rows.length }.by(1)
|
||||
|
||||
expect(response).to have_http_status(:created)
|
||||
|
||||
@@ -325,6 +326,12 @@ RSpec.describe 'Materials API', type: :request do
|
||||
expect(material.file.attached?).to be(true)
|
||||
expect(material.version_no).to eq(1)
|
||||
expect(material.material_versions.first.event_type).to eq('create')
|
||||
event = event_rows.last
|
||||
expect(event).to include(
|
||||
'event_type' => 'materials.create',
|
||||
'created_by_user_id' => member_user.id)
|
||||
expect(material.material_versions.first.event_id).to eq(event.fetch('id'))
|
||||
expect(material.tag.tag_versions.pluck(:event_id)).to eq([event.fetch('id')])
|
||||
expect(material.material_export_items.first.export_path).to eq('伊地知ニジカ/created.png')
|
||||
expect(material.material_versions.first.export_paths_json).to eq(
|
||||
'legacy_drive' => '伊地知ニジカ/created.png'
|
||||
@@ -509,6 +516,7 @@ RSpec.describe 'Materials API', type: :request do
|
||||
export_paths: { legacy_drive: '伊地知ニジカ/updated.jpg' }
|
||||
}
|
||||
end.to change(MaterialVersion, :count).by(2)
|
||||
.and change { event_rows.length }.by(1)
|
||||
|
||||
expect(response).to have_http_status(:ok)
|
||||
|
||||
@@ -517,6 +525,12 @@ RSpec.describe 'Materials API', type: :request do
|
||||
expect(material.tag.category).to eq('material')
|
||||
expect(material.url).to eq('https://example.com/updated-source')
|
||||
expect(material.updated_by_user).to eq(member_user)
|
||||
event = event_rows.last
|
||||
expect(event).to include(
|
||||
'event_type' => 'materials.update',
|
||||
'created_by_user_id' => member_user.id)
|
||||
expect(material.material_versions.pluck(:event_id).uniq).to eq([event.fetch('id')])
|
||||
expect(material.tag.tag_versions.pluck(:event_id)).to eq([event.fetch('id')])
|
||||
expect(material.file.attached?).to be(true)
|
||||
expect(material.file.blob.id).not_to eq(old_blob_id)
|
||||
expect(ActiveStorage::Blob.where(id: old_blob_id).exists?).to be(true)
|
||||
@@ -632,6 +646,7 @@ RSpec.describe 'Materials API', type: :request do
|
||||
MaterialVersionRecorder.record!(material:, event_type: :create,
|
||||
created_by_user: member_user)
|
||||
TagVersioning.ensure_snapshot!(tag, created_by_user: member_user)
|
||||
events = event_rows
|
||||
|
||||
expect do
|
||||
put "/materials/#{ material.id }", params: {
|
||||
@@ -643,6 +658,7 @@ RSpec.describe 'Materials API', type: :request do
|
||||
|
||||
expect(response).to have_http_status(:ok)
|
||||
expect(material.reload.version_no).to eq(1)
|
||||
expect(event_rows).to eq(events)
|
||||
end
|
||||
|
||||
it 'records update version when only export_path changes' do
|
||||
@@ -807,6 +823,12 @@ RSpec.describe 'Materials API', type: :request do
|
||||
|
||||
it 'creates source suppression as member' do
|
||||
sign_in_as(member_user)
|
||||
materials = ['a', 'b'].map do |name|
|
||||
Material.create!(
|
||||
source_kind: 'google_drive_file', source_file_id: "blocked-#{ name }",
|
||||
source_path: "伊地知ニジカ/危険素材/#{ name }.png",
|
||||
url: "https://example.com/blocked-#{ name }", created_by_user: member_user)
|
||||
end
|
||||
|
||||
expect do
|
||||
post '/materials/suppressions', params: {
|
||||
@@ -815,6 +837,7 @@ RSpec.describe 'Materials API', type: :request do
|
||||
reason: 'copyright_high_risk'
|
||||
}
|
||||
end.to change(MaterialSyncSuppression, :count).by(1)
|
||||
.and change { event_rows.length }.by(1)
|
||||
|
||||
expect(response).to have_http_status(:created)
|
||||
expect(json).to include(
|
||||
@@ -822,6 +845,14 @@ RSpec.describe 'Materials API', type: :request do
|
||||
'drive_path' => '伊地知ニジカ/危険素材',
|
||||
'normalized_source_key' => 'google_drive_path_prefix:伊地知ニジカ/危険素材'
|
||||
)
|
||||
event = event_rows.last
|
||||
expect(event).to include(
|
||||
'event_type' => 'materials.block', 'created_by_user_id' => member_user.id)
|
||||
expect(materials.map { _1.reload.discarded? }).to eq([true, true])
|
||||
versions = MaterialVersion.where(material_id: materials.map(&:id))
|
||||
expect(versions.where(event_type: 'discard').pluck(:material_id))
|
||||
.to match_array(materials.map(&:id))
|
||||
expect(versions.pluck(:event_id).uniq).to eq([event.fetch('id')])
|
||||
end
|
||||
end
|
||||
|
||||
@@ -860,11 +891,19 @@ RSpec.describe 'Materials API', type: :request do
|
||||
end
|
||||
|
||||
it 'discards the material and returns 204' do
|
||||
delete "/materials/#{ material.id }"
|
||||
expect { delete "/materials/#{ material.id }" }
|
||||
.to change { event_rows.length }.by(1)
|
||||
|
||||
expect(response).to have_http_status(:no_content)
|
||||
expect(Material.find_by(id: material.id)).to be_nil
|
||||
expect(Material.with_discarded.find(material.id)).to be_discarded
|
||||
event = event_rows.last
|
||||
expect(event).to include(
|
||||
'event_type' => 'materials.destroy',
|
||||
'created_by_user_id' => member_user.id)
|
||||
versions = MaterialVersion.where(material_id: material.id)
|
||||
expect(versions.order(:version_no).last.event_type).to eq('discard')
|
||||
expect(versions.pluck(:event_id).uniq).to eq([event.fetch('id')])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
新しいイシューから参照
ユーザーをブロックする