recommendable 2.1.2 → 2.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/recommendable/helpers/redis_key_mapper.rb +23 -6
- data/lib/recommendable/ratable.rb +16 -3
- data/lib/recommendable/version.rb +10 -5
- data/test/dummy/app/models/boat.rb +3 -0
- data/test/dummy/app/models/book.rb +1 -1
- data/test/dummy/app/models/car.rb +4 -0
- data/test/dummy/app/models/documentary.rb +3 -0
- data/test/dummy/app/models/movie.rb +1 -1
- data/test/dummy/app/models/rock.rb +1 -1
- data/test/dummy/app/models/user.rb +2 -2
- data/test/dummy/app/models/vehicle.rb +3 -0
- data/test/dummy/config/application.rb +1 -1
- data/test/dummy/config/environments/development.rb +5 -5
- data/test/dummy/config/environments/test.rb +5 -5
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/migrate/20131226071447_create_vehicles.rb +10 -0
- data/test/dummy/db/migrate/20131226165647_add_type_to_movie.rb +5 -0
- data/test/dummy/db/schema.rb +22 -14
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/test.log +3164 -0
- data/test/factories.rb +20 -0
- data/test/recommendable/helpers/calculations_test.rb +2 -1
- data/test/recommendable/helpers/redis_key_mapper_test.rb +65 -0
- data/test/recommendable/ratable_test.rb +87 -1
- data/test/recommendable/rater/bookmarker_test.rb +29 -2
- data/test/recommendable/rater/disliker_test.rb +29 -2
- data/test/recommendable/rater/hider_test.rb +27 -1
- data/test/recommendable/rater/liker_test.rb +29 -2
- data/test/recommendable/rater/recommender_test.rb +2 -1
- data/test/test_helper.rb +1 -2
- metadata +41 -46
- data/test/dummy/db/test.sqlite3-journal +0 -0
data/test/factories.rb
CHANGED
@@ -7,6 +7,12 @@ Factory.define(:movie) do |f|
|
|
7
7
|
f.year { '200%d'.to_i }
|
8
8
|
end
|
9
9
|
|
10
|
+
Factory.define(:documentary) do |f|
|
11
|
+
f.title '%{year}: A Space Documentary'
|
12
|
+
f.year { '200%d'.to_i }
|
13
|
+
f.type 'Documentary'
|
14
|
+
end
|
15
|
+
|
10
16
|
Factory.define(:book) do |f|
|
11
17
|
f.title 'Harry Potter Vol. %d'
|
12
18
|
f.author 'J.K. Rowling'
|
@@ -15,3 +21,17 @@ end
|
|
15
21
|
Factory.define(:rock) do |f|
|
16
22
|
f.name 'Boring Specimen No. %d'
|
17
23
|
end
|
24
|
+
|
25
|
+
Factory.define(:vehicle) do |f|
|
26
|
+
f.color 'blue'
|
27
|
+
end
|
28
|
+
|
29
|
+
Factory.define(:car) do |f|
|
30
|
+
f.type 'Car'
|
31
|
+
f.color 'red'
|
32
|
+
end
|
33
|
+
|
34
|
+
Factory.define(:boat) do |f|
|
35
|
+
f.type 'Boat'
|
36
|
+
f.color 'white'
|
37
|
+
end
|
@@ -5,7 +5,8 @@ class CalculationsTest < 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
|
-
|
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) }
|
@@ -37,4 +37,69 @@ class RedisKeyMapperTest < MiniTest::Unit::TestCase
|
|
37
37
|
def test_output_of_score_set_for
|
38
38
|
assert_equal Recommendable::Helpers::RedisKeyMapper.score_set_for(Movie), 'recommendable:movies:scores'
|
39
39
|
end
|
40
|
+
|
41
|
+
def test_output_of_liked_set_for_subclass_of_ratable
|
42
|
+
assert_equal Recommendable::Helpers::RedisKeyMapper.liked_set_for(Documentary, 1), 'recommendable:users:1:liked_movies'
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_output_of_disliked_set_for_subclass_of_ratable
|
46
|
+
assert_equal Recommendable::Helpers::RedisKeyMapper.disliked_set_for(Documentary, 1), 'recommendable:users:1:disliked_movies'
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_output_of_hidden_set_for_subclass_of_ratable
|
50
|
+
assert_equal Recommendable::Helpers::RedisKeyMapper.hidden_set_for(Documentary, 1), 'recommendable:users:1:hidden_movies'
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_output_of_bookmarked_set_for_subclass_of_ratable
|
54
|
+
assert_equal Recommendable::Helpers::RedisKeyMapper.bookmarked_set_for(Documentary, 1), 'recommendable:users:1:bookmarked_movies'
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_output_of_recommended_set_for_subclass_of_ratable
|
58
|
+
assert_equal Recommendable::Helpers::RedisKeyMapper.recommended_set_for(Documentary, 1), 'recommendable:users:1:recommended_movies'
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_output_of_liked_by_set_for_subclass_of_ratable
|
62
|
+
assert_equal Recommendable::Helpers::RedisKeyMapper.liked_by_set_for(Documentary, 1), 'recommendable:movies:1:liked_by'
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_output_of_disliked_by_set_for_subclass_of_ratable
|
66
|
+
assert_equal Recommendable::Helpers::RedisKeyMapper.disliked_by_set_for(Documentary, 1), 'recommendable:movies:1:disliked_by'
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_output_of_score_set_for_subclass_of_ratable
|
70
|
+
assert_equal Recommendable::Helpers::RedisKeyMapper.score_set_for(Documentary), 'recommendable:movies:scores'
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_output_of_liked_set_for_ratable_subclass_of_nonratable
|
74
|
+
assert_equal Recommendable::Helpers::RedisKeyMapper.liked_set_for(Car, 1), 'recommendable:users:1:liked_cars'
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_output_of_disliked_set_for_ratable_subclass_of_nonratable
|
78
|
+
assert_equal Recommendable::Helpers::RedisKeyMapper.disliked_set_for(Car, 1), 'recommendable:users:1:disliked_cars'
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_output_of_hidden_set_for_ratable_subclass_of_nonratable
|
82
|
+
assert_equal Recommendable::Helpers::RedisKeyMapper.hidden_set_for(Car, 1), 'recommendable:users:1:hidden_cars'
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_output_of_bookmarked_set_for_ratable_subclass_of_nonratable
|
86
|
+
assert_equal Recommendable::Helpers::RedisKeyMapper.bookmarked_set_for(Car, 1), 'recommendable:users:1:bookmarked_cars'
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_output_of_recommended_set_for_ratable_subclass_of_nonratable
|
90
|
+
assert_equal Recommendable::Helpers::RedisKeyMapper.recommended_set_for(Car, 1), 'recommendable:users:1:recommended_cars'
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_output_of_liked_by_set_for_ratable_subclass_of_nonratable
|
94
|
+
assert_equal Recommendable::Helpers::RedisKeyMapper.liked_by_set_for(Car, 1), 'recommendable:cars:1:liked_by'
|
95
|
+
end
|
96
|
+
|
97
|
+
def test_output_of_disliked_by_set_for_ratable_subclass_of_nonratable
|
98
|
+
assert_equal Recommendable::Helpers::RedisKeyMapper.disliked_by_set_for(Car, 1), 'recommendable:cars:1:disliked_by'
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_output_of_score_set_for_ratable_subclass_of_nonratable
|
102
|
+
assert_equal Recommendable::Helpers::RedisKeyMapper.score_set_for(Car), 'recommendable:cars:scores'
|
103
|
+
end
|
104
|
+
|
40
105
|
end
|
@@ -6,15 +6,24 @@ class RatableTest < MiniTest::Unit::TestCase
|
|
6
6
|
@movie = Factory(:movie)
|
7
7
|
@book = Factory(:book)
|
8
8
|
@rock = Factory(:rock)
|
9
|
+
@vehicle = Factory(:vehicle)
|
9
10
|
end
|
10
11
|
|
11
12
|
def test_recommendable_predicate_works
|
12
13
|
assert Movie.recommendable?
|
13
14
|
assert @movie.recommendable?
|
15
|
+
assert Documentary.recommendable?
|
16
|
+
assert Factory(:documentary).recommendable?
|
14
17
|
assert Book.recommendable?
|
15
18
|
assert @book.recommendable?
|
16
19
|
refute Rock.recommendable?
|
17
20
|
refute @rock.recommendable?
|
21
|
+
assert Car.recommendable?
|
22
|
+
assert Factory(:car).recommendable?
|
23
|
+
refute Vehicle.recommendable?
|
24
|
+
refute @vehicle.recommendable?
|
25
|
+
refute Boat.recommendable?
|
26
|
+
refute Factory(:boat).recommendable?
|
18
27
|
end
|
19
28
|
|
20
29
|
def test_rated_predicate_works
|
@@ -24,7 +33,7 @@ class RatableTest < MiniTest::Unit::TestCase
|
|
24
33
|
assert @movie.rated?
|
25
34
|
end
|
26
35
|
|
27
|
-
def
|
36
|
+
def test_top_scope_deprecated_syntax_returns_best_things
|
28
37
|
@book2 = Factory(:book)
|
29
38
|
@book3 = Factory(:book)
|
30
39
|
@user = Factory(:user)
|
@@ -41,6 +50,56 @@ class RatableTest < MiniTest::Unit::TestCase
|
|
41
50
|
assert_equal top[2], @book
|
42
51
|
end
|
43
52
|
|
53
|
+
def test_top_scope_returns_best_things
|
54
|
+
@book2 = Factory(:book)
|
55
|
+
@book3 = Factory(:book)
|
56
|
+
@user = Factory(:user)
|
57
|
+
@friend = Factory(:user)
|
58
|
+
|
59
|
+
@user.like(@book2)
|
60
|
+
@friend.like(@book2)
|
61
|
+
@user.like(@book3)
|
62
|
+
@user.dislike(@book)
|
63
|
+
|
64
|
+
top = Book.top(:count => 3)
|
65
|
+
assert_equal top[0], @book2
|
66
|
+
assert_equal top[1], @book3
|
67
|
+
assert_equal top[2], @book
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_top_scope_returns_best_things_for_ratable_base_class
|
71
|
+
@movie2 = Factory(:movie)
|
72
|
+
@doc = Factory(:documentary)
|
73
|
+
@user = Factory(:user)
|
74
|
+
@friend = Factory(:user)
|
75
|
+
|
76
|
+
@user.like(@doc)
|
77
|
+
@friend.like(@doc)
|
78
|
+
@user.like(@movie2)
|
79
|
+
@user.dislike(@movie)
|
80
|
+
|
81
|
+
top = Movie.top(:count => 3)
|
82
|
+
assert_equal top[0], @doc
|
83
|
+
assert_equal top[1], @movie2
|
84
|
+
assert_equal top[2], @movie
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_top_scope_returns_best_things_with_start
|
88
|
+
@movie2 = Factory(:movie)
|
89
|
+
@doc = Factory(:documentary)
|
90
|
+
@user = Factory(:user)
|
91
|
+
@friend = Factory(:user)
|
92
|
+
|
93
|
+
@user.like(@doc)
|
94
|
+
@friend.like(@doc)
|
95
|
+
@user.like(@movie2)
|
96
|
+
@user.dislike(@movie)
|
97
|
+
|
98
|
+
top = Movie.top(:count =>2, :offset => 1)
|
99
|
+
assert_equal top[0], @movie2
|
100
|
+
assert_equal top[1], @movie
|
101
|
+
end
|
102
|
+
|
44
103
|
def test_removed_from_recommendable_upon_destruction
|
45
104
|
@user = Factory(:user)
|
46
105
|
@friend = Factory(:user)
|
@@ -72,6 +131,33 @@ class RatableTest < MiniTest::Unit::TestCase
|
|
72
131
|
assert_empty @buddy.bookmarked_books
|
73
132
|
end
|
74
133
|
|
134
|
+
def test_ratable_subclass_object_removed_from_recommendable_upon_destruction
|
135
|
+
@doc = Factory(:documentary)
|
136
|
+
@user = Factory(:user)
|
137
|
+
@friend = Factory(:user)
|
138
|
+
@buddy = Factory(:user)
|
139
|
+
@stranger = Factory(:user)
|
140
|
+
@user.like(@doc)
|
141
|
+
@friend.dislike(@doc)
|
142
|
+
@buddy.hide(@doc)
|
143
|
+
@stranger.bookmark(@doc)
|
144
|
+
|
145
|
+
liked_by_set = Recommendable::Helpers::RedisKeyMapper.liked_by_set_for(@doc.class, @doc.id)
|
146
|
+
disliked_by_set = Recommendable::Helpers::RedisKeyMapper.disliked_by_set_for(@doc.class, @doc.id)
|
147
|
+
[liked_by_set, disliked_by_set].each { |set| assert_equal Recommendable.redis.scard(set), 1 }
|
148
|
+
|
149
|
+
assert @user.likes?(@doc)
|
150
|
+
assert @friend.dislikes?(@doc)
|
151
|
+
assert @buddy.hides?(@doc)
|
152
|
+
|
153
|
+
@doc.destroy
|
154
|
+
|
155
|
+
[liked_by_set, disliked_by_set].each { |set| assert_equal Recommendable.redis.scard(set), 0 }
|
156
|
+
|
157
|
+
assert_empty @buddy.hidden_movies
|
158
|
+
assert_empty @stranger.bookmarked_books
|
159
|
+
end
|
160
|
+
|
75
161
|
def teardown
|
76
162
|
Recommendable.redis.flushdb
|
77
163
|
end
|
@@ -5,6 +5,7 @@ class BookmarkerTest < 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_bookmark_adds_to_bookmarked_set
|
@@ -13,6 +14,12 @@ class BookmarkerTest < MiniTest::Unit::TestCase
|
|
13
14
|
assert_includes @user.bookmarked_movie_ids, @movie.id
|
14
15
|
end
|
15
16
|
|
17
|
+
def test_that_bookmark_adds_subclass_bookmarks_to_bookmarked_set
|
18
|
+
refute_includes @user.bookmarked_movie_ids, @doc.id
|
19
|
+
@user.bookmark(@doc)
|
20
|
+
assert_includes @user.bookmarked_movie_ids, @doc.id
|
21
|
+
end
|
22
|
+
|
16
23
|
def test_that_cant_bookmark_already_bookmarked_object
|
17
24
|
assert @user.bookmark(@movie)
|
18
25
|
assert_nil @user.bookmark(@movie)
|
@@ -39,6 +46,13 @@ class BookmarkerTest < MiniTest::Unit::TestCase
|
|
39
46
|
refute_includes @user.bookmarked_movie_ids, @movie.id
|
40
47
|
end
|
41
48
|
|
49
|
+
def test_that_unbookmark_removes_subclass_item_from_bookmarked_set
|
50
|
+
@user.bookmark(@doc)
|
51
|
+
assert_includes @user.bookmarked_movie_ids, @doc.id
|
52
|
+
@user.unbookmark(@doc)
|
53
|
+
refute_includes @user.bookmarked_movie_ids, @doc.id
|
54
|
+
end
|
55
|
+
|
42
56
|
def test_that_cant_unbookmark_item_unless_bookmarked
|
43
57
|
assert_nil @user.unbookmark(@movie)
|
44
58
|
end
|
@@ -47,6 +61,10 @@ class BookmarkerTest < MiniTest::Unit::TestCase
|
|
47
61
|
refute_includes @user.bookmarks, @movie
|
48
62
|
@user.bookmark(@movie)
|
49
63
|
assert_includes @user.bookmarks, @movie
|
64
|
+
|
65
|
+
refute_includes @user.bookmarks, @doc
|
66
|
+
@user.bookmark(@doc)
|
67
|
+
assert_includes @user.bookmarks, @doc
|
50
68
|
end
|
51
69
|
|
52
70
|
def test_that_dynamic_bookmarked_finder_only_returns_relevant_records
|
@@ -65,8 +83,9 @@ class BookmarkerTest < MiniTest::Unit::TestCase
|
|
65
83
|
@user.bookmark(@movie)
|
66
84
|
@user.bookmark(movie2)
|
67
85
|
@user.bookmark(book)
|
86
|
+
@user.bookmark(@doc)
|
68
87
|
|
69
|
-
assert_equal @user.bookmarks_count,
|
88
|
+
assert_equal @user.bookmarks_count, 4
|
70
89
|
end
|
71
90
|
|
72
91
|
def test_that_dynamic_bookmarked_count_methods_only_count_relevant_bookmarks
|
@@ -75,9 +94,10 @@ class BookmarkerTest < MiniTest::Unit::TestCase
|
|
75
94
|
|
76
95
|
@user.bookmark(@movie)
|
77
96
|
@user.bookmark(movie2)
|
97
|
+
@user.bookmark(@doc)
|
78
98
|
@user.bookmark(book)
|
79
99
|
|
80
|
-
assert_equal @user.bookmarked_movies_count,
|
100
|
+
assert_equal @user.bookmarked_movies_count, 3
|
81
101
|
assert_equal @user.bookmarked_books_count, 1
|
82
102
|
end
|
83
103
|
|
@@ -90,11 +110,14 @@ class BookmarkerTest < MiniTest::Unit::TestCase
|
|
90
110
|
@user.bookmark(@movie)
|
91
111
|
@user.bookmark(book)
|
92
112
|
@user.bookmark(movie2)
|
113
|
+
@user.bookmark(@doc)
|
93
114
|
friend.bookmark(@movie)
|
94
115
|
friend.bookmark(book)
|
95
116
|
friend.bookmark(book2)
|
117
|
+
friend.bookmark(@doc)
|
96
118
|
|
97
119
|
assert_includes @user.bookmarks_in_common_with(friend), @movie
|
120
|
+
assert_includes @user.bookmarks_in_common_with(friend), @doc
|
98
121
|
assert_includes @user.bookmarks_in_common_with(friend), book
|
99
122
|
refute_includes @user.bookmarks_in_common_with(friend), movie2
|
100
123
|
refute_includes friend.bookmarks_in_common_with(@user), book2
|
@@ -106,14 +129,18 @@ class BookmarkerTest < MiniTest::Unit::TestCase
|
|
106
129
|
book = Factory(:book)
|
107
130
|
|
108
131
|
@user.bookmark(@movie)
|
132
|
+
@user.bookmark(@doc)
|
109
133
|
@user.bookmark(book)
|
110
134
|
friend.bookmark(@movie)
|
111
135
|
friend.bookmark(book)
|
136
|
+
friend.bookmark(@doc)
|
112
137
|
|
113
138
|
assert_includes @user.bookmarked_movies_in_common_with(friend), @movie
|
139
|
+
assert_includes @user.bookmarked_movies_in_common_with(friend), @doc
|
114
140
|
assert_includes @user.bookmarked_books_in_common_with(friend), book
|
115
141
|
refute_includes @user.bookmarked_movies_in_common_with(friend), book
|
116
142
|
refute_includes @user.bookmarked_books_in_common_with(friend), @movie
|
143
|
+
refute_includes @user.bookmarked_books_in_common_with(friend), @doc
|
117
144
|
end
|
118
145
|
|
119
146
|
def teardown
|
@@ -5,6 +5,7 @@ class DislikerTest < 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_dislike_adds_to_disliked_set
|
@@ -13,6 +14,12 @@ class DislikerTest < MiniTest::Unit::TestCase
|
|
13
14
|
assert_includes @user.disliked_movie_ids, @movie.id
|
14
15
|
end
|
15
16
|
|
17
|
+
def test_that_dislike_adds_subclass_dislikes_to_disliked_set
|
18
|
+
refute_includes @user.disliked_movie_ids, @doc.id
|
19
|
+
@user.dislike(@doc)
|
20
|
+
assert_includes @user.disliked_movie_ids, @doc.id
|
21
|
+
end
|
22
|
+
|
16
23
|
def test_that_cant_dislike_already_disliked_object
|
17
24
|
assert @user.dislike(@movie)
|
18
25
|
assert_nil @user.dislike(@movie)
|
@@ -39,6 +46,13 @@ class DislikerTest < MiniTest::Unit::TestCase
|
|
39
46
|
refute_includes @user.disliked_movie_ids, @movie.id
|
40
47
|
end
|
41
48
|
|
49
|
+
def test_that_undislike_removes_subclass_item_from_disliked_set
|
50
|
+
@user.dislike(@doc)
|
51
|
+
assert_includes @user.disliked_movie_ids, @doc.id
|
52
|
+
@user.undislike(@doc)
|
53
|
+
refute_includes @user.disliked_movie_ids, @doc.id
|
54
|
+
end
|
55
|
+
|
42
56
|
def test_that_cant_undislike_item_unless_disliked
|
43
57
|
assert_nil @user.undislike(@movie)
|
44
58
|
end
|
@@ -47,6 +61,10 @@ class DislikerTest < MiniTest::Unit::TestCase
|
|
47
61
|
refute_includes @user.dislikes, @movie
|
48
62
|
@user.dislike(@movie)
|
49
63
|
assert_includes @user.dislikes, @movie
|
64
|
+
|
65
|
+
refute_includes @user.dislikes, @doc
|
66
|
+
@user.dislike(@doc)
|
67
|
+
assert_includes @user.dislikes, @doc
|
50
68
|
end
|
51
69
|
|
52
70
|
def test_that_dynamic_disliked_finder_only_returns_relevant_records
|
@@ -65,8 +83,9 @@ class DislikerTest < MiniTest::Unit::TestCase
|
|
65
83
|
@user.dislike(@movie)
|
66
84
|
@user.dislike(movie2)
|
67
85
|
@user.dislike(book)
|
86
|
+
@user.dislike(@doc)
|
68
87
|
|
69
|
-
assert_equal @user.dislikes_count,
|
88
|
+
assert_equal @user.dislikes_count, 4
|
70
89
|
end
|
71
90
|
|
72
91
|
def test_that_dynamic_disliked_count_methods_only_count_relevant_dislikes
|
@@ -75,9 +94,10 @@ class DislikerTest < MiniTest::Unit::TestCase
|
|
75
94
|
|
76
95
|
@user.dislike(@movie)
|
77
96
|
@user.dislike(movie2)
|
97
|
+
@user.dislike(@doc)
|
78
98
|
@user.dislike(book)
|
79
99
|
|
80
|
-
assert_equal @user.disliked_movies_count,
|
100
|
+
assert_equal @user.disliked_movies_count, 3
|
81
101
|
assert_equal @user.disliked_books_count, 1
|
82
102
|
end
|
83
103
|
|
@@ -90,11 +110,14 @@ class DislikerTest < MiniTest::Unit::TestCase
|
|
90
110
|
@user.dislike(@movie)
|
91
111
|
@user.dislike(book)
|
92
112
|
@user.dislike(movie2)
|
113
|
+
@user.dislike(@doc)
|
93
114
|
friend.dislike(@movie)
|
94
115
|
friend.dislike(book)
|
95
116
|
friend.dislike(book2)
|
117
|
+
friend.dislike(@doc)
|
96
118
|
|
97
119
|
assert_includes @user.dislikes_in_common_with(friend), @movie
|
120
|
+
assert_includes @user.dislikes_in_common_with(friend), @doc
|
98
121
|
assert_includes @user.dislikes_in_common_with(friend), book
|
99
122
|
refute_includes @user.dislikes_in_common_with(friend), movie2
|
100
123
|
refute_includes friend.dislikes_in_common_with(@user), book2
|
@@ -106,14 +129,18 @@ class DislikerTest < MiniTest::Unit::TestCase
|
|
106
129
|
book = Factory(:book)
|
107
130
|
|
108
131
|
@user.dislike(@movie)
|
132
|
+
@user.dislike(@doc)
|
109
133
|
@user.dislike(book)
|
110
134
|
friend.dislike(@movie)
|
135
|
+
friend.dislike(@doc)
|
111
136
|
friend.dislike(book)
|
112
137
|
|
113
138
|
assert_includes @user.disliked_movies_in_common_with(friend), @movie
|
139
|
+
assert_includes @user.disliked_movies_in_common_with(friend), @doc
|
114
140
|
assert_includes @user.disliked_books_in_common_with(friend), book
|
115
141
|
refute_includes @user.disliked_movies_in_common_with(friend), book
|
116
142
|
refute_includes @user.disliked_books_in_common_with(friend), @movie
|
143
|
+
refute_includes @user.disliked_books_in_common_with(friend), @doc
|
117
144
|
end
|
118
145
|
|
119
146
|
def teardown
|
@@ -5,6 +5,7 @@ class HiderTest < 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_hide_adds_to_hidden_set
|
@@ -13,6 +14,12 @@ class HiderTest < MiniTest::Unit::TestCase
|
|
13
14
|
assert_includes @user.hidden_movie_ids, @movie.id
|
14
15
|
end
|
15
16
|
|
17
|
+
def test_that_like_adds_subclass_hides_to_hidden_set
|
18
|
+
refute_includes @user.hidden_movie_ids, @doc.id
|
19
|
+
@user.hide(@doc)
|
20
|
+
assert_includes @user.hidden_movie_ids, @doc.id
|
21
|
+
end
|
22
|
+
|
16
23
|
def test_that_cant_hide_already_hidden_object
|
17
24
|
assert @user.hide(@movie)
|
18
25
|
assert_nil @user.hide(@movie)
|
@@ -39,6 +46,13 @@ class HiderTest < MiniTest::Unit::TestCase
|
|
39
46
|
refute_includes @user.hidden_movie_ids, @movie.id
|
40
47
|
end
|
41
48
|
|
49
|
+
def test_that_unhide_removes_subclass_item_from_hidden_set
|
50
|
+
@user.hide(@doc)
|
51
|
+
assert_includes @user.hidden_movie_ids, @doc.id
|
52
|
+
@user.unhide(@doc)
|
53
|
+
refute_includes @user.hidden_movie_ids, @doc.id
|
54
|
+
end
|
55
|
+
|
42
56
|
def test_that_cant_unhide_item_unless_hidden
|
43
57
|
assert_nil @user.unhide(@movie)
|
44
58
|
end
|
@@ -47,6 +61,10 @@ class HiderTest < MiniTest::Unit::TestCase
|
|
47
61
|
refute_includes @user.hiding, @movie
|
48
62
|
@user.hide(@movie)
|
49
63
|
assert_includes @user.hiding, @movie
|
64
|
+
|
65
|
+
refute_includes @user.hiding, @doc
|
66
|
+
@user.hide(@doc)
|
67
|
+
assert_includes @user.hiding, @doc
|
50
68
|
end
|
51
69
|
|
52
70
|
def test_that_dynamic_hidden_finder_only_returns_relevant_records
|
@@ -65,8 +83,9 @@ class HiderTest < MiniTest::Unit::TestCase
|
|
65
83
|
@user.hide(@movie)
|
66
84
|
@user.hide(movie2)
|
67
85
|
@user.hide(book)
|
86
|
+
@user.hide(@doc)
|
68
87
|
|
69
|
-
assert_equal @user.hidden_count,
|
88
|
+
assert_equal @user.hidden_count, 4
|
70
89
|
end
|
71
90
|
|
72
91
|
def test_that_dynamic_hidden_count_methods_only_count_relevant_hides
|
@@ -90,11 +109,14 @@ class HiderTest < MiniTest::Unit::TestCase
|
|
90
109
|
@user.hide(@movie)
|
91
110
|
@user.hide(book)
|
92
111
|
@user.hide(movie2)
|
112
|
+
@user.hide(@doc)
|
93
113
|
friend.hide(@movie)
|
94
114
|
friend.hide(book)
|
95
115
|
friend.hide(book2)
|
116
|
+
friend.hide(@doc)
|
96
117
|
|
97
118
|
assert_includes @user.hiding_in_common_with(friend), @movie
|
119
|
+
assert_includes @user.hiding_in_common_with(friend), @doc
|
98
120
|
assert_includes @user.hiding_in_common_with(friend), book
|
99
121
|
refute_includes @user.hiding_in_common_with(friend), movie2
|
100
122
|
refute_includes friend.hiding_in_common_with(@user), book2
|
@@ -106,14 +128,18 @@ class HiderTest < MiniTest::Unit::TestCase
|
|
106
128
|
book = Factory(:book)
|
107
129
|
|
108
130
|
@user.hide(@movie)
|
131
|
+
@user.hide(@doc)
|
109
132
|
@user.hide(book)
|
110
133
|
friend.hide(@movie)
|
134
|
+
friend.hide(@doc)
|
111
135
|
friend.hide(book)
|
112
136
|
|
113
137
|
assert_includes @user.hidden_movies_in_common_with(friend), @movie
|
138
|
+
assert_includes @user.hidden_movies_in_common_with(friend), @doc
|
114
139
|
assert_includes @user.hidden_books_in_common_with(friend), book
|
115
140
|
refute_includes @user.hidden_movies_in_common_with(friend), book
|
116
141
|
refute_includes @user.hidden_books_in_common_with(friend), @movie
|
142
|
+
refute_includes @user.hidden_books_in_common_with(friend), @doc
|
117
143
|
end
|
118
144
|
|
119
145
|
def teardown
|