acts_as_votable 0.10.0 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/main.yml +44 -0
  3. data/.gitignore +10 -6
  4. data/.rubocop.yml +121 -0
  5. data/.ruby-version +1 -0
  6. data/Appraisals +23 -0
  7. data/Gemfile +3 -14
  8. data/{README.markdown → README.md} +87 -52
  9. data/Rakefile +6 -4
  10. data/acts_as_votable.gemspec +12 -7
  11. data/gemfiles/.bundle/config +2 -0
  12. data/gemfiles/rails_4.gemfile +7 -0
  13. data/gemfiles/rails_5.gemfile +7 -0
  14. data/gemfiles/rails_5_1.gemfile +7 -0
  15. data/gemfiles/rails_5_2.gemfile +7 -0
  16. data/gemfiles/rails_6.gemfile +8 -0
  17. data/gemfiles/rails_6_1.gemfile +8 -0
  18. data/gemfiles/rails_6_rc1.gemfile +8 -0
  19. data/lib/acts_as_votable.rb +9 -9
  20. data/lib/acts_as_votable/cacheable.rb +174 -0
  21. data/lib/acts_as_votable/extenders/controller.rb +3 -4
  22. data/lib/acts_as_votable/extenders/votable.rb +17 -6
  23. data/lib/acts_as_votable/extenders/voter.rb +4 -6
  24. data/lib/acts_as_votable/helpers/words.rb +7 -10
  25. data/lib/acts_as_votable/version.rb +3 -1
  26. data/lib/acts_as_votable/votable.rb +74 -194
  27. data/lib/acts_as_votable/vote.rb +10 -12
  28. data/lib/acts_as_votable/voter.rb +55 -56
  29. data/lib/generators/acts_as_votable/migration/migration_generator.rb +25 -4
  30. data/lib/generators/acts_as_votable/migration/templates/active_record/{migration.rb → migration.erb} +1 -6
  31. data/spec/factories/votable.rb +6 -0
  32. data/spec/factories/votable_cache.rb +6 -0
  33. data/spec/factories/votable_cache_update_attributes.rb +6 -0
  34. data/spec/factories/votable_cache_update_columns.rb +6 -0
  35. data/spec/factories/votable_child_of_sti_not_votable.rb +6 -0
  36. data/spec/factories/votable_child_of_sti_votable.rb +6 -0
  37. data/spec/factories/votable_voter.rb +6 -0
  38. data/spec/factories/vote.rb +6 -0
  39. data/spec/factories/voter.rb +6 -0
  40. data/spec/generators/active_record_generator_spec.rb +13 -0
  41. data/spec/shared_example/votable_model.rb +542 -0
  42. data/spec/shared_example/voter_model.rb +280 -0
  43. data/spec/spec_helper.rb +28 -18
  44. data/spec/support/factory_bot.rb +9 -0
  45. data/spec/votable_spec.rb +10 -9
  46. data/spec/votable_voter_spec.rb +12 -12
  47. data/spec/voter_spec.rb +9 -10
  48. data/spec/words_spec.rb +9 -12
  49. metadata +116 -26
  50. data/.travis.yml +0 -25
  51. data/spec/shared_example/votable_model_spec.rb +0 -421
  52. data/spec/shared_example/voter_model_spec.rb +0 -279
@@ -1,30 +1,27 @@
1
- require 'acts_as_votable'
2
- require 'spec_helper'
1
+ # frozen_string_literal: true
3
2
 
4
- describe ActsAsVotable::Helpers::Words do
3
+ require "spec_helper"
5
4
 
6
- before :each do
7
- @vote = ActsAsVotable::Vote.new
8
- end
5
+ describe ActsAsVotable::Helpers::Words do
6
+ let(:vote) { build(:vote) }
9
7
 
10
8
  it "should know that like is a true vote" do
11
- @vote.votable_words.that_mean_true.should include "like"
9
+ expect(vote.votable_words.that_mean_true).to include "like"
12
10
  end
13
11
 
14
12
  it "should know that bad is a false vote" do
15
- @vote.votable_words.that_mean_false.should include "bad"
13
+ expect(vote.votable_words.that_mean_false).to include "bad"
16
14
  end
17
15
 
18
16
  it "should be a vote for true when word is good" do
