scinote-web/spec/models/form_repository_rows_field_value.rb
2025-03-27 10:02:10 +01:00

43 lines
2.1 KiB
Ruby

# frozen_string_literal: true
require 'rails_helper'
describe FormRepositoryRowsFieldValue, type: :model do
let!(:repository) { create :repository }
let!(:repository_row_1) { create :repository_row, repository: repository }
let!(:repository_row_2) { create :repository_row, repository: repository }
let!(:repository_row_3) { create :repository_row, repository: repository }
let(:form) { create :form }
let(:form_field) { create :form_field, form: form, data: { type: 'FormRepositoryRowsFieldValue', validations: {} } }
let(:form_field_value) { (create :form_field_value, type: 'FormRepositoryRowsFieldValue').becomes(FormRepositoryRowsFieldValue) }
it 'adds new repository row snapshots' do
form_field_value.update(value: [repository_row_1.id, repository_row_2.id])
expect(form_field_value.data.pluck('id')).to eq [repository_row_1.id, repository_row_2.id]
expect(form_field_value.data[0]['snapshot_by_id']).to eq form_field_value.created_by_id
end
it 'removes repository row snapshots' do
form_field_value.update(value: [repository_row_1.id, repository_row_2.id, repository_row_3.id])
expect(form_field_value.data.pluck('id')).to eq [repository_row_1.id, repository_row_2.id, repository_row_3.id]
form_field_value.update(value: [repository_row_1.id, repository_row_2.id])
expect(form_field_value.data.pluck('id')).to eq [repository_row_1.id, repository_row_2.id]
end
it 'keeps existing repository row snapshots intact' do
form_field_value.update(value: [repository_row_1.id, repository_row_2.id])
existing_snapshot_timestamp = form_field_value.data[0]['snapshot_at']
existing_snapshot_name = form_field_value.data[0]['name']
repository_row_1.update(name: "New name!")
form_field_value.update(value: [repository_row_1.id, repository_row_2.id, repository_row_3.id])
expect(form_field_value.data.pluck('id')).to eq [repository_row_1.id, repository_row_2.id, repository_row_3.id]
expect(form_field_value.data[0]['snapshot_at']).to eq existing_snapshot_timestamp
expect(form_field_value.data[0]['name']).to eq existing_snapshot_name
end
end