recommendable 2.1.2 → 2.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/lib/recommendable/helpers/redis_key_mapper.rb +23 -6
  3. data/lib/recommendable/ratable.rb +16 -3
  4. data/lib/recommendable/version.rb +10 -5
  5. data/test/dummy/app/models/boat.rb +3 -0
  6. data/test/dummy/app/models/book.rb +1 -1
  7. data/test/dummy/app/models/car.rb +4 -0
  8. data/test/dummy/app/models/documentary.rb +3 -0
  9. data/test/dummy/app/models/movie.rb +1 -1
  10. data/test/dummy/app/models/rock.rb +1 -1
  11. data/test/dummy/app/models/user.rb +2 -2
  12. data/test/dummy/app/models/vehicle.rb +3 -0
  13. data/test/dummy/config/application.rb +1 -1
  14. data/test/dummy/config/environments/development.rb +5 -5
  15. data/test/dummy/config/environments/test.rb +5 -5
  16. data/test/dummy/db/development.sqlite3 +0 -0
  17. data/test/dummy/db/migrate/20131226071447_create_vehicles.rb +10 -0
  18. data/test/dummy/db/migrate/20131226165647_add_type_to_movie.rb +5 -0
  19. data/test/dummy/db/schema.rb +22 -14
  20. data/test/dummy/db/test.sqlite3 +0 -0
  21. data/test/dummy/log/test.log +3164 -0
  22. data/test/factories.rb +20 -0
  23. data/test/recommendable/helpers/calculations_test.rb +2 -1
  24. data/test/recommendable/helpers/redis_key_mapper_test.rb +65 -0
  25. data/test/recommendable/ratable_test.rb +87 -1
  26. data/test/recommendable/rater/bookmarker_test.rb +29 -2
  27. data/test/recommendable/rater/disliker_test.rb +29 -2
  28. data/test/recommendable/rater/hider_test.rb +27 -1
  29. data/test/recommendable/rater/liker_test.rb +29 -2
  30. data/test/recommendable/rater/recommender_test.rb +2 -1
  31. data/test/test_helper.rb +1 -2
  32. metadata +41 -46
  33. data/test/dummy/db/test.sqlite3-journal +0 -0
@@ -5,6 +5,7 @@ class LikerTest < MiniTest::Unit::TestCase
5
5
  def setup
6
6
  @user = Factory(:user)
7
7
  @movie = Factory(:movie)
8
+ @doc = Factory(:documentary)
8
9
  end
9
10
 
10
11
  def test_that_like_adds_to_liked_set
@@ -13,6 +14,12 @@ class LikerTest < MiniTest::Unit::TestCase
13
14
  assert_includes @user.liked_movie_ids, @movie.id
14
15
  end
15
16
 
17
+ def test_that_like_adds_subclass_likes_to_liked_set
18
+ refute_includes @user.liked_movie_ids, @doc.id
19
+ @user.like(@doc)
20
+ assert_includes @user.liked_movie_ids, @doc.id
21
+ end
22
+
16
23
  def test_that_cant_like_already_liked_object
17
24
  assert @user.like(@movie)
18
25
  assert_nil @user.like(@movie)
@@ -39,6 +46,13 @@ class LikerTest < MiniTest::Unit::TestCase
39
46
  refute_includes @user.liked_movie_ids, @movie.id
40
47
  end
41
48
 
49
+ def test_that_unlike_removes_subclass_item_from_liked_set
50
+ @user.like(@doc)
51
+ assert_includes @user.liked_movie_ids, @doc.id
52
+ @user.unlike(@doc)
53
+ refute_includes @user.liked_movie_ids, @doc.id
54
+ end
55
+
42
56
  def test_that_cant_unlike_item_unless_liked
43
57
  assert_nil @user.unlike(@movie)
44
58
  end
@@ -47,6 +61,10 @@ class LikerTest < MiniTest::Unit::TestCase
47
61
  refute_includes @user.likes, @movie