19
- @vote.votable_words.meaning_of('good').should be true
17
+ expect(vote.votable_words.meaning_of("good")).to be true
20
18
  end
21
19
 
22
20
  it "should be a vote for false when word is down" do
23
- @vote.votable_words.meaning_of('down').should be false
21
+ expect(vote.votable_words.meaning_of("down")).to be false
24
22
  end
25
23
 
26
24
  it "should be a vote for true when the word is unknown" do
27
- @vote.votable_words.meaning_of('lsdhklkadhfs').should be true
25
+ expect(vote.votable_words.meaning_of("lsdhklkadhfs")).to be true
28
26
  end
29
-
30
27
  end
metadata CHANGED
@@ -1,43 +1,99 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_votable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-08 00:00:00.000000000 Z
11
+ date: 2020-12-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '3.6'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '3.6'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: sqlite3
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '='
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 1.3.7
33
+ version: 1.3.6
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '='
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.3.7
40
+ version: 1.3.6
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubocop
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.49.1
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.49.1
55
+ - !ruby/object:Gem::Dependency
56
+ name: simplecov
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.15.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.15.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: appraisal
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.2'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '2.2'
83
+ - !ruby/object:Gem::Dependency
84
+ name: factory_bot
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '4.8'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '4.8'
41
97
  description: Rails gem to allowing records to be votable
42
98
  email:
43
99
  - ryanto
@@ -45,13 +101,25 @@ executables: []
45
101
  extensions: []
46
102
  extra_rdoc_files: []
47
103
  files:
48
- - .gitignore
49
- - .travis.yml
104
+ - ".github/workflows/main.yml"
105
+ - ".gitignore"
106
+ - ".rubocop.yml"
107
+ - ".ruby-version"
108
+ - Appraisals
50
109
  - Gemfile
51
- - README.markdown
110
+ - README.md
52
111
  - Rakefile
53
112
  - acts_as_votable.gemspec
113
+ - gemfiles/.bundle/config
114
+ - gemfiles/rails_4.gemfile
115
+ - gemfiles/rails_5.gemfile
116
+ - gemfiles/rails_5_1.gemfile
117
+ - gemfiles/rails_5_2.gemfile
118
+ - gemfiles/rails_6.gemfile
119
+ - gemfiles/rails_6_1.gemfile
120
+ - gemfiles/rails_6_rc1.gemfile
54
121
  - lib/acts_as_votable.rb
122
+ - lib/acts_as_votable/cacheable.rb
55
123
  - lib/acts_as_votable/extenders/controller.rb
56
124
  - lib/acts_as_votable/extenders/votable.rb
57
125
  - lib/acts_as_votable/extenders/voter.rb
@@ -61,41 +129,63 @@ files:
61
129
  - lib/acts_as_votable/vote.rb
62
130
  - lib/acts_as_votable/voter.rb
63
131
  - lib/generators/acts_as_votable/migration/migration_generator.rb
64
- - lib/generators/acts_as_votable/migration/templates/active_record/migration.rb
65
- - spec/shared_example/votable_model_spec.rb
66
- - spec/shared_example/voter_model_spec.rb
132
+ - lib/generators/acts_as_votable/migration/templates/active_record/migration.erb
133
+ - spec/factories/votable.rb
134
+ - spec/factories/votable_cache.rb
135
+ - spec/factories/votable_cache_update_attributes.rb
136
+ - spec/factories/votable_cache_update_columns.rb
137
+ - spec/factories/votable_child_of_sti_not_votable.rb
138
+ - spec/factories/votable_child_of_sti_votable.rb
139
+ - spec/factories/votable_voter.rb
140
+ - spec/factories/vote.rb
141
+ - spec/factories/voter.rb
142
+ - spec/generators/active_record_generator_spec.rb
143
+ - spec/shared_example/votable_model.rb
144
+ - spec/shared_example/voter_model.rb
67
145
  - spec/spec_helper.rb
146
+ - spec/support/factory_bot.rb
68
147
  - spec/votable_spec.rb
69
148
  - spec/votable_voter_spec.rb
70
149
  - spec/voter_spec.rb
71
150
  - spec/words_spec.rb
72
151
  homepage: http://rubygems.org/gems/acts_as_votable
73
- licenses: []
152
+ licenses:
153
+ - MIT
74
154
  metadata: {}
