mongoid-likes 0.1.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9bb8a570b83cd3821ae4449e7167cea43b928136
4
+ data.tar.gz: 20bb924b84b48ad15efd9e6ec448d49536a1027f
5
+ SHA512:
6
+ metadata.gz: 75fec1396329796f18ea737c66fdf0a7d55ed20cdd28b087fe4f6f92c2c4b1e0cf8e062eeb76d996773f903be3f05c37f52845e2764cb5804b13e11bacd0d64e
7
+ data.tar.gz: 5784e2cba8ff7f01c7dcf90cfab72cdcbd261941c70db1714d497735b38f8b0a68bd90f6eccaf21a2233e10cc9561864f65038f356e4590750cc8add65b3c1ec
data/Gemfile ADDED
@@ -0,0 +1,15 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Declare your gem's dependencies in mongoid_likes.gemspec.
4
+ # Bundler will treat runtime dependencies like base dependencies, and
5
+ # development dependencies will be added by default to the :development group.
6
+ gemspec
7
+
8
+ # Declare any dependencies that are still in development here instead of in
9
+ # your gemspec. These might include edge Rails or gems from your path or
10
+ # Git. Remember to move these dependencies to your gemspec before releasing
11
+ # your gem to rubygems.org.
12
+
13
+ # To use a debugger
14
+ # gem 'byebug', group: [:development, :test]
15
+
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 dingxizheng
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,119 @@
1
+ # mongoid-likes
2
+
3
+ Forked form https://github.com/diowa/mongoid-likeable.git
4
+
5
+ This Gem extends your Mongoid user model to have like and dislike abilities
6
+ to any likeable models
7
+
8
+ ## How to install
9
+
10
+ Install the gem
11
+
12
+ $ gem install mongoid-likes
13
+
14
+ or add the gem to your `Gemfile`
15
+
16
+ gem 'mongoid-likes'
17
+
18
+
19
+ ## How to use
20
+
21
+ Include the `Mongoid::Likeable` module into the models you want to like
22
+
23
+ Include the `Mongoid::Liker` module into the user model
24
+
25
+ ```ruby
26
+ class User
27
+ include Mongoid::Document
28
+ include Mongoid::Liker
29
+
30
+ end
31
+ ```
32
+
33
+
34
+ ```ruby
35
+ class Post
36
+ include Mongoid::Document
37
+ include Mongoid::Likeable
38
+
39
+ end
40
+ ```
41
+
42
+ Now you can `like` or `dislike` your `posts`.
43
+
44
+ ```ruby
45
+ @user.like @post # user likes a post
46
+
47
+ @user.unlike @post # user unlikes a post liked before
48
+
49
+ @user.dislike @post # user dislikes a post
50
+
51
+ @user.undislike @post # user undislike a post disliked before
52
+ ```
53
+
54
+ Note that a likeable resource can not be liked and dislied by the same user at the same time
55
+
56
+ ```ruby
57
+ @user.like @post_one #=> user likes a post
58
+
59
+ @user.dislike @post_one #=> will return false
60
+ ```
61
+
62
+ ```ruby
63
+ @user.dislike @post_one #=> user dislikes a post
64
+
65
+ @user.like @post_one #=> will return false
66
+ ```
67
+
68
+ To get how many likes or dislikes a resource have
69
+
70
+ ```ruby
71
+ @post.likes #=> number of likes current post have
72
+ @post.dislikes #=> number of dislikes current post have
73
+ ```
74
+
75
+ To check if user liked of disliked a resource
76
+
77
+ ```ruby
78
+ @post.liked_by? @user
79
+
80
+ @user.liked? @post
81
+
82
+ @post.disliked_by? @user
83
+
84
+ @user.disliked? @user
85
+ ```
86
+
87
+ To get a resource's `likers` and `dislikers`
88
+
89
+ ```ruby
90
+ @post.likers #=> results in Mongoid::Criteria
91
+ @post.lkiers.where(....)
92
+
93
+ @post.dislikers #=> results in Mongoid::Criteria
94
+ @post.dislkiers.where(....)
95
+ ```
96
+
97
+ To get specified `type` of objects user liked or disliked
98
+
99
+ ```ruby
100
+ @user.all_liked :post #=> results in Mongoid::Criteria
101
+
102
+ @user.all_liked :blabla #=> return nil, since model 'blabla' does not exist
103
+
104
+ @user.all_disliked :post #=> results in Mongoid::Criteria
105
+ ```
106
+
107
+
108
+ ## Contributing
109
+ any issue reports and conributions are welcome
110
+
111
+
112
+ ## Authors
113
+
114
+ + http://github.com/dingxizheng
115
+ + http://dingxizheng.com
116
+
117
+ ## Copyright and license
118
+
119
+ Copyright 2016 dingxizheng under MIT LICENSE.
data/Rakefile ADDED
@@ -0,0 +1,9 @@
1
+ require 'rake'
2
+
3
+ require 'rspec/core/rake_task'
4
+ RSpec::Core::RakeTask.new(:spec) do |spec|
5
+ # spec.rspec_opts = ["-c", "-f progress"]
6
+ spec.pattern = 'spec/**/*_spec.rb'
7
+ end
8
+
9
+ task :default => :spec
@@ -0,0 +1,81 @@
1
+ #!/usr/bin/ruby
2
+ # @Author: dingxizheng
3
+ # @Date: 2016-01-21 15:38:08
4
+ # @Last Modified by: mover
5
+ # @Last Modified time: 2016-01-22 14:34:16
6
+
7
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
8
+
9
+ describe Mongoid::Liker do
10
+
11
+ before(:each) do
12
+ @user = User.create({
13
+ :name => "ding"
14
+ })
15
+ end
16
+
17
+ before(:each) do
18
+ @posts = []
19
+ @posts << Post.create({ :title => "post 1" })
20
+ @posts << Post.create({ :title => "post 2" })
21
+ @posts << Post.create({ :title => "post 3" })
22
+ end
23
+
24
+ it "should return 0 likes" do
25
+ expect(@user.likes).to eq 0
26
+ end
27
+
28
+ it "should return 1 likes" do
29
+ @user.like(@posts[0])
30
+ expect(@posts[0].likes).to eq 1
31
+ end
32
+
33
+ it "should return 1 likes" do
34
+ @user.like(@posts[1])
35
+ expect(@posts[1].likes).to eq 1
36
+ end
37
+
38
+ it "should return the liked post1" do
39
+ @user.like(@posts[1])
40
+ expect(@posts[1].likers.first).to eq @user
41
+ end
42
+
43
+ it "should return the numember of likes" do
44
+ @user.like(@posts[1])
45
+ @user.unlike(@posts[1])
46
+ expect(@posts[1].likes).to eq 0
47
+ end
48
+
49
+ it "should return the numember of likes" do
50
+ @user.like(@posts[1])
51
+ @user.unlike(@posts[1])
52
+ expect(@posts[1].likes).to eq 0
53
+ end
54
+
55
+ it "should return true" do
56
+ @user.like(@posts[2])
57
+ expect(@posts[2].liked_by? @user).to eq true
58
+ expect(@user.liked? @posts[2]).to eq true
59
+ end
60
+
61
+ it "should return true when post1 is disliked by user" do
62
+ @user.dislike(@posts[1])
63
+ @user.like(@posts[1])
64
+ expect(@posts[1].liked_by? @user).to eq false
65
+ expect(@user.disliked? @posts[1]).to eq true
66
+ end
67
+
68
+ it "should return a list of disliked posts" do
69
+ @user.dislike(@posts[0])
70
+ @user.dislike(@posts[1])
71
+ expect(@user.all_disliked('post').count).to eq 2
72
+ end
73
+
74
+ it "should return a list of liked posts" do
75
+ @user.like(@posts[0])
76
+ @user.like(@posts[1])
77
+ @user.dislike(@posts[1])
78
+ expect(@user.all_liked('post').count).to eq 2
79
+ end
80
+
81
+ end
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/ruby
2
+ # @Author: dingxizheng
3
+ # @Date: 2016-01-21 15:36:59
4
+ # @Last Modified by: mover
5
+ # @Last Modified time: 2016-01-21 16:18:48
6
+
7
+ class Post
8
+ include Mongoid::Document
9
+ include Mongoid::Likeable
10
+
11
+ field :title, type: String
12
+ end
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/ruby
2
+ # @Author: mover
3
+ # @Date: 2016-01-21 15:35:58
4
+ # @Last Modified by: dingxizheng
5
+ # @Last Modified time: 2016-01-21 15:36:49
6
+
7
+ class User
8
+ include Mongoid::Document
9
+ include Mongoid::Likeable
10
+ include Mongoid::Liker
11
+
12
+ field :name, type: String
13
+ end
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/ruby
2
+ # @Author: dingxizheng
3
+ # @Date: 2016-01-21 14:33:10
4
+ # @Last Modified by: mover
5
+ # @Last Modified time: 2016-01-22 14:10:09
6
+
7
+ require 'mongoid'
8
+ require 'database_cleaner'
9
+
10
+ Dir["#{File.dirname(__FILE__)}/../lib/**/*.rb"].each { |file|
11
+ require file
12
+ }
13
+
14
+ Mongo::Logger.logger.level = ::Logger::FATAL
15
+ Mongoid.configure do |config|
16
+ config.connect_to "mongoid_likes_test"
17
+ config.options = { :raise_not_found_error => false }
18
+ end
19
+
20
+ Dir["#{File.dirname(__FILE__)}/models/*.rb"].each { |file|
21
+ require file
22
+ }
23
+
24
+ DatabaseCleaner.orm = :mongoid
25
+
26
+ RSpec.configure do |config|
27
+
28
+ config.before(:all) do
29
+ DatabaseCleaner.strategy = :truncation
30
+ end
31
+
32
+ config.before(:each) do
33
+ DatabaseCleaner.start
34
+ end
35
+
36
+ config.after(:each) do
37
+ DatabaseCleaner.clean
38
+ end
39
+
40
+ end
metadata ADDED
@@ -0,0 +1,112 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mongoid-likes
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.9
5
+ platform: ruby
6
+ authors:
7
+ - Xizheng Ding
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-01-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: mongoid
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '3.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '3.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bson_ext
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: database_cleaner
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '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'
69
+ description: adding like and dislike behaviors to Mongoid user model
70
+ email:
71
+ - dingxizheng@gmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - Gemfile
77
+ - LICENSE
78
+ - README.md
79
+ - Rakefile
80
+ - spec/likes_spec.rb
81
+ - spec/models/post.rb
82
+ - spec/models/user.rb
83
+ - spec/spec_helper.rb
84
+ homepage: https://github.com/dingxizheng/mongoid_likes
85
+ licenses:
86
+ - MIT
87
+ metadata: {}
88
+ post_install_message:
89
+ rdoc_options: []
90
+ require_paths:
91
+ - lib
92
+ required_ruby_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ required_rubygems_version: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ requirements: []
103
+ rubyforge_project: mongoid-likes
104
+ rubygems_version: 2.4.2
105
+ signing_key:
106
+ specification_version: 4
107
+ summary: adding like and dislike behaviors to Mongoid user model
108
+ test_files:
109
+ - spec/likes_spec.rb
110
+ - spec/models/post.rb
111
+ - spec/models/user.rb
112
+ - spec/spec_helper.rb