mongoid_rating 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3619dc0eda67a2cfd21622ac78b7100d788be907
4
- data.tar.gz: 3c000c1c31a4cefba53f948934fdcf568cb73326
3
+ metadata.gz: 72536149cfcd00af58a019ae87fd58ff6ef7df12
4
+ data.tar.gz: 71e4a9e92c6fadb02837169e164210e6e0ce9f39
5
5
  SHA512:
6
- metadata.gz: edfbbd674d7a882ba979593ffb53d7e4d6d5a31636f0a268cc0c527ecd67edd14735b22802d346738063335e700387ba0e09d37223d0df296b85bfa49f784e8c
7
- data.tar.gz: de68bfcc7cac056ae41782164acecbe61439359a08c0d4784b10a8f50c2bbac3743955cd59c0e66f75eb7aa8f1cb63121fb9bd4865e82c69e0bf328e621c88ec
6
+ metadata.gz: e626fef6faa5f24f34aaece3536875a5342f365b3772a5e6010ae177dddaf33f76c433b7612cc7c3c3349437fe16fa8d69eba9d0a84acbac815018c4bb806bbc
7
+ data.tar.gz: b10bba1aeaaf6c92dc291d4407548e1a804dfa5f05d2d3144d4a1a241c12afe56eb6b935919de7f808b53e7832968423364ce1d22f4881c13b31b48fec545998
data/.travis.yml CHANGED
@@ -8,15 +8,8 @@ rvm:
8
8
  - 1.9.3
9
9
  - 2.0.0
10
10
  - jruby-19mode
11
- - rbx-19mode
12
11
 
13
12
  gemfile:
14
13
  - Gemfile
15
- - gemfiles/mongoid-3.0.gemfile
16
- - gemfiles/mongoid-3.1.gemfile
17
14
  - gemfiles/mongoid-4.0.gemfile
18
15
 
19
- matrix:
20
- exclude:
21
- - rvm: rbx-19mode
22
- gemfile: gemfiles/mongoid-4.0.gemfile
data/README.md CHANGED
@@ -34,6 +34,8 @@ make model rateable:
34
34
  class Post
35
35
  include Mongoid::Document
36
36
  rateable :rate
37
+ # needed if you use rails_admin so it would not complain
38
+ accepts_nested_attributes_for :rate_data
37
39
  end
38
40
  ps = Post.create()
39
41
  user = User.create()
@@ -57,6 +59,7 @@ Check if user rated:
57
59
 
58
60
  Scopes:
59
61
 
62
+ Post.highest_rate
60
63
  Post.rate_in(2..5)
61
64
  Post.rate_in(2..5).first
62
65
  => #<Post rate_count: 1, rate_sum: 5.0, rate_average: 5.0>
@@ -73,7 +76,7 @@ Posts rated by user:
73
76
  (c) 2013 glebtv, MIT license
74
77
 
75
78
  Partially based on
