RSpec.describe Metasploit::Model::Association::Reflection, type: :model do
  context 'validations' do
    it { is_expected.to validate_presence_of :model }
    it { is_expected.to validate_presence_of :name }
    it { is_expected.to validate_presence_of :class_name }
  end

  context '#klass' do
    subject(:klass) do
      reflection.klass
    end


    let(:class_name) do
      FactoryBot.generate :metasploit_model_association_reflection_class_name
    end

    let(:class_name_class) do
      Class.new
    end

    let(:model) do
      Class.new
    end

    let(:name) do
      FactoryBot.generate :metasploit_model_association_reflection_name
    end

    let(:reflection) do
      described_class.new(
          :model => model,
          :name => name,
          :class_name => class_name
      )
    end

    before(:example) do
      stub_const(class_name, class_name_class)
    end

    it 'should return Class with Class#name #class_name' do
      expect(klass).to eq(class_name_class)
    end
  end
end