Sha256: 3ae845071ec618c044f161c9eb7f78df08a6dd0c7493fcc93421b6299a05d65b

Contents?: true

Size: 1.12 KB

Versions: 3

Compression:

Stored size: 1.12 KB

Contents

require 'spec_helper'

describe ActiveRecord::Relation do
  describe '#percentage' do
    let(:error_number) { 1 }
    let(:success_number) { 1 }

    before do
      Document.all.each(&:destroy)
      error_number.times { Document.create(status: :error) }
      success_number.times { Document.create(status: :success) }
    end

    context 'when there are 50% documents with error' do
      it do
        expect(Document.all.percentage(status: :error)).to eq(0.5)
      end
    end

    context 'when there are 25% documents with error' do
      let(:success_number) { 3 }

      it do
        expect(Document.all.percentage(status: :error)).to eq(0.25)
      end
    end

    context 'when passing a sub scope' do
      before do
        Document.create(status: :on_going)
      end

      it 'does the math inside the scope' do
        expect(Document.where(status: [:error, :success]).percentage(status: :error)).to eq(0.5)
      end
    end

    context 'when passing a scope name instead of query' do
      it 'does the math inside the scope' do
        expect(Document.all.percentage(:with_error)).to eq(0.5)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
bidu-house-0.1.2 spec/lib/active_record/relation_spec.rb
bidu-house-0.1.1 spec/lib/active_record/relation_spec.rb
bidu-house-0.1.0 spec/lib/active_record/relation_spec.rb