mongoid_rateable 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mongoid_rateable (0.2.0)
4
+ mongoid_rateable (0.2.1)
5
5
  mongoid (>= 3.0)
6
6
  mongoid_rateable
7
7
 
data/README.rdoc CHANGED
@@ -82,6 +82,11 @@ And you can get the average rating:
82
82
 
83
83
  @post.rating # rates / rate_weight
84
84
 
85
+ And you can get the average rating without weights (It calculates realtime, so it can be slow):
86
+
87
+ @post.unweighted_rating # rates without weights / rate_count
88
+
89
+
85
90
  == Scopes
86
91
 
87
92
  You can get rated or unrated posts:
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.2.1
@@ -55,6 +55,12 @@ module Mongoid
55
55
  read_attribute(:rating)
56
56
  end
57
57
 
58
+ def unweighted_rating
59
+ return nil if self.rating_marks.empty?
60
+ total_sum = self.rating_marks.map(&:mark).sum
61
+ return total_sum.to_f/self.rating_marks.size
62
+ end
63
+
58
64
  def rate_count
59
65
  self.rating_marks.size
60
66
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "mongoid_rateable"
8
- s.version = "0.2.0"
8
+ s.version = "0.2.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Peter Savichev (proton)"]
12
- s.date = "2012-08-02"
12
+ s.date = "2012-09-09"
13
13
  s.description = "Provides fields and methods for the rating manipulation on Mongoid documents."
14
14
  s.email = "psavichev@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -69,6 +69,24 @@ Gem::Specification.new do |s|
69
69
  s.add_development_dependency(%q<rdoc>, [">= 0"])
70
70
  s.add_development_dependency(%q<rspec>, [">= 2.0.0"])
71
71
  s.add_development_dependency(%q<database_cleaner>, [">= 0"])
72
+ s.add_development_dependency(%q<bundler>, [">= 0"])
73
+ s.add_development_dependency(%q<jeweler>, ["~> 1.6.2"])
74
+ s.add_development_dependency(%q<simplecov>, [">= 0.4.0"])
75
+ s.add_development_dependency(%q<rdoc>, [">= 0"])
76
+ s.add_development_dependency(%q<rspec>, [">= 2.0.0"])
77
+ s.add_development_dependency(%q<database_cleaner>, [">= 0"])
78
+ s.add_development_dependency(%q<bundler>, [">= 0"])
79
+ s.add_development_dependency(%q<jeweler>, ["~> 1.6.2"])
80
+ s.add_development_dependency(%q<simplecov>, [">= 0.4.0"])
81
+ s.add_development_dependency(%q<rdoc>, [">= 0"])
82
+ s.add_development_dependency(%q<rspec>, [">= 2.0.0"])
83
+ s.add_development_dependency(%q<database_cleaner>, [">= 0"])
84
+ s.add_development_dependency(%q<bundler>, [">= 0"])
85
+ s.add_development_dependency(%q<jeweler>, ["~> 1.6.2"])
86
+ s.add_development_dependency(%q<simplecov>, [">= 0.4.0"])
87
+ s.add_development_dependency(%q<rdoc>, [">= 0"])
88
+ s.add_development_dependency(%q<rspec>, [">= 2.0.0"])
89
+ s.add_development_dependency(%q<database_cleaner>, [">= 0"])
72
90
  else
73
91
  s.add_dependency(%q<mongoid_rateable>, [">= 0"])
74
92
  s.add_dependency(%q<mongoid>, [">= 3.0"])
@@ -91,6 +109,24 @@ Gem::Specification.new do |s|
91
109
  s.add_dependency(%q<rdoc>, [">= 0"])
92
110
  s.add_dependency(%q<rspec>, [">= 2.0.0"])
93
111
  s.add_dependency(%q<database_cleaner>, [">= 0"])
