Sha256: fc67f1193a04a3bf2068269211caa2dca129d21271bc1048fc30ce56b84e57ed

Contents?: true

Size: 1.72 KB

Versions: 2

Compression:

Stored size: 1.72 KB

Contents

require "spec_helper"

describe ActiveReporter::Dimension::Enum do
  let(:report_model) { :post }
  let(:filter_values) { nil }
  let(:status_dimension_options) { { only: filter_values }.compact }
  let(:report) { OpenStruct.new(params: { dimensions: { status: status_dimension_options } }, groupers: [:status, :category], raw_data: raw_data) }

  let(:raw_data) { {
    ["published", "post_count"] => 5, ["published", "post_total"] => 500.00, ["published", "post_average"] => 100.00,
    ["archived", "post_count"] => 7, ["archived", "post_total"] => 530.25, ["archived", "post_average"] => 75.75,
  } }

  let(:enum_values) { { "draft" => 0, "unpublished" => 1, "published" => 2, "archived" => 3 } }
  let(:group_values) { ["published", "archived"] }
  let(:all_values) { enum_values.keys.unshift(nil) }
  
  let(:status_dimension) do
    dimension = ActiveReporter::Dimension::Enum.new(:status, report, { model: report_model, only: filter_values })
    allow(dimension).to receive(:enum_values).and_return(enum_values)
    report.groupers[report.groupers.index(:status)] = dimension if report.groupers.include?(:status)

    dimension
  end

  describe "#group_values" do
    context "when filtering" do
      let(:filter_values) { ["unpublished", "published", "archived"] }

      it "returns filter_values" do
        expect(status_dimension).to be_filtering
        expect(status_dimension.group_values).to eq filter_values
      end
    end

    it "returns group enum values" do
      expect(status_dimension).not_to be_filtering
      expect(status_dimension.group_values).to match group_values
    end
  end

  describe "#all_values" do
    it "returns model enum values" do
      expect(status_dimension.all_values).to match all_values
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
active_reporter-0.6.5 spec/active_reporter/dimension/enum_spec.rb
active_reporter-0.6.4 spec/active_reporter/dimension/enum_spec.rb