48
62
  @user.like(@movie)
49
63
  assert_includes @user.likes, @movie
64
+
65
+ refute_includes @user.likes, @doc
66
+ @user.like(@doc)
67
+ assert_includes @user.likes, @doc
50
68
  end
51
69
 
52
70
  def test_that_dynamic_liked_finder_only_returns_relevant_records
@@ -65,8 +83,9 @@ class LikerTest < MiniTest::Unit::TestCase
65
83
  @user.like(@movie)
66
84
  @user.like(movie2)
67
85
  @user.like(book)
86
+ @user.like(@doc)
68
87
 
69
- assert_equal @user.likes_count, 3
88
+ assert_equal @user.likes_count, 4
70
89
  end
71
90
 
72
91
  def test_that_dynamic_liked_count_methods_only_count_relevant_likes
@@ -75,9 +94,10 @@ class LikerTest < MiniTest::Unit::TestCase
75
94
 
76
95
  @user.like(@movie)
77
96
  @user.like(movie2)
97
+ @user.like(@doc)
78
98
  @user.like(book)
79
99
 
80
- assert_equal @user.liked_movies_count, 2
100
+ assert_equal @user.liked_movies_count, 3
81
101
  assert_equal @user.liked_books_count, 1
82
102
  end
83
103
 
@@ -90,11 +110,14 @@ class LikerTest < MiniTest::Unit::TestCase
90
110
  @user.like(@movie)
91
111
  @user.like(book)
92
112
  @user.like(movie2)
113
+ @user.like(@doc)
93
114
  friend.like(@movie)
94
115
  friend.like(book)
95
116
  friend.like(book2)
117
+ friend.like(@doc)
96
118
 
97
119
  assert_includes @user.likes_in_common_with(friend), @movie
120
+ assert_includes @user.likes_in_common_with(friend), @doc
98
121
  assert_includes @user.likes_in_common_with(friend), book
99
122
  refute_includes @user.likes_in_common_with(friend), movie2
100
123
  refute_includes friend.likes_in_common_with(@user), book2
@@ -106,14 +129,18 @@ class LikerTest < MiniTest::Unit::TestCase
106
129
  book = Factory(:book)
107
130
 
108
131
  @user.like(@movie)
132
+ @user.like(@doc)
109
133
  @user.like(book)
110
134
  friend.like(@movie)
135
+ friend.like(@doc)
111
136
  friend.like(book)
112
137
 
113
138
  assert_includes @user.liked_movies_in_common_with(friend), @movie
139
+ assert_includes @user.liked_movies_in_common_with(friend), @doc
114
140
  assert_includes @user.liked_books_in_common_with(friend), book
115
141
  refute_includes @user.liked_movies_in_common_with(friend), book
116
142
  refute_includes @user.liked_books_in_common_with(friend), @movie
143
+ refute_includes @user.liked_books_in_common_with(friend), @doc
117
144
  end
118
145
 
119
146
  def teardown
@@ -5,7 +5,8 @@ class RecommenderTest < MiniTest::Unit::TestCase
5
5
  def setup
6
6
  @user = Factory(:user)
7
7
  5.times { |x| instance_variable_set(:"@user#{x+1}", Factory(:user)) }
8
- 10.times { |x| instance_variable_set(:"@movie#{x+1}", Factory(:movie)) }
8
+ 5.times { |x| instance_variable_set(:"@movie#{x+1}", Factory(:movie)) }
9
+ 5.upto(9) { |x| instance_variable_set(:"@movie#{x+1}", Factory(:documentary)) }
9
10
  10.times { |x| instance_variable_set(:"@book#{x+1}", Factory(:book)) }
10
11
 
11
12
  [@movie1, @movie2, @movie3, @book4, @book5, @book6].each { |obj| @user.like(obj) }
@@ -1,11 +1,10 @@
1
1
  ENV['RAILS_ENV'] = 'test'