112
+ s.add_dependency(%q<bundler>, [">= 0"])
113
+ s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
114
+ s.add_dependency(%q<simplecov>, [">= 0.4.0"])
115
+ s.add_dependency(%q<rdoc>, [">= 0"])
116
+ s.add_dependency(%q<rspec>, [">= 2.0.0"])
117
+ s.add_dependency(%q<database_cleaner>, [">= 0"])
118
+ s.add_dependency(%q<bundler>, [">= 0"])
119
+ s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
120
+ s.add_dependency(%q<simplecov>, [">= 0.4.0"])
121
+ s.add_dependency(%q<rdoc>, [">= 0"])
122
+ s.add_dependency(%q<rspec>, [">= 2.0.0"])
123
+ s.add_dependency(%q<database_cleaner>, [">= 0"])
124
+ s.add_dependency(%q<bundler>, [">= 0"])
125
+ s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
126
+ s.add_dependency(%q<simplecov>, [">= 0.4.0"])
127
+ s.add_dependency(%q<rdoc>, [">= 0"])
128
+ s.add_dependency(%q<rspec>, [">= 2.0.0"])
129
+ s.add_dependency(%q<database_cleaner>, [">= 0"])
94
130
  end
95
131
  else
96
132
  s.add_dependency(%q<mongoid_rateable>, [">= 0"])
@@ -114,6 +150,24 @@ Gem::Specification.new do |s|
114
150
  s.add_dependency(%q<rdoc>, [">= 0"])
115
151
  s.add_dependency(%q<rspec>, [">= 2.0.0"])
116
152
  s.add_dependency(%q<database_cleaner>, [">= 0"])
153
+ s.add_dependency(%q<bundler>, [">= 0"])
154
+ s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
155
+ s.add_dependency(%q<simplecov>, [">= 0.4.0"])
156
+ s.add_dependency(%q<rdoc>, [">= 0"])
157
+ s.add_dependency(%q<rspec>, [">= 2.0.0"])
158
+ s.add_dependency(%q<database_cleaner>, [">= 0"])
159
+ s.add_dependency(%q<bundler>, [">= 0"])
160
+ s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
161
+ s.add_dependency(%q<simplecov>, [">= 0.4.0"])
162
+ s.add_dependency(%q<rdoc>, [">= 0"])
163
+ s.add_dependency(%q<rspec>, [">= 2.0.0"])
164
+ s.add_dependency(%q<database_cleaner>, [">= 0"])
165
+ s.add_dependency(%q<bundler>, [">= 0"])
166
+ s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
167
+ s.add_dependency(%q<simplecov>, [">= 0.4.0"])
168
+ s.add_dependency(%q<rdoc>, [">= 0"])
169
+ s.add_dependency(%q<rspec>, [">= 2.0.0"])
170
+ s.add_dependency(%q<database_cleaner>, [">= 0"])
117
171
  end
118
172
  end
119
173
 
@@ -24,6 +24,7 @@ describe Post do
24
24
  it { should respond_to :rate_count }
25
25
  it { should respond_to :rates }
26
26
  it { should respond_to :rating }
27
+ it { should respond_to :unweighted_rating }
27
28
  it { should respond_to :rating_marks }
28
29
 
29
30
  describe "#rating_marks" do
@@ -129,6 +130,18 @@ describe Post do
129
130
  @post.rating.should eq 0.0
130
131
  end
131
132
  end
133
+
134
+ describe "#unweighted_rating" do
135
+ it "should calculate the average rate" do
136
+ @post.rate 4, @sally
137
+ @post.unweighted_rating.should eql 2.5
138
+ end
139
+
140
+ it "should calculate the average rate if the result is zero" do
141
+ @post.rate -1, @sally
142
+ @post.unweighted_rating.should eq 0.0
143
+ end
144
+ end
132
145
  end
133
146
 
134
147
  context "when not rated" do
@@ -140,6 +153,10 @@ describe Post do
140
153
  specify { @post.rating.should be_nil }
141
154
  end
142
155
 
156
+ describe "#unweighted_rating" do
157
+ specify { @post.unweighted_rating.should be_nil }
158
+ end
159
+
143
160
  describe "#unrate" do
144
161
  before { @post.unrate @sally }
145
162
 
