diff --git a/app/assets/stylesheets/specific/posts.scss b/app/assets/stylesheets/specific/posts.scss index ec0d180e5..97e3ff1ad 100644 --- a/app/assets/stylesheets/specific/posts.scss +++ b/app/assets/stylesheets/specific/posts.scss @@ -324,6 +324,10 @@ div#c-posts { font-weight: bold; } + .similar-posts { + margin-top: 1em; + } + #add-fav-button, #remove-fav-button { margin-top: 1em; } diff --git a/app/logical/post_sets/similar.rb b/app/logical/post_sets/similar.rb index 65ab49c85..b41166f94 100644 --- a/app/logical/post_sets/similar.rb +++ b/app/logical/post_sets/similar.rb @@ -1,19 +1,20 @@ module PostSets class Similar < PostSets::Post def initialize(post) - super(tags) + super("") + @post = post end def posts @posts ||= begin - post_ids, scores = RecommenderService.similar(post) - post_ids = post_ids.reject {|x| x == post.id}.slice(0, 5) - Post.find(post_ids) + response = RecommenderService.similar(@post) + post_ids = response.reject {|x| x[0] == @post.id}.slice(0, 5).map {|x| x[0]} + ::Post.find(post_ids) end end def presenter - ::Presenters::PostSetPresenters::Post.new(self) + ::PostSetPresenters::Post.new(self) end end end diff --git a/app/views/posts/partials/index/_similar.html.erb b/app/views/posts/partials/index/_similar.html.erb index ab2b750df..5f068dfd3 100644 --- a/app/views/posts/partials/index/_similar.html.erb +++ b/app/views/posts/partials/index/_similar.html.erb @@ -1,7 +1,7 @@ -
-

You might also like:

+
+

You might also like:

-
+
<%= PostSets::Similar.new(post).presenter.post_previews_html(self) %> -
+
diff --git a/test/functional/posts_controller_test.rb b/test/functional/posts_controller_test.rb index a1298709e..19e76597e 100644 --- a/test/functional/posts_controller_test.rb +++ b/test/functional/posts_controller_test.rb @@ -115,6 +115,22 @@ class PostsControllerTest < ActionDispatch::IntegrationTest get post_path(@post), params: {:id => @post.id} assert_response :success end + + context "when the recommend service is enabled" do + setup do + @post2 = create(:post) + RecommenderService.stubs(:enabled?).returns(true) + RecommenderService.stubs(:available?).returns(true) + RecommenderService.stubs(:similar).returns([[@post.id, "1.0"], [@post2.id, "0.01"]]) + end + + should "render a section for similar posts" do + get_auth post_path(@post), @user + assert_response :success + assert_select ".similar-posts" + assert_select ".similar-posts #post_#{@post2.id}" + end + end end context "update action" do