spec/models/ahoy/data_source_spec.rb

Summary

Maintainability
A
1 hr
Test Coverage
require 'rails_helper'

describe Ahoy::DataSource do
  describe '#build' do
    before do
      time_1 = Time.zone.local(2015, 01, 01)
      time_2 = Time.zone.local(2015, 01, 02)
      time_3 = Time.zone.local(2015, 01, 03)

      create :ahoy_event, name: 'foo', time: time_1
      create :ahoy_event, name: 'foo', time: time_1
      create :ahoy_event, name: 'foo', time: time_2
      create :ahoy_event, name: 'bar', time: time_1
      create :ahoy_event, name: 'bar', time: time_3
      create :ahoy_event, name: 'bar', time: time_3
    end

    it 'works without data sources' do
      ds = described_class.new
      expect(ds.build).to eq x: []
    end

    it 'works with single data sources' do
      ds = described_class.new
      ds.add 'foo', Ahoy::Event.where(name: 'foo').group_by_day(:time).count
      expect(ds.build).to eq :x => ["2015-01-01", "2015-01-02"], "foo" => [2, 1]
    end

    it 'combines data sources' do
      ds = described_class.new
      ds.add 'foo', Ahoy::Event.where(name: 'foo').group_by_day(:time).count
      ds.add 'bar', Ahoy::Event.where(name: 'bar').group_by_day(:time).count
      expect(ds.build).to eq :x => ["2015-01-01", "2015-01-02", "2015-01-03"], "foo" => [2, 1, 0], "bar" => [1, 0, 2]
    end
  end
end