76
- (mongoid-rateable)[https://github.com/proton/mongoid_rateable]
79
+ [mongoid-rateable](https://github.com/proton/mongoid_rateable)
77
80
  which is Copyright (c) 2011 Peter Savichev (proton), MIT license
78
81
 
79
82
  ## Contributing
@@ -47,6 +47,10 @@ module Mongoid
47
47
  scope :#{field}_in, ->(range) {
48
48
  where(#{savg}.gte => range.begin, #{savg}.lte => range.end)
49
49
  }
50
+
51
+ scope :by_#{field}, -> {
52
+ order_by([#{savg}, :desc])
53
+ }
50
54
  scope :highest_#{field}, -> {
51
55
  where(#{savg}.ne => nil).order_by([#{savg}, :desc])
52
56
  }
@@ -1,3 +1,3 @@
1
1
  module MongoidRating
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
data/spec/article_spec.rb CHANGED
@@ -6,212 +6,218 @@ describe Article do
6
6
  @bob = User.create :name => "Bob"
7
7
  @sally = User.create :name => "Sally"
8
8
  @alice = User.create :name => "Alice"
9
- @article = Article.create :name => "Article"
10
- @article1 = Article.create :name => "Article 1"
11
- @article2 = Article.create :name => "Article 2"
12
9
  end
13
10
 
14
- subject { @article }
15
- it { should respond_to :overall }
16
- it { should respond_to :overall! }
17
- it { should respond_to :unoverall! }
18
- it { should respond_to :did_overall? }
19
- it { should respond_to :overall_average }
20
- it { should respond_to :overall_data }
21
- it { should respond_to :overall_by }
22
-
23
- describe "#overall_values" do
24
- it "should be an array with overall values" do
25
- @article.overall_values.should be_an_instance_of Array
26
- @article.overall! 1, @bob
27
- @article.overall_values.should eq [1]
11
+ context 'basic' do
12
+ before(:each) do
13
+ @article = Article.create :name => "Article"
14
+ @article1 = Article.create :name => "Article 1"
15
+ @article2 = Article.create :name => "Article 2"
28
16
  end
29
- end
30
17
 
31
- context "when overall" do
32
- before (:each) do
33
- @article.overall! 1, @bob
18
+ subject { @article }
19
+ it { should respond_to :overall }
20
+ it { should respond_to :overall! }
21
+ it { should respond_to :unoverall! }
22
+ it { should respond_to :did_overall? }
23
+ it { should respond_to :overall_average }
24
+ it { should respond_to :overall_data }
25
+ it { should respond_to :overall_by }
26
+
27
+ describe "#overall_values" do
28
+ it "should be an array with overall values" do
29
+ @article.overall_values.should be_an_instance_of Array
30
+ @article.overall! 1, @bob
31
+ @article.overall_values.should eq [1]
32
+ end
34
33
  end
35
34
 
36
- describe "#overall" do
37
- it "should track #overall properly" do
38
- @article.overall! 1, @sally
39
- @article.overall_count.should eql 2
40
- @article.overall.should eql 1.0
35
+ context "when overall" do
36
+ before (:each) do
37
+ @article.overall! 1, @bob
41
38
  end
42
39
 
43
- it "should not mark fields as dirty" do
44
- @article.overall_count_changed?.should be_false
45
- @article.overall_sum_changed?.should be_false
46
- @article.overall_average_changed?.should be_false
47
- end
40
+ describe "#overall" do
41
+ it "should track #overall properly" do
42
+ @article.overall! 1, @sally
43
+ @article.overall_count.should eql 2
44
+ @article.overall.should eql 1.0
45
+ end
48
46
 
49
- it "should limit #overalls by user properly" do
50
- @article.overall! 5, @bob
51
- @article.overall.should eql 5.0
52
- end
47
+ it "should not mark fields as dirty" do
48
+ @article.overall_count_changed?.should be_false
49
+ @article.overall_sum_changed?.should be_false
50
+ @article.overall_average_changed?.should be_false
51
+ end
53
52
 
54
- context "when overall_value in rating range" do
55
- it { expect { @article.overall 1, @sally }.not_to raise_error }
56
- end
53
+ it "should limit #overalls by user properly" do
54
+ @article.overall! 5, @bob
55
+ @article.overall.should eql 5.0
56
+ end
57
57
 
58
- context "when overall_value not in rating range" do
59
- it { expect { @article.overall 17, @sally }.to raise_error() }
60
- it { expect { @article.overall -17, @sally }.to raise_error() }
61
- end
58
+ context "when overall_value in rating range" do
59
+ it { expect { @article.overall 1, @sally }.not_to raise_error }
60
+ end
62
61
 
63
- describe "when using positive values" do
64
- let(:num) { rand(1..5) }
65
- let(:exp) { ((num + 1) / 2.0) - 1 }
66
- it { expect { @article.overall num, @sally }.to change { @article.overall }.by(exp) }
67
- end
62
+ context "when overall_value not in rating range" do
63
+ it { expect { @article.overall 17, @sally }.to raise_error() }
64
+ it { expect { @article.overall -17, @sally }.to raise_error() }
65
+ end
68
66
 
69
- describe "when using negative values" do
70
- let(:num) { -rand(1..5) }
71
- let(:exp) { ((num + 1) / 2.0) - 1 }
72
- it { expect { @article.overall num, @sally }.to change { @article.overall }.by(exp) }
73
- end
74
- end
67
+ describe "when using positive values" do
68
+ let(:num) { rand(1..5) }
69
+ let(:exp) { ((num + 1) / 2.0) - 1 }
70
+ it { expect { @article.overall num, @sally }.to change { @article.overall }.by(exp) }
71
+ end
75
72
 
76
- describe "#overall_by?" do
77
- describe "for Bob" do
78
- specify { @article.overall_by?(@bob).should be_true }
79
- end
80
- describe "for Bob" do
81
- specify { @article1.overall_by?(@bob).should be_false }
82
- specify { @article.overall_by?(@alice).should be_false }
73
+ describe "when using negative values" do
74
+ let(:num) { -rand(1..5) }
75
+ let(:exp) { ((num + 1) / 2.0) - 1 }
76
+ it { expect { @article.overall num, @sally }.to change { @article.overall }.by(exp) }
77
+ end
83
78
  end
84
79
 
85
- describe "when overall by someone else" do
86
- before do
87
- @article.overall 1, @alice
80
+ describe "#overall_by?" do
81
+ describe "for Bob" do
82
+ specify { @article.overall_by?(@bob).should be_true }
83
+ end
84
+ describe "for Bob" do
85
+ specify { @article1.overall_by?(@bob).should be_false }
86
+ specify { @article.overall_by?(@alice).should be_false }
88
87
  end
89
88
 
90
- describe "for Alice" do
91
- specify { @article.overall_by?(@alice).should be_true }
89
+ describe "when overall by someone else" do
90
+ before do
91
+ @article.overall 1, @alice
92
+ end
93
+
94
+ describe "for Alice" do
95
+ specify { @article.overall_by?(@alice).should be_true }
96
+ end
92
97
  end
93
- end
94
98
 
95
- describe "when not overall by someone else" do
96
- describe "for Sally" do
97
- specify { @article.overall_by?(@sally).should be_false }
99
+ describe "when not overall by someone else" do
100
+ describe "for Sally" do
101
+ specify { @article.overall_by?(@sally).should be_false }
102
+ end
98
103
  end
99
104
  end
100
- end
101
105
 
102
- describe "#unoverall" do
103
- before { @article.unoverall @bob }
106
+ describe "#unoverall" do
107
+ before { @article.unoverall @bob }
104
108
 
105
- it "should have null #overall_count" do
106
- @article.overall_count.should eql 0
107
- end
109
+ it "should have null #overall_count" do
110
+ @article.overall_count.should eql 0
111
+ end
112
+
113
+ it "should have null #overall" do
114
+ @article.overall.should be_nil
115
+ end
108
116
 
109
- it "should have null #overall" do
110
- @article.overall.should be_nil
117
+ it "#overall_by?(@bob) should be false after unoverall" do
118
+ @article.overall_by?(@bob).should be_false
119
+ end
111
120
  end
112
121
 
113
- it "#overall_by?(@bob) should be false after unoverall" do
114
- @article.overall_by?(@bob).should be_false
122
+ describe "#overall_count" do
123
+ it "should know how many overalls have been cast" do
124
+ @article.overall 1, @sally
125
+ @article.overall_count.should eql 2
126
+ end
115
127
  end
116
- end
117
128
 
118
- describe "#overall_count" do
119
- it "should know how many overalls have been cast" do
120
- @article.overall 1, @sally
121
- @article.overall_count.should eql 2
129
+ describe "#rating" do
130
+ it "should calculate the average overall" do
131
+ @article.overall 4, @sally
132
+ @article.overall.should eq 2.5
133
+ end
134
+
135
+ it "should calculate the average overall if the result is zero" do
136
+ @article.overall -1, @sally
137
+ @article.overall.should eq 0.0
138
+ end
122
139
  end
123
140
  end
124
141
 
125
- describe "#rating" do
126
- it "should calculate the average overall" do
127
- @article.overall 4, @sally
128
- @article.overall.should eq 2.5
142
+ context "when not overall" do
143
+ describe "#overalls" do
144
+ specify { @article.overall_count.should eql 0 }
129
145
  end
130
146
 
131
- it "should calculate the average overall if the result is zero" do
132
- @article.overall -1, @sally
133
- @article.overall.should eq 0.0
147
+ describe "#rating" do
148
+ specify { @article.overall.should be_nil }
134
149
  end
135
- end
136
- end
137
150
 
138
- context "when not overall" do
139
- describe "#overalls" do
140
- specify { @article.overall_count.should eql 0 }
141
- end
151
+ describe "#unoverall" do
152
+ before do
153
+ @article.unoverall @sally
154
+ end
142
155
 
143
- describe "#rating" do
144
- specify { @article.overall.should be_nil }
145
- end
156
+ it "should have null #overall_count" do
157
+ @article.overall_count.should eql 0
158
+ end
146
159
 
147
- describe "#unoverall" do
148
- before do
149
- @article.unoverall @sally
160
+ it "should have null #overalls" do
161
+ @article.overall.should be_nil
162
+ end
150
163
  end
164
+ end
151
165
 
152
- it "should have null #overall_count" do
153
- @article.overall_count.should eql 0
166
+ context "when saving the collection" do
167
+ before (:each) do
168
+ @article.overall 3, @bob
169
+ @article.overall -5, @sally
170
+ @article.save
171
+ @f_article = Article.where(:name => "Article").first
154
172
  end
155
173
 
156
- it "should have null #overalls" do
157
- @article.overall.should be_nil
174
+ it "disallows incorrect rates" do
175
+ expect { @article.overall 8, @bob }.to raise_error
176
+ expect { @article.overall -10, @sally }.to raise_error
158
177
  end
159
- end
160
- end
161
178
 
162
- context "when saving the collection" do
163
- before (:each) do
164
- @article.overall 3, @bob
165
- @article.overall -5, @sally
166
- @article.save
167
- @f_article = Article.where(:name => "Article").first
168
- end
179
+ describe "#overall_by?" do
180
+ describe "for Bob" do
181
+ specify { @f_article.overall_by?(@bob).should be_true }
182
+ specify { @f_article.overall_by(@bob).should eq 3 }
183
+ end
169
184
 
170
- it "disallows incorrect rates" do
171
- expect { @article.overall 8, @bob }.to raise_error
172
- expect { @article.overall -10, @sally }.to raise_error
173
- end
185
+ describe "for Sally" do
186
+ specify { @f_article.overall_by?(@sally).should be_true }
187
+ specify { @f_article.overall_by(@sally).should eq -5 }
188
+ end
174
189
 
175
- describe "#overall_by?" do
176
- describe "for Bob" do
177
- specify { @f_article.overall_by?(@bob).should be_true }
178
- specify { @f_article.overall_by(@bob).should eq 3 }
190
+ describe "for Alice" do
191
+ specify { @f_article.overall_by?(@alice).should be_false}
192
+ specify { @f_article.overall_by(@alice).should be_nil }
193
+ end
179
194
  end
180
195
 
181
- describe "for Sally" do
182
- specify { @f_article.overall_by?(@sally).should be_true }
183
- specify { @f_article.overall_by(@sally).should eq -5 }
196
+ describe "#overall" do
197
+ specify { @f_article.overall.should eql -1.0 }
184
198
  end
185
199
 
186
- describe "for Alice" do
187
- specify { @f_article.overall_by?(@alice).should be_false}
188
- specify { @f_article.overall_by(@alice).should be_nil }
200
+ describe "#overall_count" do
201
+ specify { @f_article.overall_count.should eql 2 }
189
202
  end
190
203
  end
191
-
192
- describe "#overall" do
193
- specify { @f_article.overall.should eql -1.0 }
194
- end
195
-
196
- describe "#overall_count" do
197
- specify { @f_article.overall_count.should eql 2 }
198
- end
199
204
  end
200
205
 
201
206
  describe "#scopes" do
202
- before (:each) do
203
- @article.delete
207
+ before :each do
204
208
  @article1 = Article.create(:name => "Article 1")
205
209
  @article2 = Article.create(:name => "Article 2")
206
210
  @article3 = Article.create(:name => "Article 3")
207
211
  @article4 = Article.create(:name => "Article 4")
208
212
  @article5 = Article.create(:name => "Article 5")
209
- @article1.overall 5, @sally
210
- @article1.overall 3, @bob
211
- @article4.overall 1, @sally
212
213
  end
213
214
 
214
215
  describe "#overall_by" do
216
+ before :each do
217
+ @article1.overall 5, @sally
218
+ @article1.overall 3, @bob
219
+ @article4.overall 1, @sally
220
+ end
215
221
  it "should return proper count of articles overall by Bob" do
216
222
  Article.overall_by(@bob).size.should eql 1
217
223
  end
@@ -221,39 +227,55 @@ describe Article do
221
227
  end
222
228
  end
223
229
 
224
- describe "#overall_in" do
230
+ context 'rates' do
225
231
  before (:each) do
226
232
  @article1.overall 4, @alice
227
233
  @article2.overall 2, @alice
228
234
  @article3.overall 5, @alice
229
- @article4.overall 2, @alice
235
+ @article4.overall 1, @alice
230
236
  end
237
+ describe "#overall_in" do
238
+ it "should return proper count of articles with rating 4..5" do
239
+ Article.overall_in(4..5).to_a.length.should eql 2
240
+ end
231
241
 
232
- it "should return proper count of articles with rating 4..5" do
233
- Article.overall_in(4..5).to_a.length.should eql 2
234
- end
242
+ it "should return proper count of articles with rating 0..2" do
243
+ Article.overall_in(0..2).to_a.length.should eql 2
244
+ end
235
245
 
236
- it "should return proper count of articles with rating 0..2" do
237
- Article.overall_in(0..2).to_a.length.should eql 2
246
+ it "should return proper count of articles with rating 0..5" do
247
+ Article.overall_in(0..5).to_a.length.should eql 4
248
+ end
238
249
  end
239
250
 
240
- it "should return proper count of articles with rating 0..5" do
241
- Article.overall_in(0..5).to_a.length.should eql 4
242
- end
243
- end
251
+ describe "#highest_overall" do
252
+ it "should return proper count of articles" do
253
+ Article.highest_overall.limit(1).count(true).should eq 1
254
+ end
244
255
 
245
- describe "#highest_overall" do
246
- it "should return proper count of articles" do
247
- Article.highest_overall.limit(1).count(true).should eq 1
248
- end
256
+ it "should return proper count of articles" do
257
+ Article.highest_overall.limit(10).count(true).should eq 4
258
+ end
249
259
 
250
- it "should return proper count of articles" do
251
- Article.highest_overall.limit(10).count(true).should eq 2
260
+ it "should return proper document" do
261
+ Article.highest_overall.limit(1).first.name.should eql "Article 3"
262
+ end
263
+ it 'returns articles in proper order' do
264
+ Article.highest_overall.to_a.should eq [@article3, @article1, @article2, @article4]
265
+ end
252
266
  end
253
267
 
254
- it "should return proper document" do
255
- Article.highest_overall.limit(1).first.name.should eql "Article 1"
268
+ describe '#by_overall' do
269
+ it "should return proper count of articles" do
270
+ Article.by_overall.limit(10).count(true).should eq 5
271
+ Article.by_overall.to_a.should eq [@article3, @article1, @article2, @article4, @article5]
272
+ end
273
+
274
+ it 'returns articles in proper order' do
275
+
276
+ end
256
277
  end
257
278
  end
279
+
258
280
  end
259
281
  end
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,6 @@
1
+ require 'coveralls'
2
+ Coveralls.wear!
3
+
1
4
  $LOAD_PATH.unshift(File.dirname(__FILE__))
2
5
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
6
 
@@ -7,16 +10,12 @@ require "rubygems"
7
10
  require "rspec"
8
11
  require "mongoid"
9
12
  require "database_cleaner"
10
-
11
- require 'coveralls'
12
- Coveralls.wear!
13
-
14
13
  require "mongoid_rating"
15
14
 
16
15
  Dir["#{MODELS}/*.rb"].each { |f| require f }
17
16
 
18
17
  Mongoid.configure do |config|
19
- config.connect_to "mongoid_rateable_test"
18
+ config.connect_to "mongoid_rating_test"
20
19
  end
21
20
  Mongoid.logger = Logger.new($stdout)
22
21
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid_rating
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - glebtv
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-01 00:00:00.000000000 Z
11
+ date: 2013-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mongoid