kalibro_module_helper_spec.rb 1.55 KB
require 'rails_helper'

describe KalibroModulesHelper, :type => :helper do
  describe 'sort_by_granularity_and_name' do
    let(:package) { FactoryGirl.build(:module_result, kalibro_module: FactoryGirl.build(:kalibro_module_package)) }
    let(:class_b) { FactoryGirl.build(:module_result, kalibro_module: FactoryGirl.build(:kalibro_module_class, name: 'b')) }
    let(:class_a) { FactoryGirl.build(:module_result, kalibro_module: FactoryGirl.build(:kalibro_module_class, name: 'a')) }
    let(:function) { FactoryGirl.build(:module_result, kalibro_module: FactoryGirl.build(:kalibro_module_function, name: 'c')) }
    let(:method) { FactoryGirl.build(:module_result, kalibro_module: FactoryGirl.build(:kalibro_module_method, name: 'm')) }

    it 'is expected to order the ModuleResults by the Granularity first and then the KalibroModule name' do
      unordered_modules = [class_b, method, package, class_a, function]
      expect(helper.sort_by_granularity_and_name(unordered_modules)).to eq([package, class_a, class_b, method, function])
    end
  end

  describe 'ComparableGranularity' do
    describe 'methods' do
      describe '<=>' do
        subject { KalibroModulesHelper::ComparableGranularity.new(:FUNCTION) }
        let(:klass) { KalibroModulesHelper::ComparableGranularity.new(:CLASS) }
        let(:method) { KalibroModulesHelper::ComparableGranularity.new(:METHOD) }

        it 'is expected to place FUNCTION below all granularities' do
          expect(subject <=> klass).to eq(-1)
          expect(subject <=> method).to eq(-1)
        end
      end
    end
  end
end