mongoid-report 0.1.9 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,8 +5,9 @@ describe Mongoid::Report do
5
5
  describe '.column' do
6
6
  let(:report_klass) do
7
7
  Class.new do
8
+ def self.name ; 'report-klass' ; end
8
9
  include Mongoid::Report
9
- column :field1, for: Model
10
+ column :field1, collection: Model
10
11
  end
11
12
  end
12
13
 
@@ -15,15 +16,16 @@ describe Mongoid::Report do
15
16
  end
16
17
 
17
18
  it 'defines aggregation field for specific model to make queries' do
18
- fields = report_klass.fields(Model)
19
- expect(fields).to eq({ 'field1' => 'field1' })
19
+ fields = report_klass.settings['report-klass'][:reports]['models'][:fields]
20
+ expect(fields).to eq(['field1'])
20
21
  end
21
22
  end
22
23
 
23
- describe '.attach_to' do
24
+ describe '.attach_to' do
24
25
  let(:report_klass) do
25
26
  Class.new do
26
27
  include Mongoid::Report
28
+ def self.name ; 'report-klass' ; end
27
29
  attach_to Model do
28
30
  column :field1
29
31
  end
@@ -35,8 +37,8 @@ describe Mongoid::Report do
35
37
  end
36
38
 
37
39
  it 'defines field in terms of attached model' do
38
- fields = report_klass.fields(Model)
39
- expect(fields).to eq({ 'field1' => 'field1' })
40
+ fields = report_klass.settings['report-klass'][:reports]['models'][:fields]
41
+ expect(fields).to eq(['field1'])
40
42
  end
41
43
  end
42
44
 
@@ -44,8 +46,9 @@ describe Mongoid::Report do
44
46
  let(:report_klass1) do
45
47
  Class.new do
46
48
  include Mongoid::Report
47
- group_by :day, for: Model
48
- column :field1, for: Model
49
+ def self.name ; 'report-klass' ; end
50
+ group_by :day, collection: Model
51
+ column :field1, collection: Model
49
52
  end
50
53
  end
51
54
 
@@ -54,13 +57,14 @@ describe Mongoid::Report do
54
57
  end
55
58
 
56
59
  it 'stores group by settings under report class' do
57
- group_by_settings = report_klass1.settings[Model][:group_by]
58
- expect(group_by_settings).to eq(['day'])
60
+ settings = report_klass1.settings['report-klass'][:reports]['models'][:group_by]
61
+ expect(settings).to eq(['day'])
59
62
  end
60
63
 
61
64
  let(:report_klass2) do
62
65
  Class.new do
63
66
  include Mongoid::Report
67
+ def self.name ; 'report-klass' ; end
64
68
  attach_to Model do
65
69
  group_by :day
66
70
  column :field1
@@ -69,8 +73,8 @@ describe Mongoid::Report do
69
73
  end
70
74
 
71
75
  it 'defines groups in terms of attached model' do
72
- groups = report_klass2.groups(Model)
73
- expect(groups).to eq(['day'])
76
+ settings = report_klass2.settings['report-klass'][:reports]['models'][:group_by]
77
+ expect(settings).to eq(['day'])
74
78
  end
75
79
  end
76
80
 
@@ -78,6 +82,7 @@ describe Mongoid::Report do
78
82
  let(:report_klass) do
79
83
  Class.new do
80
84
  include Mongoid::Report
85
+ def self.name ; 'report-klass' ; end
81
86
  attach_to Model, as: 'example1' do
82
87
  column :field1
83
88
  end
@@ -85,7 +90,7 @@ describe Mongoid::Report do
85
90
  end
86
91
 
87
92
  it 'creates settings with "as" name' do
88
- expect(report_klass.settings).to have_key('example1')
93
+ expect(report_klass.settings['report-klass'][:reports]).to have_key('example1')
89
94
  end
90
95
  end
91
96
 
@@ -106,45 +111,33 @@ describe Mongoid::Report do
106
111
  end
107
112
 
108
113
  it 'creates settings with report-<attached-model-name' do
109
- expect(report_klass.settings).to have_key('example-model1')
110
- expect(report_klass.settings).to have_key("example-#{Model.collection.name}")
114
+ reports = report_klass.settings['example'][:reports].keys
115
+ expect(reports).to include('model1')
116
+ expect(reports).to include('models')
111
117
  end
112
118
  end
113
119
 
114
- describe '.column `as` option' do
115
- let(:report_klass) do
116
- Class.new do
117
- include Mongoid::Report
118
- column :field1, for: Model, as: 'field-name'
119
- end
120
- end
121
-
122
- it 'creates settings with report-<attached-model-name' do
123
- expect(report_klass.fields(Model).keys).to eq(['field1'])
124
- expect(report_klass.fields(Model).values).to eq(['field-name'])
125
- end
126
- end
127
-
128
-
129
120
  describe 'two report classes' do
130
121
  it 'should have different settings' do
131
- ReportKlass1 = Class.new do
122
+ report_klass1 = Class.new do
132
123
  include Mongoid::Report
124
+ def self.name ; 'report-klass1' ; end
133
125
 
134
126
  attach_to Model do
135
127
  column :field1
136
128
  end
137
129
  end
138
130
 
