mongoid-likeable 2.0.1 → 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.
- data/CHANGELOG.md +9 -0
- data/README.md +2 -1
- data/lib/mongoid/likeable.rb +2 -1
- data/mongoid-likeable.gemspec +14 -12
- data/test/models/story_with_timestamps.rb +7 -0
- data/test/mongoid_likeable_test.rb +55 -3
- data/test/test_helper.rb +5 -0
- metadata +41 -11
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# mongoid-likeable [](https://travis-ci.org/diowa/mongoid-likeable) [](https://gemnasium.com/diowa/mongoid-likeable) [](https://travis-ci.org/diowa/mongoid-likeable) [](https://gemnasium.com/diowa/mongoid-likeable) [](https://codeclimate.com/github/diowa/mongoid-likeable)
|
2
2
|
|
3
3
|
Add like to your Mongoid documents.
|
4
4
|
This is a fork of `tombell/mongoid-voteable` for people who only need likes.
|
@@ -57,4 +57,5 @@ not called `_id` you can still pass the ID in as the second parameter instead.
|
|
57
57
|
## License
|
58
58
|
|
59
59
|
mongoid-likeable is licensed under the BSD 2-Clause License
|
60
|
+
|
60
61
|
mongoid-voteable is licensed under the MIT License - Copyright (c) 2012 Tom Bell
|
data/lib/mongoid/likeable.rb
CHANGED
@@ -15,6 +15,7 @@ module Mongoid
|
|
15
15
|
unless liked?(id)
|
16
16
|
self.inc :likes, 1
|
17
17
|
self.push :likers, id
|
18
|
+
self.touch
|
18
19
|
end
|
19
20
|
end
|
20
21
|
|
@@ -23,6 +24,7 @@ module Mongoid
|
|
23
24
|
if liked?(id)
|
24
25
|
self.inc :likes, -1
|
25
26
|
self.pull :likers, id
|
27
|
+
self.touch
|
26
28
|
end
|
27
29
|
end
|
28
30
|
|
@@ -41,5 +43,4 @@ module Mongoid
|
|
41
43
|
end
|
42
44
|
end
|
43
45
|
end
|
44
|
-
|
45
46
|
end
|
data/mongoid-likeable.gemspec
CHANGED
@@ -1,25 +1,27 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
$:.push File.expand_path(
|
2
|
+
$:.push File.expand_path('../lib', __FILE__)
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
|
-
s.name =
|
6
|
-
s.version =
|
5
|
+
s.name = 'mongoid-likeable'
|
6
|
+
s.version = '3.0'
|
7
7
|
s.platform = Gem::Platform::RUBY
|
8
|
-
s.authors = [
|
9
|
-
s.email = [
|
10
|
-
s.homepage =
|
11
|
-
s.summary =
|
8
|
+
s.authors = ['Diowa']
|
9
|
+
s.email = ['dev@diowa.com']
|
10
|
+
s.homepage = 'https://github.com/diowa/mongoid-likeable'
|
11
|
+
s.summary = 'Add likes to your Mongoid documents'
|
12
12
|
s.description = s.summary
|
13
13
|
|
14
|
-
s.rubyforge_project =
|
14
|
+
s.rubyforge_project = 'mongoid-likeable'
|
15
15
|
|
16
|
-
s.add_dependency
|
16
|
+
s.add_dependency 'mongoid', '~> 3.1.0'
|
17
17
|
|
18
|
-
s.add_development_dependency
|
19
|
-
s.add_development_dependency
|
18
|
+
s.add_development_dependency 'database_cleaner', '~> 0.9.1'
|
19
|
+
s.add_development_dependency 'rake', '~> 10.0.3'
|
20
|
+
s.add_development_dependency 'debugger'
|
21
|
+
s.add_development_dependency 'delorean'
|
20
22
|
|
21
23
|
s.files = `git ls-files`.split("\n")
|
22
24
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
23
25
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
24
|
-
s.require_paths = [
|
26
|
+
s.require_paths = ['lib']
|
25
27
|
end
|
@@ -1,4 +1,6 @@
|
|
1
1
|
require 'test_helper'
|
2
|
+
require 'debugger'
|
3
|
+
require 'delorean'
|
2
4
|
|
3
5
|
class TestMongoidLikeable < MiniTest::Unit::TestCase
|
4
6
|
def setup
|
@@ -7,10 +9,12 @@ class TestMongoidLikeable < MiniTest::Unit::TestCase
|
|
7
9
|
@simon = User.create name: 'Simon'
|
8
10
|
@emily = User.create name: 'Emily'
|
9
11
|
@story = Story.create name: 'Mongoid Rocks'
|
12
|
+
Delorean.time_travel_to(5.minutes.ago) { @story_with_timestamps = StoryWithTimestamps.create name: 'Mongoid Rocks' }
|
10
13
|
end
|
11
14
|
|
12
15
|
def teardown
|
13
16
|
DatabaseCleaner.clean
|
17
|
+
Delorean.back_to_the_present
|
14
18
|
end
|
15
19
|
|
16
20
|
def test_add_likes_field_to_document
|
@@ -23,17 +27,17 @@ class TestMongoidLikeable < MiniTest::Unit::TestCase
|
|
23
27
|
|
24
28
|
def test_defines_like_method
|
25
29
|
story = Story.new
|
26
|
-
|
30
|
+
assert story.respond_to?('like')
|
27
31
|
end
|
28
32
|
|
29
33
|
def test_defines_unlike_method
|
30
34
|
story = Story.new
|
31
|
-
|
35
|
+
assert story.respond_to?('unlike')
|
32
36
|
end
|
33
37
|
|
34
38
|
def test_defines_liked_method
|
35
39
|
story = Story.new
|
36
|
-
|
40
|
+
assert story.respond_to?('liked?')
|
37
41
|
end
|
38
42
|
|
39
43
|
def test_tracks_number_of_likers
|
@@ -84,4 +88,52 @@ class TestMongoidLikeable < MiniTest::Unit::TestCase
|
|
84
88
|
refute story.liked? @simon
|
85
89
|
assert story.liked? @emily
|
86
90
|
end
|
91
|
+
|
92
|
+
def test_touches_updated_at_when_liking
|
93
|
+
updated_at = @story_with_timestamps.updated_at
|
94
|
+
Delorean.time_travel_to(1.month.from_now) { @story_with_timestamps.like @simon }
|
95
|
+
assert @story_with_timestamps.updated_at > updated_at
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_does_not_touche_updated_at_when_liking_without_success
|
99
|
+
@story_with_timestamps.like @simon
|
100
|
+
updated_at = @story_with_timestamps.updated_at
|
101
|
+
Delorean.time_travel_to(1.month.from_now) { @story_with_timestamps.like @simon }
|
102
|
+
assert @story_with_timestamps.updated_at == updated_at
|
103
|
+
end
|
104
|
+
|
105
|
+
def test_touches_updated_at_when_unliking
|
106
|
+
@story_with_timestamps.like @simon
|
107
|
+
updated_at = @story_with_timestamps.updated_at
|
108
|
+
Delorean.time_travel_to(1.month.from_now) { @story_with_timestamps.unlike @simon }
|
109
|
+
assert @story_with_timestamps.updated_at > updated_at
|
110
|
+
end
|
111
|
+
|
112
|
+
def test_does_not_touche_updated_at_when_unliking_without_success
|
113
|
+
updated_at = @story_with_timestamps.updated_at
|
114
|
+
Delorean.time_travel_to(1.month.from_now) { @story_with_timestamps.unlike @simon }
|
115
|
+
assert @story_with_timestamps.updated_at == updated_at
|
116
|
+
end
|
117
|
+
|
118
|
+
def test_touches_updated_at_and_updates_collection_correctly
|
119
|
+
updated_at = @story_with_timestamps.updated_at
|
120
|
+
Delorean.time_travel_to(1.month.from_now) do
|
121
|
+
@story_with_timestamps.like @simon
|
122
|
+
@story_with_timestamps.like @emily
|
123
|
+
end
|
124
|
+
story = StoryWithTimestamps.where(:name => 'Mongoid Rocks').first
|
125
|
+
assert_equal 2, story.likes
|
126
|
+
assert story.liked? @simon
|
127
|
+
assert story.liked? @emily
|
128
|
+
assert story.updated_at > updated_at
|
129
|
+
updated_at = @story_with_timestamps.updated_at
|
130
|
+
Delorean.time_travel_to(1.month.from_now) do
|
131
|
+
story.unlike @simon
|
132
|
+
end
|
133
|
+
story = StoryWithTimestamps.where(:name => 'Mongoid Rocks').first
|
134
|
+
assert_equal 1, story.likes
|
135
|
+
refute story.liked? @simon
|
136
|
+
assert story.liked? @emily
|
137
|
+
assert story.updated_at > updated_at
|
138
|
+
end
|
87
139
|
end
|
data/test/test_helper.rb
CHANGED
@@ -6,6 +6,11 @@ require 'database_cleaner'
|
|
6
6
|
require 'mongoid'
|
7
7
|
require 'mongoid/likeable'
|
8
8
|
|
9
|
+
require 'debugger'
|
10
|
+
if defined?(Debugger)
|
11
|
+
::Debugger.settings[:autoeval] = true if ::Debugger.respond_to?(:settings)
|
12
|
+
end
|
13
|
+
|
9
14
|
Dir["#{File.dirname(__FILE__)}/models/*.rb"].each { |f| require f }
|
10
15
|
|
11
16
|
Mongoid.connect_to('mongoid-likeable-test')
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid-likeable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: '3.0'
|
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:
|
12
|
+
date: 2013-02-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mongoid
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 3.0
|
21
|
+
version: 3.1.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 3.0
|
29
|
+
version: 3.1.0
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: database_cleaner
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -50,7 +50,7 @@ dependencies:
|
|
50
50
|
requirements:
|
51
51
|
- - ~>
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: 10.0.
|
53
|
+
version: 10.0.3
|
54
54
|
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -58,7 +58,39 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 10.0.
|
61
|
+
version: 10.0.3
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: debugger
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: delorean
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
62
94
|
description: Add likes to your Mongoid documents
|
63
95
|
email:
|
64
96
|
- dev@diowa.com
|
@@ -68,6 +100,7 @@ extra_rdoc_files: []
|
|
68
100
|
files:
|
69
101
|
- .gitignore
|
70
102
|
- .travis.yml
|
103
|
+
- CHANGELOG.md
|
71
104
|
- Gemfile
|
72
105
|
- LICENSE
|
73
106
|
- README.md
|
@@ -75,6 +108,7 @@ files:
|
|
75
108
|
- lib/mongoid/likeable.rb
|
76
109
|
- mongoid-likeable.gemspec
|
77
110
|
- test/models/story.rb
|
111
|
+
- test/models/story_with_timestamps.rb
|
78
112
|
- test/models/user.rb
|
79
113
|
- test/mongoid_likeable_test.rb
|
80
114
|
- test/test_helper.rb
|
@@ -102,8 +136,4 @@ rubygems_version: 1.8.24
|
|
102
136
|
signing_key:
|
103
137
|
specification_version: 3
|
104
138
|
summary: Add likes to your Mongoid documents
|
105
|
-
test_files:
|
106
|
-
- test/models/story.rb
|
107
|
-
- test/models/user.rb
|
108
|
-
- test/mongoid_likeable_test.rb
|
109
|
-
- test/test_helper.rb
|
139
|
+
test_files: []
|