75
- post_install_message:
155
+ post_install_message:
76
156
  rdoc_options: []
77
157
  require_paths:
78
158
  - lib
79
159
  required_ruby_version: !ruby/object:Gem::Requirement
80
160
  requirements:
81
- - - '>='
161
+ - - ">="
82
162
  - !ruby/object:Gem::Version
83
163
  version: '0'
84
164
  required_rubygems_version: !ruby/object:Gem::Requirement
85
165
  requirements:
86
- - - '>='
166
+ - - ">="
87
167
  - !ruby/object:Gem::Version
88
168
  version: '0'
89
169
  requirements: []
90
- rubyforge_project: acts_as_votable
91
- rubygems_version: 2.0.3
92
- signing_key:
170
+ rubygems_version: 3.2.2
171
+ signing_key:
93
172
  specification_version: 4
94
173
  summary: Rails gem to allowing records to be votable
95
174
  test_files:
96
- - spec/shared_example/votable_model_spec.rb
97
- - spec/shared_example/voter_model_spec.rb
175
+ - spec/factories/votable.rb
176
+ - spec/factories/votable_cache.rb
177
+ - spec/factories/votable_cache_update_attributes.rb
178
+ - spec/factories/votable_cache_update_columns.rb
179
+ - spec/factories/votable_child_of_sti_not_votable.rb
180
+ - spec/factories/votable_child_of_sti_votable.rb
181
+ - spec/factories/votable_voter.rb
182
+ - spec/factories/vote.rb
183
+ - spec/factories/voter.rb
184
+ - spec/generators/active_record_generator_spec.rb
185
+ - spec/shared_example/votable_model.rb
186
+ - spec/shared_example/voter_model.rb
98
187
  - spec/spec_helper.rb
188
+ - spec/support/factory_bot.rb
99
189
  - spec/votable_spec.rb
100
190
  - spec/votable_voter_spec.rb
101
191
  - spec/voter_spec.rb