139
- ReportKlass2 = Class.new do
131
+ report_klass2 = Class.new do
140
132
  include Mongoid::Report
133
+ def self.name ; 'report-klass2' ; end
141
134
 
142
135
  attach_to Model do
143
136
  column :field2
144
137
  end
145
138
  end
146
139
 
147
- expect(ReportKlass1.settings).not_to eq(ReportKlass2.settings)
140
+ expect(report_klass1.settings).not_to eq(report_klass2.settings)
148
141
  end
149
142
 
150
143
  class ReportKlass
@@ -164,7 +157,38 @@ describe Mongoid::Report do
164
157
  end
165
158
 
166
159
  it 'should have different settings for inherited classes' do
167
- expect(ReportKlass1.fields(Model)).not_to eq(ReportKlass2.fields(Model))
160
+ settings1 = ReportKlass1.settings['ReportKlass1'][:reports]['models']
161
+ settings2 = ReportKlass2.settings['ReportKlass2'][:reports]['models']
162
+ expect(settings1).not_to eq(settings2)
163
+ end
164
+ end
165
+
166
+ describe 'empty matchs' do
167
+ it 'should work fine with passed empty match value' do
168
+ report_klass = Class.new do
169
+ include Mongoid::Report
170
+
171
+ report 'example' do
172
+ attach_to 'models' do
173
+ match field1: {}
174
+ match field2: 1
175
+ match field3: { '$in' => [1,2,3] }
176
+ column :field1, :field2, :field3
177
+ end
178
+ end
179
+ end
180
+
181
+ Model.create(field1: 1, field2: 2, field3: 1)
182
+ Model.create(field1: 1, field2: 1, field3: 2)
183
+ Model.create(field1: 1, field2: 1, field3: 4)
184
+
185
+ report = report_klass.new
186
+ scope = report.aggregate_for('example', 'models').all
187
+
188
+ expect(scope.rows.size).to eq(1)
189
+ expect(scope.rows[0]['field1']).to eq(1)
190
+ expect(scope.rows[0]['field2']).to eq(1)
191
+ expect(scope.rows[0]['field3']).to eq(2)
168
192
  end
169
193
  end
170
194
  end
data/spec/spec_helper.rb CHANGED
@@ -16,6 +16,8 @@ RSpec.configure do |config|
16
16
 
17
17
  config.mock_with :rspec
18
18
 
19
+ config.filter_run_excluding long: true unless ENV['ALL']
20
+
19
21
  config.after(:each) do
20
22
  Mongoid.purge!
21
23
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid-report
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexandr Korsak
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-10 00:00:00.000000000 Z
11
+ date: 2014-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mongoid
@@ -73,8 +73,13 @@ files:
73
73
  - Rakefile
74
74
  - lib/mongoid/report.rb
75
75
  - lib/mongoid/report/attach_proxy.rb
76
+ - lib/mongoid/report/batches.rb
76
77
  - lib/mongoid/report/collection.rb
78
+ - lib/mongoid/report/collections.rb
77
79
  - lib/mongoid/report/config.rb
80
+ - lib/mongoid/report/input.rb
81
+ - lib/mongoid/report/merger.rb
82
+ - lib/mongoid/report/output.rb
78
83
  - lib/mongoid/report/queries_builder.rb
79
84
  - lib/mongoid/report/report_proxy.rb
80
85
  - lib/mongoid/report/scope.rb
@@ -82,9 +87,14 @@ files:
82
87
  - lib/mongoid/report/version.rb
83
88
  - mongoid-report.gemspec
84
89
  - spec/mongoid/report/aggregation_spec.rb
90
+ - spec/mongoid/report/attach_to_spec.rb
85
91
  - spec/mongoid/report/collection_spec.rb
86
92
  - spec/mongoid/report/column_spec.rb
87
93
  - spec/mongoid/report/config_spec.rb
94
+ - spec/mongoid/report/dynamic_attach_to_spec.rb
95
+ - spec/mongoid/report/integration_spec.rb
96
+ - spec/mongoid/report/module_configuration_spec.rb
97
+ - spec/mongoid/report/out_spec.rb
88
98
  - spec/mongoid/report/queries_builder_spec.rb
89
99
  - spec/mongoid/report/set_spec.rb
90
100
  - spec/mongoid/report/summary_spec.rb
@@ -118,9 +128,14 @@ specification_version: 4
118
128
  summary: Easily build mongoid reports using aggregation framework
119
129
  test_files:
120
130
  - spec/mongoid/report/aggregation_spec.rb
131
+ - spec/mongoid/report/attach_to_spec.rb
121
132
  - spec/mongoid/report/collection_spec.rb
122
133
  - spec/mongoid/report/column_spec.rb
123
134
  - spec/mongoid/report/config_spec.rb
135
+ - spec/mongoid/report/dynamic_attach_to_spec.rb
136
+ - spec/mongoid/report/integration_spec.rb
137
+ - spec/mongoid/report/module_configuration_spec.rb
138
+ - spec/mongoid/report/out_spec.rb
124
139
  - spec/mongoid/report/queries_builder_spec.rb
125
140
  - spec/mongoid/report/set_spec.rb
126
141
  - spec/mongoid/report/summary_spec.rb