@@ -186,6 +203,10 @@ describe Post do
186
203
  describe "#rating" do
187
204
  specify { @finded_post.rating.should eq -1.0 }
188
205
  end
206
+
207
+ describe "#unweighted_rating" do
208
+ specify { @finded_post.unweighted_rating.should eq -1.0 }
209
+ end
189
210
  end
190
211
 
191
212
  describe "#rate_and_save" do
@@ -222,7 +243,11 @@ describe Post do
222
243
  end
223
244
 
224
245
  it "should have #rating equal 2.0" do
225
- @finded_post.rating.should eq 2.0
246
+ @finded_post.rating.should eq 2.0
247
+ end
248
+
249
+ it "should have #unweighted_rating equal 2.0" do
250
+ @finded_post.unweighted_rating.should eq -1.0
226
251
  end
227
252
 
228
253
  describe "#unrate_and_save" do
@@ -257,9 +282,13 @@ describe Post do
257
282
  @finded_post.rate_weight.should eql 1
258
283
  end
259
284
 
260
- it "should have #rating equal -10.0" do
261
- @finded_post.rating.should eq -10.0
262
- end
285
+ it "should have #rating equal -10.0" do
286
+ @finded_post.rating.should eq -10.0
287
+ end
288
+
289
+ it "should have #unweighted_rating equal -10.0" do
290
+ @finded_post.unweighted_rating.should eq -10.0
291
+ end
263
292
  end
264
293
  end
265
294
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid_rateable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-02 00:00:00.000000000 Z
12
+ date: 2012-09-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mongoid_rateable
@@ -347,6 +347,294 @@ dependencies:
347
347
  - - ! '>='
348
348
  - !ruby/object:Gem::Version
349
349
  version: '0'