@@ -1,25 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 1.8.7
4
- - 1.9.2
5
- - 1.9.3
6
- - 2.0.0
7
- - 2.1.0
8
- env:
9
- - "RAILS_VERSION=3.0.0"
10
- - "RAILS_VERSION=3.1.0"
11
- - "RAILS_VERSION=3.2.0"
12
- - "RAILS_VERSION=4.0.0"
13
- - "RAILS_VERSION=4.1.0"
14
- matrix:
15
- exclude:
16
- - rvm: 1.8.7
17
- env: "RAILS_VERSION=4.0.0"
18
- - rvm: 1.9.2
19
- env: "RAILS_VERSION=4.0.0"
20
- - rvm: 1.8.7
21
- env: "RAILS_VERSION=4.1.0"
22
- - rvm: 1.9.2
23
- env: "RAILS_VERSION=4.1.0"
24
- - rvm: 1.9.3
25
- env: "RAILS_VERSION=4.1.0"
@@ -1,421 +0,0 @@
1
- shared_examples "a votable_model" do
2
- it "should return false when a vote with no voter is saved" do
3
- votable.vote_by.should be false
4
- end
5
-
6
- it "should have one vote when saved" do
7
- votable.vote_by :voter => voter, :vote => 'yes'
8
- votable.votes_for.size.should == 1
9
- end
10
-
11
- it "should have one vote when voted on twice by the same person" do
12
- votable.vote_by :voter => voter, :vote => 'yes'
13
- votable.vote_by :voter => voter, :vote => 'no'
14
- votable.votes_for.size.should == 1
15
- end
16
-
17
- it "should have two votes_for when voted on twice by the same person with duplicate paramenter" do
18
- votable.vote_by :voter => voter, :vote => 'yes'
19
- votable.vote_by :voter => voter, :vote => 'no', :duplicate => true
20
- votable.votes_for.size.should == 2
21
- end
22
-
23
- it "should have one scoped vote when voting under an scope" do
24
- votable.vote_by :voter => voter, :vote => 'yes', :vote_scope => 'rank'
25
- votable.find_votes_for(:vote_scope => 'rank').size.should == 1
26
- end
27
-
28
- it "should have one vote when voted on twice using scope by the same person" do
29
- votable.vote_by :voter => voter, :vote => 'yes', :vote_scope => 'rank'
30
- votable.vote_by :voter => voter, :vote => 'no', :vote_scope => 'rank'
31
- votable.find_votes_for(:vote_scope => 'rank').size.should == 1
32
- end
33
-
34
- it "should have two votes_for when voting on two different scopes by the same person" do
35
- votable.vote_by :voter => voter, :vote => 'yes', :vote_scope => 'weekly_rank'
36
- votable.vote_by :voter => voter, :vote => 'no', :vote_scope => 'monthly_rank'
37
- votable.votes_for.size.should == 2
38
- end
39
-
40
- it "should be callable with vote_up" do
41
- votable.vote_up voter
42
- votable.get_up_votes.first.voter.should == voter
43
- end
44
-
45
- it "should be callable with vote_down" do
46
- votable.vote_down voter
47
- votable.get_down_votes.first.voter.should == voter
48
- end
49
-
50
- it "should have 2 votes_for when voted on once by two different people" do
51
- votable.vote_by :voter => voter
52
- votable.vote_by :voter => voter2
53
- votable.votes_for.size.should == 2
54
- end
55
-
56
- it "should have one true vote" do
57
- votable.vote_by :voter => voter
58
- votable.vote_by :voter => voter2, :vote => 'dislike'
59
- votable.get_up_votes.size.should == 1
60
- end
61
-
62
- it "should have 2 false votes_for" do
63
- votable.vote_by :voter => voter, :vote => 'no'
64
- votable.vote_by :voter => voter2, :vote => 'dislike'
65
- votable.get_down_votes.size.should == 2
66
- end
67
-
68
- it "should have been voted on by voter2" do
69
- votable.vote_by :voter => voter2, :vote => true
70
- votable.find_votes_for.first.voter.id.should be voter2.id
71
- end
72
-
73
- it "should count the vote as registered if this is the voters first vote" do
74
- votable.vote_by :voter => voter
75
- votable.vote_registered?.should be true
76
- end
77
-
78
- it "should not count the vote as being registered if that voter has already voted and the vote has not changed" do
79
- votable.vote_by :voter => voter, :vote => true
80
- votable.vote_by :voter => voter, :vote => 'yes'
81
- votable.vote_registered?.should be false
82
- end
83
-
84
- it "should count the vote as registered if the voter has voted and the vote flag has changed" do
85
- votable.vote_by :voter => voter, :vote => true
86
- votable.vote_by :voter => voter, :vote => 'dislike'
87
- votable.vote_registered?.should be true
88
- end
89
-
90
- it "should count the vote as registered if the voter has voted and the vote weight has changed" do
91
- votable.vote_by :voter => voter, :vote => true, :vote_weight => 1
92
- votable.vote_by :voter => voter, :vote => true, :vote_weight => 2
93
- votable.vote_registered?.should be true
94
- end
95
-
96
- it "should be voted on by voter" do
97
- votable.vote_by :voter => voter
98
- votable.voted_on_by?(voter).should be true
99
- end
100
-
101
- it "should be able to unvote a voter" do
102
- votable.liked_by(voter)
103
- votable.unliked_by(voter)
104
- votable.voted_on_by?(voter).should be false
105
- end
106
-
107
- it "should unvote a positive vote" do
108
- votable.vote_by :voter => voter
109
- votable.unvote :voter => voter
110
- votable.find_votes_for.count.should == 0
111
- end
112
-
113
- it "should set the votable to unregistered after unvoting" do
114
- votable.vote_by :voter => voter
115
- votable.unvote :voter => voter
116
- votable.vote_registered?.should be false
117
- end
118
-
119
- it "should unvote a negative vote" do
120
- votable.vote_by :voter => voter, :vote => 'no'
121
- votable.unvote :voter => voter
122
- votable.find_votes_for.count.should == 0
123
- end
124
-
125
- it "should unvote only the from a single voter" do
126
- votable.vote_by :voter => voter
127
- votable.vote_by :voter => voter2
128
- votable.unvote :voter => voter
129
- votable.find_votes_for.count.should == 1
130
- end
131
-
132
- it "should be contained to instances" do
133
- votable2 = Votable.new(:name => '2nd votable')
134
- votable2.save
135
-
136
- votable.vote_by :voter => voter, :vote => false
137
- votable2.vote_by :voter => voter, :vote => true
138
- votable2.vote_by :voter => voter, :vote => true
139
-
140
- votable.vote_registered?.should be true
141
- votable2.vote_registered?.should be false
142
- end
143
-
144
- it "should set default vote weight to 1 if not specified" do
145
- votable.upvote_by voter
146
- votable.find_votes_for.first.vote_weight.should == 1
147
- end
148
-
149
- describe "with cached votes_for" do
150
-
151
- before(:each) do
152
- clean_database
153
- voter = Voter.new(:name => 'i can vote!')
154
- voter.save
155
-
156
- votable = Votable.new(:name => 'a voting model without a cache')
157
- votable.save
158
-
159
- votable_cache = VotableCache.new(:name => 'voting model with cache')
160
- votable_cache.save
161
- end
162
-
163
- it "should not update cached votes_for if there are no columns" do
164
- votable.vote_by :voter => voter
165
- end
166
-
167
- it "should update cached total votes_for if there is a total column" do
168
- votable_cache.cached_votes_total = 50
169
- votable_cache.vote_by :voter => voter
170
- votable_cache.cached_votes_total.should == 1
171
- end
172
-
173
- it "should update cached total votes_for when a vote up is removed" do
174
- votable_cache.vote_by :voter => voter, :vote => 'true'
175
- votable_cache.unvote :voter => voter
176
- votable_cache.cached_votes_total.should == 0
177
- end
178
-
179
- it "should update cached total votes_for when a vote down is removed" do
180
- votable_cache.vote_by :voter => voter, :vote => 'false'
181
- votable_cache.unvote :voter => voter
182
- votable_cache.cached_votes_total.should == 0
183
- end
184
-
185
- it "should update cached score votes_for if there is a score column" do
186
- votable_cache.cached_votes_score = 50
187
- votable_cache.vote_by :voter => voter
188
- votable_cache.cached_votes_score.should == 1
189
- votable_cache.vote_by :voter => voter2, :vote => 'false'
190
- votable_cache.cached_votes_score.should == 0
191
- votable_cache.vote_by :voter => voter, :vote => 'false'
192
- votable_cache.cached_votes_score.should == -2
193
- end
194
-
195
- it "should update cached score votes_for when a vote up is removed" do
196
- votable_cache.vote_by :voter => voter, :vote => 'true'
197
- votable_cache.cached_votes_score.should == 1
198
- votable_cache.unvote :voter => voter
199
- votable_cache.cached_votes_score.should == 0
200
- end
201
-
202
- it "should update cached score votes_for when a vote down is removed" do
203
- votable_cache.vote_by :voter => voter, :vote => 'false'
204
- votable_cache.cached_votes_score.should == -1
205
- votable_cache.unvote :voter => voter
206
- votable_cache.cached_votes_score.should == 0
207
- end
208
-
209
- it "should update cached weighted total if there is a weighted total column" do
210
- votable_cache.cached_weighted_total = 50
211
- votable_cache.vote_by :voter => voter
212
- votable_cache.cached_weighted_total.should == 1
213
- votable_cache.vote_by :voter => voter2, :vote => 'false'
214
- votable_cache.cached_weighted_total.should == 2
215
- end
216
-
217
- it "should update cached weighted total votes_for when a vote up is removed" do
218
- votable_cache.vote_by :voter => voter, :vote => 'true', :vote_weight => 3
219
- votable_cache.cached_weighted_total.should == 3
220
- votable_cache.unvote :voter => voter
221
- votable_cache.cached_weighted_total.should == 0
222
- end
223
-
224
- it "should update cached weighted total votes_for when a vote down is removed" do
225
- votable_cache.vote_by :voter => voter, :vote => 'false', :vote_weight => 4
226
- votable_cache.cached_weighted_total.should == 4
227
- votable_cache.unvote :voter => voter
228
- votable_cache.cached_weighted_total.should == 0
229
- end
230
-
231
- it "should update cached weighted score if there is a weighted score column" do
232
- votable_cache.cached_weighted_score = 50
233
- votable_cache.vote_by :voter => voter
234
- votable_cache.cached_weighted_score.should == 1
235
- votable_cache.vote_by :voter => voter2, :vote => 'false'
236
- votable_cache.cached_weighted_score.should == 0
237
- votable_cache.vote_by :voter => voter, :vote => 'false'
238
- votable_cache.cached_weighted_score.should == -2
239
- end
240
-
241
- it "should update cached weighted score votes_for when a vote up is removed" do
242
- votable_cache.vote_by :voter => voter, :vote => 'true', :vote_weight => 3
243
- votable_cache.cached_weighted_score.should == 3
244
- votable_cache.unvote :voter => voter
245
- votable_cache.cached_weighted_score.should == 0
246
- end
247
-
248
- it "should update cached weighted score votes_for when a vote down is removed" do
249
- votable_cache.vote_by :voter => voter, :vote => 'false', :vote_weight => 4
250
- votable_cache.cached_weighted_score.should == -4
251
- votable_cache.unvote :voter => voter
252
- votable_cache.cached_weighted_score.should == 0
253
- end
254
-
255
- it "should update cached up votes_for if there is an up vote column" do
256
- votable_cache.cached_votes_up = 50
257
- votable_cache.vote_by :voter => voter
258
- votable_cache.vote_by :voter => voter
259
- votable_cache.cached_votes_up.should == 1
260
- end
261
-
262
- it "should update cached down votes_for if there is a down vote column" do
263
- votable_cache.cached_votes_down = 50
264
- votable_cache.vote_by :voter => voter, :vote => 'false'
265
- votable_cache.cached_votes_down.should == 1
266
- end
267
-
268
- it "should update cached up votes_for when a vote up is removed" do
269
- votable_cache.vote_by :voter => voter, :vote => 'true'
270
- votable_cache.unvote :voter => voter
271
- votable_cache.cached_votes_up.should == 0
272
- end
273
-
274
- it "should update cached down votes_for when a vote down is removed" do
275
- votable_cache.vote_by :voter => voter, :vote => 'false'
276
- votable_cache.unvote :voter => voter
277
- votable_cache.cached_votes_down.should == 0
278
- end
279
-
280
- it "should select from cached total votes_for if there a total column" do
281
- votable_cache.vote_by :voter => voter
282
- votable_cache.cached_votes_total = 50
283
- votable_cache.count_votes_total.should == 50
284
- end
285
-
286
- it "should select from cached up votes_for if there is an up vote column" do
287
- votable_cache.vote_by :voter => voter
288
- votable_cache.cached_votes_up = 50
289
- votable_cache.count_votes_up.should == 50
290
- end
291
-
292
- it "should select from cached down votes_for if there is a down vote column" do
293
- votable_cache.vote_by :voter => voter, :vote => 'false'
294
- votable_cache.cached_votes_down = 50
295
- votable_cache.count_votes_down.should == 50
296
- end
297
-
298
- it "should select from cached weighted total if there is a weighted total column" do
299
- votable_cache.vote_by :voter => voter, :vote => 'false'
300
- votable_cache.cached_weighted_total = 50
301
- votable_cache.weighted_total.should == 50
302
- end
303
-
304
- it "should select from cached weighted score if there is a weighted score column" do
305
- votable_cache.vote_by :voter => voter, :vote => 'false'
306
- votable_cache.cached_weighted_score = 50
307
- votable_cache.weighted_score.should == 50
308
- end
309
-
310
- end
311
-
312
- describe "with scoped cached votes_for" do
313
-
314
- it "should update cached total votes_for if there is a total column" do
315
- votable_cache.cached_scoped_test_votes_total = 50
316
- votable_cache.vote_by :voter => voter, :vote_scope => "test"
317
- votable_cache.cached_scoped_test_votes_total.should == 1
318
- end
319
-
320
- it "should update cached total votes_for when a vote up is removed" do
321
- votable_cache.vote_by :voter => voter, :vote => 'true', :vote_scope => "test"
322
- votable_cache.unvote :voter => voter, :vote_scope => "test"
323
- votable_cache.cached_scoped_test_votes_total.should == 0
324
- end
325
-
326
- it "should update cached total votes_for when a vote down is removed" do
327
- votable_cache.vote_by :voter => voter, :vote => 'false', :vote_scope => "test"
328
- votable_cache.unvote :voter => voter, :vote_scope => "test"
329
- votable_cache.cached_scoped_test_votes_total.should == 0
330
- end
331
-
332
- it "should update cached score votes_for if there is a score column" do
333
- votable_cache.cached_scoped_test_votes_score = 50
334
- votable_cache.vote_by :voter => voter, :vote_scope => "test"
335
- votable_cache.cached_scoped_test_votes_score.should == 1
336
- votable_cache.vote_by :voter => voter2, :vote => 'false', :vote_scope => "test"
337
- votable_cache.cached_scoped_test_votes_score.should == 0
338
- votable_cache.vote_by :voter => voter, :vote => 'false', :vote_scope => "test"
339
- votable_cache.cached_scoped_test_votes_score.should == -2
340
- end
341
-
342
- it "should update cached score votes_for when a vote up is removed" do
343
- votable_cache.vote_by :voter => voter, :vote => 'true', :vote_scope => "test"
344
- votable_cache.cached_scoped_test_votes_score.should == 1
345
- votable_cache.unvote :voter => voter, :vote_scope => "test"
346
- votable_cache.cached_scoped_test_votes_score.should == 0
347
- end
348
-
349
- it "should update cached score votes_for when a vote down is removed" do
350
- votable_cache.vote_by :voter => voter, :vote => 'false', :vote_scope => "test"
351
- votable_cache.cached_scoped_test_votes_score.should == -1
352
- votable_cache.unvote :voter => voter, :vote_scope => "test"
353
- votable_cache.cached_scoped_test_votes_score.should == 0
354
- end
355
-
356
- it "should update cached up votes_for if there is an up vote column" do
357
- votable_cache.cached_scoped_test_votes_up = 50
358
- votable_cache.vote_by :voter => voter, :vote_scope => "test"
359
- votable_cache.vote_by :voter => voter, :vote_scope => "test"
360
- votable_cache.cached_scoped_test_votes_up.should == 1
361
- end
362
-
363
- it "should update cached down votes_for if there is a down vote column" do
364
- votable_cache.cached_scoped_test_votes_down = 50
365
- votable_cache.vote_by :voter => voter, :vote => 'false', :vote_scope => "test"
366
- votable_cache.cached_scoped_test_votes_down.should == 1
367
- end
368
-
369
- it "should update cached up votes_for when a vote up is removed" do
370
- votable_cache.vote_by :voter => voter, :vote => 'true', :vote_scope => "test"
371
- votable_cache.unvote :voter => voter, :vote_scope => "test"
372
- votable_cache.cached_scoped_test_votes_up.should == 0
373
- end
374
-
375
- it "should update cached down votes_for when a vote down is removed" do
376
- votable_cache.vote_by :voter => voter, :vote => 'false', :vote_scope => "test"
377
- votable_cache.unvote :voter => voter, :vote_scope => "test"
378
- votable_cache.cached_scoped_test_votes_down.should == 0
379
- end
380
-
381
- it "should select from cached total votes_for if there a total column" do
382
- votable_cache.vote_by :voter => voter, :vote_scope => "test"
383
- votable_cache.cached_scoped_test_votes_total = 50
384
- votable_cache.count_votes_total(false, "test").should == 50
385
- end
386
-
387
- it "should select from cached up votes_for if there is an up vote column" do
388
- votable_cache.vote_by :voter => voter, :vote_scope => "test"
389
- votable_cache.cached_scoped_test_votes_up = 50
390
- votable_cache.count_votes_up(false, "test").should == 50
391
- end
392
-
393
- it "should select from cached down votes_for if there is a down vote column" do
394
- votable_cache.vote_by :voter => voter, :vote => 'false', :vote_scope => "test"
395
- votable_cache.cached_scoped_test_votes_down = 50
396
- votable_cache.count_votes_down(false, "test").should == 50
397
- end
398
-
399
- end
400
-
401
- describe "sti models" do
402
-
403
- it "should be able to vote on a votable child of a non votable sti model" do
404
- votable = VotableChildOfStiNotVotable.create(:name => 'sti child')
405
-
406
- votable.vote_by :voter => voter, :vote => 'yes'
407
- votable.votes_for.size.should == 1
408
- end
409
-
410
- it "should not be able to vote on a parent non votable" do
411
- StiNotVotable.should_not be_votable
412
- end
413
-
414
- it "should be able to vote on a child when its parent is votable" do
415
- votable = ChildOfStiVotable.create(:name => 'sti child')
416
-
417
- votable.vote_by :voter => voter, :vote => 'yes'
418
- votable.votes_for.size.should == 1
419
- end
420
- end
421
- end