Newer
Older
dmpopidor / spec / models / stat_joined_user_spec.rb
@Jose Lloret Jose Lloret on 2 Sep 2018 1 KB rebased onto development
require 'rails_helper'

RSpec.describe StatJoinedUser, type: :model do
  before(:example) do
    @org = FactoryBot.create(:org)
  end

  describe '.monthly_range' do
    context 'when org is missing' do
      it 'raises ArgumentError' do
        expect do
          described_class.monthly_range
        end.to raise_error(ArgumentError)
      end
    end
    it 'returns matching instances' do
      start_date = Date.new(2018, 04, 30)
      end_date = Date.new(2018, 05, 31)
      june = FactoryBot.create(:stat_joined_user, date: Date.new(2018, 06, 30), org: @org)
      may = FactoryBot.create(:stat_joined_user, date: end_date, org: @org)
      april = FactoryBot.create(:stat_joined_user, date: start_date, org: @org)

      april_to_may = described_class.monthly_range(org: @org, start_date: start_date, end_date: end_date)

      expect(april_to_may).to include(april, may)
    end
  end

  describe '.to_csv' do
    context 'when no instances' do
      it 'returns empty' do
        csv = described_class.to_csv([])

        expect(csv).to be_empty
      end
    end
    context 'when instances' do
      let(:org) { FactoryBot.create(:org) }
      it 'returns instances in a comma-separated row' do
        may = FactoryBot.create(:stat_joined_user, date: Date.new(2018, 05, 31), org: org, count: 20)
        june = FactoryBot.create(:stat_joined_user, date: Date.new(2018, 06, 30), org: org, count: 10)
        data = [may, june]

        csv = described_class.to_csv(data)

        expected_csv = <<~HERE
          date,count
          2018-05-31,20
          2018-06-30,10
        HERE
        expect(csv).to eq(expected_csv)
      end
    end
  end
end