require 'rails_helper'

describe Ahoy::DataSource do
  describe '#build' do
    before :each do
      time_1 = DateTime.parse("2015-01-01")
      time_2 = DateTime.parse("2015-01-02")
      time_3 = DateTime.parse("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 'should work without data sources' do
      ds = Ahoy::DataSource.new
      expect(ds.build).to eq x: []
    end

    it 'should work with single data sources' do
      ds = Ahoy::DataSource.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 'should combine data sources' do
      ds = Ahoy::DataSource.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