350
+ - !ruby/object:Gem::Dependency
351
+ name: bundler
352
+ requirement: !ruby/object:Gem::Requirement
353
+ none: false
354
+ requirements:
355
+ - - ! '>='
356
+ - !ruby/object:Gem::Version
357
+ version: '0'
358
+ type: :development
359
+ prerelease: false
360
+ version_requirements: !ruby/object:Gem::Requirement
361
+ none: false
362
+ requirements:
363
+ - - ! '>='
364
+ - !ruby/object:Gem::Version
365
+ version: '0'
366
+ - !ruby/object:Gem::Dependency
367
+ name: jeweler
368
+ requirement: !ruby/object:Gem::Requirement
369
+ none: false
370
+ requirements:
371
+ - - ~>
372
+ - !ruby/object:Gem::Version
373
+ version: 1.6.2
374
+ type: :development
375
+ prerelease: false
376
+ version_requirements: !ruby/object:Gem::Requirement
377
+ none: false
378
+ requirements:
379
+ - - ~>
380
+ - !ruby/object:Gem::Version
381
+ version: 1.6.2
382
+ - !ruby/object:Gem::Dependency
383
+ name: simplecov
384
+ requirement: !ruby/object:Gem::Requirement
385
+ none: false
386
+ requirements:
387
+ - - ! '>='
388
+ - !ruby/object:Gem::Version
389
+ version: 0.4.0
390
+ type: :development
391
+ prerelease: false
392
+ version_requirements: !ruby/object:Gem::Requirement
393
+ none: false
394
+ requirements:
395
+ - - ! '>='
396
+ - !ruby/object:Gem::Version
397
+ version: 0.4.0
398
+ - !ruby/object:Gem::Dependency
399
+ name: rdoc
400
+ requirement: !ruby/object:Gem::Requirement
401
+ none: false
402
+ requirements:
403
+ - - ! '>='
404
+ - !ruby/object:Gem::Version
405
+ version: '0'
406
+ type: :development
407
+ prerelease: false
408
+ version_requirements: !ruby/object:Gem::Requirement
409
+ none: false
410
+ requirements:
411
+ - - ! '>='
412
+ - !ruby/object:Gem::Version
413
+ version: '0'
414
+ - !ruby/object:Gem::Dependency
415
+ name: rspec
416
+ requirement: !ruby/object:Gem::Requirement
417
+ none: false
418
+ requirements:
419
+ - - ! '>='
420
+ - !ruby/object:Gem::Version
421
+ version: 2.0.0
422
+ type: :development
423
+ prerelease: false
424
+ version_requirements: !ruby/object:Gem::Requirement
425
+ none: false
426
+ requirements:
427
+ - - ! '>='
428
+ - !ruby/object:Gem::Version
429
+ version: 2.0.0
430
+ - !ruby/object:Gem::Dependency
431
+ name: database_cleaner
432
+ requirement: !ruby/object:Gem::Requirement
433
+ none: false
434
+ requirements:
435
+ - - ! '>='
436
+ - !ruby/object:Gem::Version
437
+ version: '0'
438
+ type: :development
439
+ prerelease: false
440
+ version_requirements: !ruby/object:Gem::Requirement
441
+ none: false
442
+ requirements:
443
+ - - ! '>='
444
+ - !ruby/object:Gem::Version
445
+ version: '0'
446
+ - !ruby/object:Gem::Dependency
447
+ name: bundler
448
+ requirement: !ruby/object:Gem::Requirement
449
+ none: false
450
+ requirements:
451
+ - - ! '>='
452
+ - !ruby/object:Gem::Version
453
+ version: '0'
454
+ type: :development
455
+ prerelease: false
456
+ version_requirements: !ruby/object:Gem::Requirement
457
+ none: false
458
+ requirements:
459
+ - - ! '>='
460
+ - !ruby/object:Gem::Version
461
+ version: '0'
462
+ - !ruby/object:Gem::Dependency
463
+ name: jeweler
464
+ requirement: !ruby/object:Gem::Requirement
465
+ none: false
466
+ requirements:
467
+ - - ~>
468
+ - !ruby/object:Gem::Version
469
+ version: 1.6.2
470
+ type: :development
471
+ prerelease: false
472
+ version_requirements: !ruby/object:Gem::Requirement
473
+ none: false
474
+ requirements:
475
+ - - ~>
476
+ - !ruby/object:Gem::Version
477
+ version: 1.6.2
478
+ - !ruby/object:Gem::Dependency
479
+ name: simplecov
480
+ requirement: !ruby/object:Gem::Requirement
481
+ none: false
482
+ requirements:
483
+ - - ! '>='
484
+ - !ruby/object:Gem::Version
485
+ version: 0.4.0
486
+ type: :development
487
+ prerelease: false
488
+ version_requirements: !ruby/object:Gem::Requirement
489
+ none: false
490
+ requirements:
491
+ - - ! '>='
492
+ - !ruby/object:Gem::Version
493
+ version: 0.4.0
494
+ - !ruby/object:Gem::Dependency
495
+ name: rdoc
496
+ requirement: !ruby/object:Gem::Requirement
497
+ none: false
498
+ requirements:
499
+ - - ! '>='
500
+ - !ruby/object:Gem::Version
501
+ version: '0'
502
+ type: :development
503
+ prerelease: false
504
+ version_requirements: !ruby/object:Gem::Requirement
505
+ none: false
506
+ requirements:
507
+ - - ! '>='
508
+ - !ruby/object:Gem::Version
509
+ version: '0'
510
+ - !ruby/object:Gem::Dependency
511
+ name: rspec
512
+ requirement: !ruby/object:Gem::Requirement
513
+ none: false
514
+ requirements:
515
+ - - ! '>='
516
+ - !ruby/object:Gem::Version
517
+ version: 2.0.0
518
+ type: :development
519
+ prerelease: false
520
+ version_requirements: !ruby/object:Gem::Requirement
521
+ none: false
522
+ requirements:
523
+ - - ! '>='
524
+ - !ruby/object:Gem::Version
525
+ version: 2.0.0
526
+ - !ruby/object:Gem::Dependency
527
+ name: database_cleaner
528
+ requirement: !ruby/object:Gem::Requirement
529
+ none: false
530
+ requirements:
531
+ - - ! '>='
532
+ - !ruby/object:Gem::Version
533
+ version: '0'
534
+ type: :development
535
+ prerelease: false
536
+ version_requirements: !ruby/object:Gem::Requirement
537
+ none: false
538
+ requirements:
539
+ - - ! '>='
540
+ - !ruby/object:Gem::Version
541
+ version: '0'
542
+ - !ruby/object:Gem::Dependency
543
+ name: bundler
544
+ requirement: !ruby/object:Gem::Requirement
545
+ none: false
546
+ requirements:
547
+ - - ! '>='
548
+ - !ruby/object:Gem::Version
549
+ version: '0'
550
+ type: :development
551
+ prerelease: false
552
+ version_requirements: !ruby/object:Gem::Requirement
553
+ none: false
554
+ requirements:
555
+ - - ! '>='
556
+ - !ruby/object:Gem::Version
557
+ version: '0'
558
+ - !ruby/object:Gem::Dependency
559
+ name: jeweler
560
+ requirement: !ruby/object:Gem::Requirement
561
+ none: false
562
+ requirements:
563
+ - - ~>
564
+ - !ruby/object:Gem::Version
565
+ version: 1.6.2
566
+ type: :development
567
+ prerelease: false
568
+ version_requirements: !ruby/object:Gem::Requirement
569
+ none: false
570
+ requirements:
571
+ - - ~>
572
+ - !ruby/object:Gem::Version
573
+ version: 1.6.2
574
+ - !ruby/object:Gem::Dependency
575
+ name: simplecov
576
+ requirement: !ruby/object:Gem::Requirement
577
+ none: false
578
+ requirements:
579
+ - - ! '>='
580
+ - !ruby/object:Gem::Version
581
+ version: 0.4.0
582
+ type: :development
583
+ prerelease: false
584
+ version_requirements: !ruby/object:Gem::Requirement
585
+ none: false
586
+ requirements:
587
+ - - ! '>='
588
+ - !ruby/object:Gem::Version
589
+ version: 0.4.0
590
+ - !ruby/object:Gem::Dependency
591
+ name: rdoc
592
+ requirement: !ruby/object:Gem::Requirement
593
+ none: false
594
+ requirements:
595
+ - - ! '>='
596
+ - !ruby/object:Gem::Version
597
+ version: '0'
598
+ type: :development
599
+ prerelease: false
600
+ version_requirements: !ruby/object:Gem::Requirement
601
+ none: false
602
+ requirements:
603
+ - - ! '>='
604
+ - !ruby/object:Gem::Version
605
+ version: '0'
606
+ - !ruby/object:Gem::Dependency
607
+ name: rspec
608
+ requirement: !ruby/object:Gem::Requirement
609
+ none: false
610
+ requirements:
611
+ - - ! '>='
612
+ - !ruby/object:Gem::Version
613
+ version: 2.0.0
614
+ type: :development
615
+ prerelease: false
616
+ version_requirements: !ruby/object:Gem::Requirement
617
+ none: false
618
+ requirements:
619
+ - - ! '>='
620
+ - !ruby/object:Gem::Version
621
+ version: 2.0.0
622
+ - !ruby/object:Gem::Dependency
623
+ name: database_cleaner
624
+ requirement: !ruby/object:Gem::Requirement
625
+ none: false
626
+ requirements:
627
+ - - ! '>='
628
+ - !ruby/object:Gem::Version
629
+ version: '0'
630
+ type: :development
631
+ prerelease: false
632
+ version_requirements: !ruby/object:Gem::Requirement
633
+ none: false
634
+ requirements:
635
+ - - ! '>='
636
+ - !ruby/object:Gem::Version
637
+ version: '0'
350
638
  description: Provides fields and methods for the rating manipulation on Mongoid documents.
351
639
  email: psavichev@gmail.com
352
640
  executables: []
@@ -390,7 +678,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
390
678
  version: '0'
391
679
  segments:
392
680
  - 0
393
- hash: -780149155
681
+ hash: 906699105
394
682
  required_rubygems_version: !ruby/object:Gem::Requirement
395
683
  none: false
396
684
  requirements: