voting 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/README.md +13 -0
- data/lib/voting/models/voting/extension.rb +1 -1
- data/lib/voting/models/voting/vote.rb +6 -0
- data/lib/voting/version.rb +1 -1
- data/spec/models/extension/{after_save_spec.rb → after_create_spec.rb} +11 -1
- data/spec/models/vote/status_spec.rb +35 -0
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cb95d0887656cb736919fb5ab9fda2b3689dc3d3
|
4
|
+
data.tar.gz: 5078155552f020da3f0a75434caceeb81b8c1355
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c9b1fc20e7a7d4b4524121a54ec98bf3f98f6e835ff431466fba4aa2b55eeedba562b9e6b07ad86b4209da3a9bb65db3a1b56c8940c53a2576de686daec07df6
|
7
|
+
data.tar.gz: 02d4e5c839d2a71fb8209bbf35cee97d15532491c4a9ff968de4f3054e2fdd3becdd694e7c30f4e68cdb2c14a09984d16b3f4588b46269a91b53148350037268
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -58,6 +58,19 @@ author_1.vote(resource, 1) # +1 vote
|
|
58
58
|
author_2.vote(resource, -1) # -1 vote
|
59
59
|
```
|
60
60
|
|
61
|
+
### status
|
62
|
+
|
63
|
+
This mehod will return the status of a `Voting::Vote` object as `positive`, `negative` or `none`.
|
64
|
+
|
65
|
+
```ruby
|
66
|
+
author = Author.first
|
67
|
+
resource = Comment.last
|
68
|
+
|
69
|
+
author.vote(resource, 1).status # 'positive'
|
70
|
+
author.vote(resource, -1) # 'negative'
|
71
|
+
author.vote(resource, -1) # 'none'
|
72
|
+
```
|
73
|
+
|
61
74
|
### voting
|
62
75
|
|
63
76
|
A voted resource exposes a cached data about it state:
|
@@ -56,7 +56,7 @@ module Voting
|
|
56
56
|
|
57
57
|
module ClassMethods
|
58
58
|
def voting(as: nil, scoping: nil)
|
59
|
-
|
59
|
+
after_create -> { voting_warm_up scoping: scoping }, unless: -> { as == :author }
|
60
60
|
|
61
61
|
has_many :voting_records,
|
62
62
|
as: :resource,
|
@@ -18,6 +18,12 @@ module Voting
|
|
18
18
|
scope: %i[author_type resource_id resource_type scopeable_id scopeable_type]
|
19
19
|
}
|
20
20
|
|
21
|
+
def status
|
22
|
+
return 'positive' if positive == 1
|
23
|
+
|
24
|
+
negative == 1 ? 'negative' : 'none'
|
25
|
+
end
|
26
|
+
|
21
27
|
def self.create(author:, resource:, scopeable: nil, value:)
|
22
28
|
record = find_or_initialize_by(author: author, resource: resource, scopeable: scopeable)
|
23
29
|
attribute = value.positive? ? :positive : :negative
|
data/lib/voting/version.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'rails_helper'
|
4
4
|
|
5
|
-
RSpec.describe Voting::Extension, '
|
5
|
+
RSpec.describe Voting::Extension, 'after_create' do
|
6
6
|
context 'when record is author' do
|
7
7
|
let!(:record) { build :author }
|
8
8
|
|
@@ -33,5 +33,15 @@ RSpec.describe Voting::Extension, 'after_save' do
|
|
33
33
|
record.save
|
34
34
|
end
|
35
35
|
end
|
36
|
+
|
37
|
+
context 'when update is made' do
|
38
|
+
let!(:record) { create :comment }
|
39
|
+
|
40
|
+
it 'does not warm up the cache' do
|
41
|
+
expect(record).not_to receive(:voting_warm_up)
|
42
|
+
|
43
|
+
record.save
|
44
|
+
end
|
45
|
+
end
|
36
46
|
end
|
37
47
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'rails_helper'
|
4
|
+
|
5
|
+
RSpec.describe Voting::Vote, '.status' do
|
6
|
+
let!(:author) { create :author }
|
7
|
+
let!(:resource) { create :comment }
|
8
|
+
|
9
|
+
context 'with no scope' do
|
10
|
+
|
11
|
+
it 'returns the status' do
|
12
|
+
expect(author.up(resource).status).to eq 'positive'
|
13
|
+
expect(author.down(resource).status).to eq 'negative'
|
14
|
+
expect(author.down(resource).status).to eq 'none'
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'with scope' do
|
19
|
+
let!(:scope) { create :category }
|
20
|
+
|
21
|
+
it 'returns the status' do
|
22
|
+
expect(author.up(resource, scope: scope).status).to eq 'positive'
|
23
|
+
expect(author.down(resource, scope: scope).status).to eq 'negative'
|
24
|
+
expect(author.down(resource, scope: scope).status).to eq 'none'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'respect the scope' do
|
29
|
+
no_scope = author.up(resource)
|
30
|
+
with_scope = author.down(resource, scope: create(:category))
|
31
|
+
|
32
|
+
expect(no_scope.status).to eq 'positive'
|
33
|
+
expect(with_scope.status).to eq 'negative'
|
34
|
+
end
|
35
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: voting
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Washington Botelho
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-02-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -151,7 +151,7 @@ files:
|
|
151
151
|
- spec/factories/comment.rb
|
152
152
|
- spec/factories/voting/vote.rb
|
153
153
|
- spec/factories/voting/voting.rb
|
154
|
-
- spec/models/extension/
|
154
|
+
- spec/models/extension/after_create_spec.rb
|
155
155
|
- spec/models/extension/as_spec.rb
|
156
156
|
- spec/models/extension/down_spec.rb
|
157
157
|
- spec/models/extension/order_by_voting_spec.rb
|
@@ -167,6 +167,7 @@ files:
|
|
167
167
|
- spec/models/extension/voting_spec.rb
|
168
168
|
- spec/models/extension/voting_warm_up_spec.rb
|
169
169
|
- spec/models/vote/create_spec.rb
|
170
|
+
- spec/models/vote/status_spec.rb
|
170
171
|
- spec/models/vote/vote_for_spec.rb
|
171
172
|
- spec/models/vote_spec.rb
|
172
173
|
- spec/models/voting/update_voting_spec.rb
|
@@ -214,6 +215,7 @@ summary: A Binomial proportion confidence interval voting system with scope and
|
|
214
215
|
enabled.
|
215
216
|
test_files:
|
216
217
|
- spec/models/vote/vote_for_spec.rb
|
218
|
+
- spec/models/vote/status_spec.rb
|
217
219
|
- spec/models/vote/create_spec.rb
|
218
220
|
- spec/models/voting_spec.rb
|
219
221
|
- spec/models/vote_spec.rb
|
@@ -228,8 +230,8 @@ test_files:
|
|
228
230
|
- spec/models/extension/voting_records_spec.rb
|
229
231
|
- spec/models/extension/as_spec.rb
|
230
232
|
- spec/models/extension/voted_spec.rb
|
233
|
+
- spec/models/extension/after_create_spec.rb
|
231
234
|
- spec/models/extension/votes_spec.rb
|
232
|
-
- spec/models/extension/after_save_spec.rb
|
233
235
|
- spec/models/extension/votes_records_spec.rb
|
234
236
|
- spec/models/extension/up_spec.rb
|
235
237
|
- spec/models/voting/update_voting_spec.rb
|