spec/mongoid/report_spec.rb in mongoid-report-0.1.6 vs spec/mongoid/report_spec.rb in mongoid-report-0.1.7
- old
+ new
@@ -1,111 +1,148 @@
require 'spec_helper'
describe Mongoid::Report do
- describe '.aggregation_field' do
+ describe '.column' do
+ let(:report_klass) do
+ Class.new do
+ include Mongoid::Report
+ column :field1, for: Model
+ end
+ end
+
it 'defines aggegration settings' do
- expect(Report1).to be_respond_to(:settings)
+ expect(report_klass).to be_respond_to(:settings)
end
it 'defines aggregation field for specific model to make queries' do
- fields = Report1.fields(Model)
- expect(fields).to eq({ field1: :field1 })
+ fields = report_klass.fields(Model)
+ expect(fields).to eq({ 'field1' => 'field1' })
end
end
- describe '.attach_to' do
+ describe '.attach_to' do
+ let(:report_klass) do
+ Class.new do
+ include Mongoid::Report
+ attach_to Model do
+ column :field1
+ end
+ end
+ end
+
it 'defines method in report class to attach report to the model' do
- expect(Report2).to be_respond_to(:attach_to)
+ expect(report_klass).to be_respond_to(:attach_to)
end
it 'defines field in terms of attached model' do
- fields = Report2.fields(Model)
- expect(fields).to eq({ field1: :field1 })
+ fields = report_klass.fields(Model)
+ expect(fields).to eq({ 'field1' => 'field1' })
end
end
describe '.group_by' do
+ let(:report_klass1) do
+ Class.new do
+ include Mongoid::Report
+ group_by :day, for: Model
+ column :field1, for: Model
+ end
+ end
+
it 'defines group by method as class method' do
- expect(Report3).to be_respond_to(:group_by)
+ expect(report_klass1).to be_respond_to(:group_by)
end
it 'stores group by settings under report class' do
- group_by_settings = Report3.settings[Model][:group_by]
- expect(group_by_settings).to eq([:day])
+ group_by_settings = report_klass1.settings[Model][:group_by]
+ expect(group_by_settings).to eq(['day'])
end
- it 'defines groups in terms of attached model' do
- groups = Report4.groups(Model)
- expect(groups).to eq([:day])
+ let(:report_klass2) do
+ Class.new do
+ include Mongoid::Report
+ attach_to Model do
+ group_by :day
+ column :field1
+ end
+ end
end
- end
- class Report6
- include Mongoid::Report
-
- attach_to Model, as: 'example1' do
- aggregation_field :field1
+ it 'defines groups in terms of attached model' do
+ groups = report_klass2.groups(Model)
+ expect(groups).to eq(['day'])
end
end
describe '.as' do
+ let(:report_klass) do
+ Class.new do
+ include Mongoid::Report
+ attach_to Model, as: 'example1' do
+ column :field1
+ end
+ end
+ end
+
it 'creates settings with "as" name' do
- expect(Report6.settings).to have_key('example1')
+ expect(report_klass.settings).to have_key('example1')
end
end
- class Report7
- include Mongoid::Report
+ describe '.report' do
+ let(:report_klass) do
+ Class.new do
+ include Mongoid::Report
+ report 'example' do
+ attach_to Model, as: 'model1' do
+ column :field1
+ end
- report 'example' do
- attach_to Model, as: 'model1' do
- aggregation_field :field1
+ attach_to Model do
+ column :field1
+ end
+ end
end
-
- attach_to Model do
- aggregation_field :field1
- end
end
- end
- describe '.report' do
it 'creates settings with report-<attached-model-name' do
- expect(Report7.settings).to have_key('example-model1')
- expect(Report7.settings).to have_key("example-#{Model.collection.name}")
+ expect(report_klass.settings).to have_key('example-model1')
+ expect(report_klass.settings).to have_key("example-#{Model.collection.name}")
end
end
- class Report10
- include Mongoid::Report
+ describe '.column `as` option' do
+ let(:report_klass) do
+ Class.new do
+ include Mongoid::Report
+ column :field1, for: Model, as: 'field-name'
+ end
+ end
- aggregation_field :field1, for: Model, as: 'field-name'
- end
-
- describe '.aggregation_field `as` option' do
it 'creates settings with report-<attached-model-name' do
- expect(Report10.fields(Model).keys).to eq([:field1])
- expect(Report10.fields(Model).values).to eq(['field-name'])
+ expect(report_klass.fields(Model).keys).to eq(['field1'])
+ expect(report_klass.fields(Model).values).to eq(['field-name'])
end
end
describe 'two report classes' do
it 'should have different settings' do
ReportKlass1 = Class.new do
include Mongoid::Report
attach_to Model do
- aggregation_field :field1
+ column :field1
end
end
ReportKlass2 = Class.new do
include Mongoid::Report
attach_to Model do
- aggregation_field :field2
+ column :field2
end
end
expect(ReportKlass1.settings).not_to eq(ReportKlass2.settings)
end
@@ -114,16 +151,16 @@
include Mongoid::Report
end
class ReportKlass1 < ReportKlass
attach_to Model do
- aggregation_field :field1
+ column :field1
end
end
class ReportKlass2 < ReportKlass
attach_to Model do
- aggregation_field :field2
+ column :field2
end
end
it 'should have different settings for inherited classes' do
expect(ReportKlass1.fields(Model)).not_to eq(ReportKlass2.fields(Model))