2
2
 
3
3
  require File.expand_path('../dummy/config/environment.rb', __FILE__)
4
- require 'rails/test_help'
5
4
 
5
+ require 'minitest/autorun'
6
6
  require 'minitest/unit'
7
7
  require 'minitest/pride'
8
- require 'minitest/autorun'
9
8
 
10
9
  require 'database_cleaner'
11
10
 
metadata CHANGED
@@ -1,139 +1,125 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: recommendable
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.2
4
+ version: 2.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Celis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-31 00:00:00.000000000 Z
11
+ date: 2014-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 3.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 3.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: redis
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: 2.2.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: 2.2.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: hooks
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: 0.2.1
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: 0.2.1
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: minitest
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: '4.2'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: '4.2'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: miniskirt
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: yard
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rails
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '>='
101
+ - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: 3.1.0
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '>='
108
+ - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: 3.1.0
111
- - !ruby/object:Gem::Dependency
112
- name: sqlite3
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - '>='
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - '>='
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
111
  - !ruby/object:Gem::Dependency
126
112
  name: database_cleaner
127
113
  requirement: !ruby/object:Gem::Requirement
128
114
  requirements:
129
- - - '>='
115
+ - - ">="
130
116
  - !ruby/object:Gem::Version
131
117
  version: '0'
132
118
  type: :development
133
119
  prerelease: false
134
120
  version_requirements: !ruby/object:Gem::Requirement
135
121
  requirements:
136
- - - '>='
122
+ - - ">="
137
123
  - !ruby/object:Gem::Version
138
124
  version: '0'
139
125
  description: |
@@ -144,35 +130,41 @@ executables: []
144
130
  extensions: []
145
131
  extra_rdoc_files: []
146
132
  files:
133
+ - lib/recommendable.rb
147
134
  - lib/recommendable/configuration.rb
135
+ - lib/recommendable/helpers.rb
148
136
  - lib/recommendable/helpers/calculations.rb
149
137
  - lib/recommendable/helpers/queriers.rb
150
138
  - lib/recommendable/helpers/redis_key_mapper.rb
151
- - lib/recommendable/helpers.rb
152
139
  - lib/recommendable/orm/active_record.rb
153
140
  - lib/recommendable/orm/data_mapper.rb
154
141
  - lib/recommendable/orm/mongo_mapper.rb
155
142
  - lib/recommendable/orm/mongoid.rb
156
143
  - lib/recommendable/orm/sequel.rb
144
+ - lib/recommendable/ratable.rb
157
145
  - lib/recommendable/ratable/dislikable.rb
158
146
  - lib/recommendable/ratable/likable.rb
159
- - lib/recommendable/ratable.rb
147
+ - lib/recommendable/rater.rb
160
148
  - lib/recommendable/rater/bookmarker.rb
161
149
  - lib/recommendable/rater/disliker.rb
162
150
  - lib/recommendable/rater/hider.rb
163
151
  - lib/recommendable/rater/liker.rb
164
152
  - lib/recommendable/rater/recommender.rb
165
- - lib/recommendable/rater.rb
166
153
  - lib/recommendable/version.rb
167
154
  - lib/recommendable/workers/delayed_job.rb
168
155
  - lib/recommendable/workers/resque.rb
169
156
  - lib/recommendable/workers/sidekiq.rb
170
157
  - lib/recommendable/workers/torque_box.rb
171
- - lib/recommendable.rb
158
+ - test/dummy/Rakefile
159
+ - test/dummy/app/models/boat.rb
172
160
  - test/dummy/app/models/book.rb
161
+ - test/dummy/app/models/car.rb
162
+ - test/dummy/app/models/documentary.rb
173
163
  - test/dummy/app/models/movie.rb
174
164
  - test/dummy/app/models/rock.rb
175
165
  - test/dummy/app/models/user.rb
166
+ - test/dummy/app/models/vehicle.rb
167
+ - test/dummy/config.ru
176
168
  - test/dummy/config/application.rb
