recommendable 2.1.0.2 → 2.1.1
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/lib/recommendable/rater/recommender.rb +4 -4
- data/lib/recommendable/version.rb +2 -2
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/models/book.rb +3 -0
- data/test/dummy/app/models/movie.rb +3 -0
- data/test/dummy/app/models/rock.rb +3 -0
- data/test/dummy/app/models/user.rb +4 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +62 -0
- data/test/dummy/config/boot.rb +6 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/recommendable.rb +6 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/routes.rb +58 -0
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/migrate/20121006052300_create_users.rb +9 -0
- data/test/dummy/db/migrate/20121006052339_create_movies.rb +10 -0
- data/test/dummy/db/migrate/20121007212545_create_rocks.rb +9 -0
- data/test/dummy/db/migrate/20121007213144_create_books.rb +10 -0
- data/test/dummy/db/schema.rb +42 -0
- data/test/dummy/db/seeds.rb +7 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/db/test.sqlite3-journal +0 -0
- data/test/dummy/log/test.log +37254 -0
- data/test/dummy/script/rails +6 -0
- data/test/factories.rb +17 -0
- data/test/recommendable/helpers/calculations_test.rb +69 -0
- data/test/recommendable/helpers/redis_key_mapper_test.rb +40 -0
- data/test/recommendable/ratable/dislikable_test.rb +31 -0
- data/test/recommendable/ratable/likable_test.rb +31 -0
- data/test/recommendable/ratable_test.rb +78 -0
- data/test/recommendable/rater/bookmarker_test.rb +122 -0
- data/test/recommendable/rater/disliker_test.rb +122 -0
- data/test/recommendable/rater/hider_test.rb +122 -0
- data/test/recommendable/rater/liker_test.rb +122 -0
- data/test/recommendable/rater/recommender_test.rb +115 -0
- data/test/recommendable/rater_test.rb +29 -0
- data/test/test_helper.rb +25 -0
- metadata +95 -4
@@ -0,0 +1,122 @@
|
|
1
|
+
$LOAD_PATH.unshift File.expand_path('../../test', __FILE__)
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class HiderTest < MiniTest::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
@user = Factory(:user)
|
7
|
+
@movie = Factory(:movie)
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_that_hide_adds_to_hidden_set
|
11
|
+
refute_includes @user.hidden_movie_ids, @movie.id
|
12
|
+
@user.hide(@movie)
|
13
|
+
assert_includes @user.hidden_movie_ids, @movie.id
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_that_cant_hide_already_hidden_object
|
17
|
+
assert @user.hide(@movie)
|
18
|
+
assert_nil @user.hide(@movie)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_that_cant_hide_unratable_object
|
22
|
+
basic_obj = Object.new
|
23
|
+
rock = Factory(:rock)
|
24
|
+
|
25
|
+
assert_raises(ArgumentError) { @user.hide(basic_obj) }
|
26
|
+
assert_raises(ArgumentError) { @user.hide(rock) }
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_that_hides_returns_true_if_hidden
|
30
|
+
refute @user.hides?(@movie)
|
31
|
+
@user.hide(@movie)
|
32
|
+
assert @user.hides?(@movie)
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_that_unhide_removes_item_from_hidden_set
|
36
|
+
@user.hide(@movie)
|
37
|
+
assert_includes @user.hidden_movie_ids, @movie.id
|
38
|
+
@user.unhide(@movie)
|
39
|
+
refute_includes @user.hidden_movie_ids, @movie.id
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_that_cant_unhide_item_unless_hidden
|
43
|
+
assert_nil @user.unhide(@movie)
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_that_hidden_returns_hidden_records
|
47
|
+
refute_includes @user.hiding, @movie
|
48
|
+
@user.hide(@movie)
|
49
|
+
assert_includes @user.hiding, @movie
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_that_dynamic_hidden_finder_only_returns_relevant_records
|
53
|
+
book = Factory(:book)
|
54
|
+
@user.hide(@movie)
|
55
|
+
@user.hide(book)
|
56
|
+
|
57
|
+
refute_includes @user.hidden_movies, book
|
58
|
+
refute_includes @user.hidden_books, @movie
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_that_hides_count_counts_all_hides
|
62
|
+
book = Factory(:book)
|
63
|
+
movie2 = Factory(:movie)
|
64
|
+
|
65
|
+
@user.hide(@movie)
|
66
|
+
@user.hide(movie2)
|
67
|
+
@user.hide(book)
|
68
|
+
|
69
|
+
assert_equal @user.hidden_count, 3
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_that_dynamic_hidden_count_methods_only_count_relevant_hides
|
73
|
+
book = Factory(:book)
|
74
|
+
movie2 = Factory(:movie)
|
75
|
+
|
76
|
+
@user.hide(@movie)
|
77
|
+
@user.hide(movie2)
|
78
|
+
@user.hide(book)
|
79
|
+
|
80
|
+
assert_equal @user.hidden_movies_count, 2
|
81
|
+
assert_equal @user.hidden_books_count, 1
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_that_hides_in_common_with_returns_all_common_hides
|
85
|
+
friend = Factory(:user)
|
86
|
+
movie2 = Factory(:movie)
|
87
|
+
book = Factory(:book)
|
88
|
+
book2 = Factory(:book)
|
89
|
+
|
90
|
+
@user.hide(@movie)
|
91
|
+
@user.hide(book)
|
92
|
+
@user.hide(movie2)
|
93
|
+
friend.hide(@movie)
|
94
|
+
friend.hide(book)
|
95
|
+
friend.hide(book2)
|
96
|
+
|
97
|
+
assert_includes @user.hiding_in_common_with(friend), @movie
|
98
|
+
assert_includes @user.hiding_in_common_with(friend), book
|
99
|
+
refute_includes @user.hiding_in_common_with(friend), movie2
|
100
|
+
refute_includes friend.hiding_in_common_with(@user), book2
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_that_dynamic_hidden_in_common_with_only_returns_relevant_records
|
104
|
+
friend = Factory(:user)
|
105
|
+
movie2 = Factory(:movie)
|
106
|
+
book = Factory(:book)
|
107
|
+
|
108
|
+
@user.hide(@movie)
|
109
|
+
@user.hide(book)
|
110
|
+
friend.hide(@movie)
|
111
|
+
friend.hide(book)
|
112
|
+
|
113
|
+
assert_includes @user.hidden_movies_in_common_with(friend), @movie
|
114
|
+
assert_includes @user.hidden_books_in_common_with(friend), book
|
115
|
+
refute_includes @user.hidden_movies_in_common_with(friend), book
|
116
|
+
refute_includes @user.hidden_books_in_common_with(friend), @movie
|
117
|
+
end
|
118
|
+
|
119
|
+
def teardown
|
120
|
+
Recommendable.redis.flushdb
|
121
|
+
end
|
122
|
+
end
|
@@ -0,0 +1,122 @@
|
|
1
|
+
$LOAD_PATH.unshift File.expand_path('../../test', __FILE__)
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class LikerTest < MiniTest::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
@user = Factory(:user)
|
7
|
+
@movie = Factory(:movie)
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_that_like_adds_to_liked_set
|
11
|
+
refute_includes @user.liked_movie_ids, @movie.id
|
12
|
+
@user.like(@movie)
|
13
|
+
assert_includes @user.liked_movie_ids, @movie.id
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_that_cant_like_already_liked_object
|
17
|
+
assert @user.like(@movie)
|
18
|
+
assert_nil @user.like(@movie)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_that_cant_like_unratable_object
|
22
|
+
basic_obj = Object.new
|
23
|
+
rock = Factory(:rock)
|
24
|
+
|
25
|
+
assert_raises(ArgumentError) { @user.like(basic_obj) }
|
26
|
+
assert_raises(ArgumentError) { @user.like(rock) }
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_that_likes_returns_true_if_liked
|
30
|
+
refute @user.likes?(@movie)
|
31
|
+
@user.like(@movie)
|
32
|
+
assert @user.likes?(@movie)
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_that_unlike_removes_item_from_liked_set
|
36
|
+
@user.like(@movie)
|
37
|
+
assert_includes @user.liked_movie_ids, @movie.id
|
38
|
+
@user.unlike(@movie)
|
39
|
+
refute_includes @user.liked_movie_ids, @movie.id
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_that_cant_unlike_item_unless_liked
|
43
|
+
assert_nil @user.unlike(@movie)
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_that_likes_returns_liked_records
|
47
|
+
refute_includes @user.likes, @movie
|
48
|
+
@user.like(@movie)
|
49
|
+
assert_includes @user.likes, @movie
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_that_dynamic_liked_finder_only_returns_relevant_records
|
53
|
+
book = Factory(:book)
|
54
|
+
@user.like(@movie)
|
55
|
+
@user.like(book)
|
56
|
+
|
57
|
+
refute_includes @user.liked_movies, book
|
58
|
+
refute_includes @user.liked_books, @movie
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_that_likes_count_counts_all_likes
|
62
|
+
book = Factory(:book)
|
63
|
+
movie2 = Factory(:movie)
|
64
|
+
|
65
|
+
@user.like(@movie)
|
66
|
+
@user.like(movie2)
|
67
|
+
@user.like(book)
|
68
|
+
|
69
|
+
assert_equal @user.likes_count, 3
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_that_dynamic_liked_count_methods_only_count_relevant_likes
|
73
|
+
book = Factory(:book)
|
74
|
+
movie2 = Factory(:movie)
|
75
|
+
|
76
|
+
@user.like(@movie)
|
77
|
+
@user.like(movie2)
|
78
|
+
@user.like(book)
|
79
|
+
|
80
|
+
assert_equal @user.liked_movies_count, 2
|
81
|
+
assert_equal @user.liked_books_count, 1
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_that_likes_in_common_with_returns_all_common_likes
|
85
|
+
friend = Factory(:user)
|
86
|
+
movie2 = Factory(:movie)
|
87
|
+
book = Factory(:book)
|
88
|
+
book2 = Factory(:book)
|
89
|
+
|
90
|
+
@user.like(@movie)
|
91
|
+
@user.like(book)
|
92
|
+
@user.like(movie2)
|
93
|
+
friend.like(@movie)
|
94
|
+
friend.like(book)
|
95
|
+
friend.like(book2)
|
96
|
+
|
97
|
+
assert_includes @user.likes_in_common_with(friend), @movie
|
98
|
+
assert_includes @user.likes_in_common_with(friend), book
|
99
|
+
refute_includes @user.likes_in_common_with(friend), movie2
|
100
|
+
refute_includes friend.likes_in_common_with(@user), book2
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_that_dynamic_liked_in_common_with_only_returns_relevant_records
|
104
|
+
friend = Factory(:user)
|
105
|
+
movie2 = Factory(:movie)
|
106
|
+
book = Factory(:book)
|
107
|
+
|
108
|
+
@user.like(@movie)
|
109
|
+
@user.like(book)
|
110
|
+
friend.like(@movie)
|
111
|
+
friend.like(book)
|
112
|
+
|
113
|
+
assert_includes @user.liked_movies_in_common_with(friend), @movie
|
114
|
+
assert_includes @user.liked_books_in_common_with(friend), book
|
115
|
+
refute_includes @user.liked_movies_in_common_with(friend), book
|
116
|
+
refute_includes @user.liked_books_in_common_with(friend), @movie
|
117
|
+
end
|
118
|
+
|
119
|
+
def teardown
|
120
|
+
Recommendable.redis.flushdb
|
121
|
+
end
|
122
|
+
end
|
@@ -0,0 +1,115 @@
|
|
1
|
+
$LOAD_PATH.unshift File.expand_path('../../test', __FILE__)
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class RecommenderTest < MiniTest::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
@user = Factory(:user)
|
7
|
+
5.times { |x| instance_variable_set(:"@user#{x+1}", Factory(:user)) }
|
8
|
+
10.times { |x| instance_variable_set(:"@movie#{x+1}", Factory(:movie)) }
|
9
|
+
10.times { |x| instance_variable_set(:"@book#{x+1}", Factory(:book)) }
|
10
|
+
|
11
|
+
[@movie1, @movie2, @movie3, @book4, @book5, @book6].each { |obj| @user.like(obj) }
|
12
|
+
[@book1, @book2, @book3, @movie4, @movie5, @movie6].each { |obj| @user.dislike(obj) }
|
13
|
+
|
14
|
+
# @user.similarity_with(@user2) should == 1.0
|
15
|
+
[@movie1, @movie2, @movie3, @book4, @book5, @book6, @book7, @book8, @movie9, @movie10].each { |obj| @user2.like(obj) }
|
16
|
+
[@book1, @book2, @book3, @movie4, @movie5, @movie6, @movie8, @movie8, @book9, @book10].each { |obj| @user2.dislike(obj) }
|
17
|
+
|
18
|
+
# @user.similarity_with(@user4) should == 0.25
|
19
|
+
[@movie1, @movie2, @movie3, @book4, @book5, @book6].each { |obj| @user4.like(obj) }
|
20
|
+
[@book1, @book2, @book3].each { |obj| @user4.like(obj) }
|
21
|
+
|
22
|
+
# @user.similarity_with(@user3) should == 0.0
|
23
|
+
[@movie1, @movie2, @movie3].each { |obj| @user3.like(obj) }
|
24
|
+
[@book1, @book2, @book3].each { |obj| @user3.like(obj) }
|
25
|
+
|
26
|
+
# @user.similarity_with(@user1) should == -0.25
|
27
|
+
[@movie1, @movie2, @movie3].each { |obj| @user1.like(obj) }
|
28
|
+
[@book1, @book2, @book3, @movie4, @movie5, @movie6].each { |obj| @user1.like(obj) }
|
29
|
+
|
30
|
+
# @user.similarity_with(@user5) should == -1.0
|
31
|
+
[@movie1, @movie2, @movie3, @book4, @book5, @book6].each { |obj| @user5.dislike(obj) }
|
32
|
+
[@book1, @book2, @book3, @movie4, @movie5, @movie6].each { |obj| @user5.like(obj) }
|
33
|
+
|
34
|
+
Recommendable::Helpers::Calculations.update_similarities_for(@user.id)
|
35
|
+
Recommendable::Helpers::Calculations.update_recommendations_for(@user.id)
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_similar_raters_returns_sorted_similar_users
|
39
|
+
similar_raters = @user.similar_raters(5)
|
40
|
+
|
41
|
+
assert_equal similar_raters[0], @user2
|
42
|
+
assert_equal similar_raters[1], @user4
|
43
|
+
assert_equal similar_raters[2], @user3
|
44
|
+
assert_equal similar_raters[3], @user1
|
45
|
+
assert_equal similar_raters[4], @user5
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_recommended_for_only_returns_relevant_recommendations
|
49
|
+
[@book7, @book8, @book9, @book10].each { |book| refute_includes @user.recommended_movies, book }
|
50
|
+
[@movie7, @movie8, @movie9, @movie10].each { |movie| refute_includes @user.recommended_books, movie }
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_that_it_is_removed_from_recommendable_after_destroy
|
54
|
+
Recommendable::Helpers::Calculations.update_similarities_for(@user2.id)
|
55
|
+
|
56
|
+
@user.hide(@movie10)
|
57
|
+
@user.hide(@book10)
|
58
|
+
@user.bookmark(@movie9)
|
59
|
+
@user.bookmark(@book9)
|
60
|
+
|
61
|
+
sets = [
|
62
|
+
@user.liked_movie_ids,
|
63
|
+
@user.disliked_movie_ids,
|
64
|
+
@user.liked_book_ids,
|
65
|
+
@user.disliked_book_ids,
|
66
|
+
@user.hidden_movie_ids,
|
67
|
+
@user.hidden_book_ids,
|
68
|
+
@user.bookmarked_movie_ids,
|
69
|
+
@user.bookmarked_book_ids,
|
70
|
+
@user.recommended_movies,
|
71
|
+
@user.recommended_books,
|
72
|
+
@user.similar_raters
|
73
|
+
]
|
74
|
+
|
75
|
+
sets.each { |set| refute_empty set }
|
76
|
+
assert_includes @user2.similar_raters(5), @user
|
77
|
+
|
78
|
+
redis_sets = [
|
79
|
+
Recommendable::Helpers::RedisKeyMapper.liked_set_for(Movie, @user.id),
|
80
|
+
Recommendable::Helpers::RedisKeyMapper.liked_set_for(Book, @user.id),
|
81
|
+
Recommendable::Helpers::RedisKeyMapper.disliked_set_for(Movie, @user.id),
|
82
|
+
Recommendable::Helpers::RedisKeyMapper.disliked_set_for(Book, @user.id),
|
83
|
+
Recommendable::Helpers::RedisKeyMapper.hidden_set_for(Movie, @user.id),
|
84
|
+
Recommendable::Helpers::RedisKeyMapper.hidden_set_for(Book, @user.id),
|
85
|
+
Recommendable::Helpers::RedisKeyMapper.bookmarked_set_for(Movie, @user.id),
|
86
|
+
Recommendable::Helpers::RedisKeyMapper.bookmarked_set_for(Book, @user.id),
|
87
|
+
]
|
88
|
+
|
89
|
+
redis_zsets = [
|
90
|
+
Recommendable::Helpers::RedisKeyMapper.recommended_set_for(Movie, @user.id),
|
91
|
+
Recommendable::Helpers::RedisKeyMapper.recommended_set_for(Book, @user.id),
|
92
|
+
Recommendable::Helpers::RedisKeyMapper.similarity_set_for(@user.id)
|
93
|
+
]
|
94
|
+
|
95
|
+
id = @user.id
|
96
|
+
@user.destroy
|
97
|
+
|
98
|
+
redis_sets.each { |set| assert_equal Recommendable.redis.scard(set), 0 }
|
99
|
+
redis_zsets.each { |zset| assert_equal Recommendable.redis.zcard(zset), 0 }
|
100
|
+
|
101
|
+
[@movie1, @movie2, @movie3, @book4, @book5, @book6].each do |obj|
|
102
|
+
refute_includes obj.liked_by_ids, id.to_s
|
103
|
+
end
|
104
|
+
|
105
|
+
[@book1, @book2, @book3, @movie4, @movie5, @movie6].each do |obj|
|
106
|
+
refute_includes obj.disliked_by_ids, id.to_s
|
107
|
+
end
|
108
|
+
|
109
|
+
refute_includes @user2.similar_raters(5).map(&:id), id
|
110
|
+
end
|
111
|
+
|
112
|
+
def teardown
|
113
|
+
Recommendable.redis.flushdb
|
114
|
+
end
|
115
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
$LOAD_PATH.unshift File.expand_path('../../test', __FILE__)
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class RaterTest < MiniTest::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
@user = Factory(:user)
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_that_it_belongs_to_recommendables_user_class
|
10
|
+
assert_instance_of Recommendable.config.user_class, @user
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_that_its_class_responds_to_recommendable_hooks
|
14
|
+
%w[like dislike hide bookmark].each do |action|
|
15
|
+
assert_respond_to @user.class, "before_#{action}"
|
16
|
+
assert_respond_to @user.class, "before_un#{action}"
|
17
|
+
assert_respond_to @user.class, "after_#{action}"
|
18
|
+
assert_respond_to @user.class, "after_un#{action}"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_that_rated_anything_is_false_by_default
|
23
|
+
refute @user.rated_anything?
|
24
|
+
end
|
25
|
+
|
26
|
+
def teardown
|
27
|
+
Recommendable.redis.flushdb
|
28
|
+
end
|
29
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
ENV['RAILS_ENV'] = 'test'
|
2
|
+
|
3
|
+
require File.expand_path('../dummy/config/environment.rb', __FILE__)
|
4
|
+
require 'rails/test_help'
|
5
|
+
|
6
|
+
require 'minitest/unit'
|
7
|
+
require 'minitest/pride'
|
8
|
+
require 'minitest/autorun'
|
9
|
+
|
10
|
+
require 'database_cleaner'
|
11
|
+
|
12
|
+
require 'miniskirt'
|
13
|
+
require 'factories'
|
14
|
+
|
15
|
+
require 'recommendable'
|
16
|
+
|
17
|
+
DatabaseCleaner.strategy = :transaction
|
18
|
+
Rails.backtrace_cleaner.remove_silencers!
|
19
|
+
|
20
|
+
DatabaseCleaner.start
|
21
|
+
|
22
|
+
MiniTest::Unit.after_tests do
|
23
|
+
DatabaseCleaner.clean
|
24
|
+
Recommendable.redis.flushdb
|
25
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: recommendable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.1
|
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-
|
11
|
+
date: 2013-06-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -169,8 +169,54 @@ files:
|
|
169
169
|
- lib/recommendable/workers/sidekiq.rb
|
170
170
|
- lib/recommendable/workers/torque_box.rb
|
171
171
|
- lib/recommendable.rb
|
172
|
+
- test/dummy/app/models/book.rb
|
173
|
+
- test/dummy/app/models/movie.rb
|
174
|
+
- test/dummy/app/models/rock.rb
|
175
|
+
- test/dummy/app/models/user.rb
|
176
|
+
- test/dummy/config/application.rb
|
177
|
+
- test/dummy/config/boot.rb
|
178
|
+
- test/dummy/config/database.yml
|
179
|
+
- test/dummy/config/environment.rb
|
180
|
+
- test/dummy/config/environments/development.rb
|
181
|
+
- test/dummy/config/environments/production.rb
|
182
|
+
- test/dummy/config/environments/test.rb
|
183
|
+
- test/dummy/config/initializers/backtrace_silencers.rb
|
184
|
+
- test/dummy/config/initializers/inflections.rb
|
185
|
+
- test/dummy/config/initializers/mime_types.rb
|
186
|
+
- test/dummy/config/initializers/recommendable.rb
|
187
|
+
- test/dummy/config/initializers/secret_token.rb
|
188
|
+
- test/dummy/config/initializers/session_store.rb
|
189
|
+
- test/dummy/config/initializers/wrap_parameters.rb
|
190
|
+
- test/dummy/config/routes.rb
|
191
|
+
- test/dummy/config.ru
|
192
|
+
- test/dummy/db/development.sqlite3
|
193
|
+
- test/dummy/db/migrate/20121006052300_create_users.rb
|
194
|
+
- test/dummy/db/migrate/20121006052339_create_movies.rb
|
195
|
+
- test/dummy/db/migrate/20121007212545_create_rocks.rb
|
196
|
+
- test/dummy/db/migrate/20121007213144_create_books.rb
|
197
|
+
- test/dummy/db/schema.rb
|
198
|
+
- test/dummy/db/seeds.rb
|
199
|
+
- test/dummy/db/test.sqlite3
|
200
|
+
- test/dummy/db/test.sqlite3-journal
|
201
|
+
- test/dummy/log/test.log
|
202
|
+
- test/dummy/Rakefile
|
203
|
+
- test/dummy/script/rails
|
204
|
+
- test/factories.rb
|
205
|
+
- test/recommendable/helpers/calculations_test.rb
|
206
|
+
- test/recommendable/helpers/redis_key_mapper_test.rb
|
207
|
+
- test/recommendable/ratable/dislikable_test.rb
|
208
|
+
- test/recommendable/ratable/likable_test.rb
|
209
|
+
- test/recommendable/ratable_test.rb
|
210
|
+
- test/recommendable/rater/bookmarker_test.rb
|
211
|
+
- test/recommendable/rater/disliker_test.rb
|
212
|
+
- test/recommendable/rater/hider_test.rb
|
213
|
+
- test/recommendable/rater/liker_test.rb
|
214
|
+
- test/recommendable/rater/recommender_test.rb
|
215
|
+
- test/recommendable/rater_test.rb
|
216
|
+
- test/test_helper.rb
|
172
217
|
homepage: https://github.com/davidcelis/recommendable
|
173
|
-
licenses:
|
218
|
+
licenses:
|
219
|
+
- MIT
|
174
220
|
metadata: {}
|
175
221
|
post_install_message:
|
176
222
|
rdoc_options: []
|
@@ -192,5 +238,50 @@ rubygems_version: 2.0.2
|
|
192
238
|
signing_key:
|
193
239
|
specification_version: 4
|
194
240
|
summary: A Like/Dislike recommendation engine for Ruby apps using Redis
|
195
|
-
test_files:
|
241
|
+
test_files:
|
242
|
+
- test/dummy/app/models/book.rb
|
243
|
+
- test/dummy/app/models/movie.rb
|
244
|
+
- test/dummy/app/models/rock.rb
|
245
|
+
- test/dummy/app/models/user.rb
|
246
|
+
- test/dummy/config/application.rb
|
247
|
+
- test/dummy/config/boot.rb
|
248
|
+
- test/dummy/config/database.yml
|
249
|
+
- test/dummy/config/environment.rb
|
250
|
+
- test/dummy/config/environments/development.rb
|
251
|
+
- test/dummy/config/environments/production.rb
|
252
|
+
- test/dummy/config/environments/test.rb
|
253
|
+
- test/dummy/config/initializers/backtrace_silencers.rb
|
254
|
+
- test/dummy/config/initializers/inflections.rb
|
255
|
+
- test/dummy/config/initializers/mime_types.rb
|
256
|
+
- test/dummy/config/initializers/recommendable.rb
|
257
|
+
- test/dummy/config/initializers/secret_token.rb
|
258
|
+
- test/dummy/config/initializers/session_store.rb
|
259
|
+
- test/dummy/config/initializers/wrap_parameters.rb
|
260
|
+
- test/dummy/config/routes.rb
|
261
|
+
- test/dummy/config.ru
|
262
|
+
- test/dummy/db/development.sqlite3
|
263
|
+
- test/dummy/db/migrate/20121006052300_create_users.rb
|
264
|
+
- test/dummy/db/migrate/20121006052339_create_movies.rb
|
265
|
+
- test/dummy/db/migrate/20121007212545_create_rocks.rb
|
266
|
+
- test/dummy/db/migrate/20121007213144_create_books.rb
|
267
|
+
- test/dummy/db/schema.rb
|
268
|
+
- test/dummy/db/seeds.rb
|
269
|
+
- test/dummy/db/test.sqlite3
|
270
|
+
- test/dummy/db/test.sqlite3-journal
|
271
|
+
- test/dummy/log/test.log
|
272
|
+
- test/dummy/Rakefile
|
273
|
+
- test/dummy/script/rails
|
274
|
+
- test/factories.rb
|
275
|
+
- test/recommendable/helpers/calculations_test.rb
|
276
|
+
- test/recommendable/helpers/redis_key_mapper_test.rb
|
277
|
+
- test/recommendable/ratable/dislikable_test.rb
|
278
|
+
- test/recommendable/ratable/likable_test.rb
|
279
|
+
- test/recommendable/ratable_test.rb
|
280
|
+
- test/recommendable/rater/bookmarker_test.rb
|
281
|
+
- test/recommendable/rater/disliker_test.rb
|
282
|
+
- test/recommendable/rater/hider_test.rb
|
283
|
+
- test/recommendable/rater/liker_test.rb
|
284
|
+
- test/recommendable/rater/recommender_test.rb
|
285
|
+
- test/recommendable/rater_test.rb
|
286
|
+
- test/test_helper.rb
|
196
287
|
has_rdoc: yard
|