Sha256: 2d9f8ef5fac310e29cd217ea7d20bfcf3be1b2fd25f0f6f459200e56f5d19274

Contents?: true

Size: 1.5 KB

Versions: 3

Compression:

Stored size: 1.5 KB

Contents

require "spec_helper"

describe ActiveReporter::Serializer::HashTable do
  let(:report_model) do
    Class.new(ActiveReporter::Report) do
      report_on :Post
      number_dimension :likes
      time_dimension :created_at
      category_dimension :title
      count_aggregator :post_count
      sum_aggregator :likes_count, attribute: :likes
    end
  end

  let(:report) do
    report_model.new(
      aggregators: [:post_count, :likes_count],
      groupers: %i[title created_at],
      dimensions: { created_at: { bin_width: "1 day" } }
    )
  end

  let(:hash_table) do
    ActiveReporter::Serializer::HashTable.new(report)
  end

  before do
    create(:post, created_at: "2016-01-01", likes: 2, title: "A")
    create(:post, created_at: "2016-01-01", likes: 2, title: "A")
    create(:post, created_at: "2016-01-01", likes: 1, title: "B")
    create(:post, created_at: "2016-01-02", likes: 1, title: "A")
  end

  describe "#report" do
    it "builds report" do
      expect(hash_table.table).to eq [
        { title: "Title", created_at: "Created at", post_count: "Post count", likes_count: "Likes count" },
        { title: "A", created_at: "2016-01-01 00:00:00 UTC", post_count: "2", likes_count: "4" },
        { title: "A", created_at: "2016-01-02 00:00:00 UTC", post_count: "1", likes_count: "1" },
        { title: "B", created_at: "2016-01-01 00:00:00 UTC", post_count: "1", likes_count: "1" },
        { title: "B", created_at: "2016-01-02 00:00:00 UTC", post_count: "0", likes_count: "0" }
      ]
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
active_reporter-0.7.1 spec/active_reporter/serializer/hash_table_spec.rb
active_reporter-0.6.5 spec/active_reporter/serializer/hash_table_spec.rb
active_reporter-0.6.4 spec/active_reporter/serializer/hash_table_spec.rb