177
169
  - test/dummy/config/boot.rb
178
170
  - test/dummy/config/database.yml
@@ -188,18 +180,17 @@ files:
188
180
  - test/dummy/config/initializers/session_store.rb
189
181
  - test/dummy/config/initializers/wrap_parameters.rb
190
182
  - test/dummy/config/routes.rb
191
- - test/dummy/config.ru
192
183
  - test/dummy/db/development.sqlite3
193
184
  - test/dummy/db/migrate/20121006052300_create_users.rb
194
185
  - test/dummy/db/migrate/20121006052339_create_movies.rb
195
186
  - test/dummy/db/migrate/20121007212545_create_rocks.rb
196
187
  - test/dummy/db/migrate/20121007213144_create_books.rb
188
+ - test/dummy/db/migrate/20131226071447_create_vehicles.rb
189
+ - test/dummy/db/migrate/20131226165647_add_type_to_movie.rb
197
190
  - test/dummy/db/schema.rb
198
191
  - test/dummy/db/seeds.rb
199
192
  - test/dummy/db/test.sqlite3
200
- - test/dummy/db/test.sqlite3-journal
201
193
  - test/dummy/log/test.log
202
- - test/dummy/Rakefile
203
194
  - test/dummy/script/rails
204
195
  - test/factories.rb
205
196
  - test/recommendable/helpers/calculations_test.rb
@@ -224,25 +215,29 @@ require_paths:
224
215
  - lib
225
216
  required_ruby_version: !ruby/object:Gem::Requirement
226
217
  requirements:
227
- - - '>='
218
+ - - ">="
228
219
  - !ruby/object:Gem::Version
229
220
  version: '0'
230
221
  required_rubygems_version: !ruby/object:Gem::Requirement
231
222
  requirements:
232
- - - '>='
223
+ - - ">="
233
224
  - !ruby/object:Gem::Version
234
225
  version: '0'
235
226
  requirements: []
236
227
  rubyforge_project:
237
- rubygems_version: 2.0.3
228
+ rubygems_version: 2.2.0
238
229
  signing_key:
239
230
  specification_version: 4
240
231
  summary: A Like/Dislike recommendation engine for Ruby apps using Redis
241
232
  test_files:
233
+ - test/dummy/app/models/boat.rb
242
234
  - test/dummy/app/models/book.rb
235
+ - test/dummy/app/models/car.rb
236
+ - test/dummy/app/models/documentary.rb
243
237
  - test/dummy/app/models/movie.rb
244
238
  - test/dummy/app/models/rock.rb
245
239
  - test/dummy/app/models/user.rb
240
+ - test/dummy/app/models/vehicle.rb
246
241
  - test/dummy/config/application.rb
247
242
  - test/dummy/config/boot.rb
248
243
  - test/dummy/config/database.yml
@@ -264,10 +259,11 @@ test_files:
264
259
  - test/dummy/db/migrate/20121006052339_create_movies.rb
265
260
  - test/dummy/db/migrate/20121007212545_create_rocks.rb
266
261
  - test/dummy/db/migrate/20121007213144_create_books.rb
262
+ - test/dummy/db/migrate/20131226071447_create_vehicles.rb
263
+ - test/dummy/db/migrate/20131226165647_add_type_to_movie.rb
267
264
  - test/dummy/db/schema.rb
268
265
  - test/dummy/db/seeds.rb
269
266
  - test/dummy/db/test.sqlite3
270
- - test/dummy/db/test.sqlite3-journal
271
267
  - test/dummy/log/test.log
272
268
  - test/dummy/Rakefile
273
269
  - test/dummy/script/rails
@@ -284,4 +280,3 @@ test_files:
284
280
  - test/recommendable/rater/recommender_test.rb
285
281
  - test/recommendable/rater_test.rb
286
282
  - test/test_helper.rb
287
- has_rdoc: yard