recommendable 2.1.2 → 2.1.3
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/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
|