Sha256: 80a1c55c76a19346639f0b63f4a3f11ae295a162d8e855e203cca1afddffabc0

Contents?: true

Size: 1.71 KB

Versions: 2

Compression:

Stored size: 1.71 KB

Contents

require 'rails_helper'
require 'sorbet-rails/model_rbi_formatter'

RSpec.describe SorbetRails::ModelRbiFormatter do
  before(:all) do
    SorbetRails::Utils.rails_eager_load_all!
  end

  it 'does not throw an error when given an abstract class' do
    formatter = SorbetRails::ModelRbiFormatter.new(Potion, Set.new(['Potion', 'Wizard']))
    expect_match_file(
      formatter.generate_rbi,
      'expected_potion.rbi',
    )
  end

  it 'generates correct rbi file for Wizard' do
    class_set = Set.new(['Wizard', 'Wand', 'SpellBook', 'School'])
    if Object.const_defined?('ActiveStorage::Attachment')
      class_set << 'ActiveStorage::Attachment'
    end
    if Object.const_defined?('ActiveStorage::Blob')
      class_set << 'ActiveStorage::Blob'
    end
    formatter = SorbetRails::ModelRbiFormatter.new(Wizard, class_set)
    expect_match_file(
      formatter.generate_rbi,
      'expected_wizard.rbi',
    )
  end

  it 'generates strict belongs_to and generate overridden methods' do
    formatter = SorbetRails::ModelRbiFormatter.new(Wand, Set.new(['Wizard', 'Wand', 'SpellBook']))
    expect_match_file(
      formatter.generate_rbi,
      'expected_wand.rbi',
    )
  end

  context 'there is a hidden model' do
    it 'fallbacks to use ActiveRecord::Relation' do
      class_set = Set.new(['Wizard', 'Wand'])
      if Object.const_defined?('ActiveStorage::Attachment')
        class_set << 'ActiveStorage::Attachment'
      end
      if Object.const_defined?('ActiveStorage::Blob')
        class_set << 'ActiveStorage::Blob'
      end
        formatter = SorbetRails::ModelRbiFormatter.new(Wizard, class_set)
      expect_match_file(
        formatter.generate_rbi,
        'expected_wizard_wo_spellbook.rbi',
      )
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
sorbet-rails-0.6.0 spec/model_rbi_formatter_spec.rb
sorbet-rails-0.5.9.1 spec/model_rbi_formatter_spec.rb