require 'rails_helper'

RSpec.describe VersionRecord, type: :model do
  let!(:tag) { create(:tag, name: 'version_record_tag') }
  let!(:nico_tag) { create(:tag, :nico, name: 'nico:version_record_tag') }

  it 'makes TagVersion read only after create' do
    version = TagVersion.create!(
      tag: tag,
      version_no: 1,
      event_type: 'create',
      name: tag.name,
      category: tag.category,
      aliases: '',
      parent_tag_ids: '',
      created_at: Time.current,
      created_by_user: nil
    )

    expect {
      version.update!(name: 'changed')
    }.to raise_error(ActiveRecord::ReadOnlyRecord)
  end

  it 'prevents TagVersion destroy' do
    version = TagVersion.create!(
      tag: tag,
      version_no: 1,
      event_type: 'create',
      name: tag.name,
      category: tag.category,
      aliases: '',
      parent_tag_ids: '',
      created_at: Time.current,
      created_by_user: nil
    )

    expect {
      version.destroy!
    }.to raise_error(ActiveRecord::ReadOnlyRecord)
  end

  it 'makes NicoTagVersion read only after create' do
    version = NicoTagVersion.create!(
      tag: nico_tag,
      version_no: 1,
      event_type: 'create',
      name: nico_tag.name,
      linked_tags: '',
      created_at: Time.current,
      created_by_user: nil
    )

    expect {
      version.update!(name: 'nico:changed')
    }.to raise_error(ActiveRecord::ReadOnlyRecord)
  end

  it 'prevents NicoTagVersion destroy' do
    version = NicoTagVersion.create!(
      tag: nico_tag,
      version_no: 1,
      event_type: 'create',
      name: nico_tag.name,
      linked_tags: '',
      created_at: Time.current,
      created_by_user: nil
    )

    expect {
      version.destroy!
    }.to raise_error(ActiveRecord::ReadOnlyRecord)
  end
end
