docbrown/spec/labor/article_suggester_spec.rb
rhymes 6a626e819d Refactor: fix issues raised by bullet (#2965)
* Preload organization, not user

* Preload users only when needed

* Pre-load podcasts for podcast episodes in API

* Avoid eager loading error by loading rating votes separately

* Preload associations for moderation

* Preload user comments in trees

* Preload organization for non org dashboard and cleanup queries

* Optimize ArticleSuggester to only load N articles at need

* Remove eager loading and pass variables to partials for easier debug

* Reorganize tags validation code and ignore actsastaggableon eager loading issues

* Remove unused eager loading and bring up comments relation

* Preload podcasts when loading podcast episodes

* Fix views specs

* Make sure ArticleSuggester never returns duplicates

* Remove commented code

* Re-trigger build

* Move suggested articles back to view to respect fragment caching
2019-05-28 17:32:53 -04:00

29 lines
1.2 KiB
Ruby

require "rails_helper"
RSpec.describe ArticleSuggester do
let(:user) { create(:user) }
it "returns proper number of articles with post with the same tags" do
create_list(:article, 4, user: user, featured: true, tags: ["discuss"])
article = create(:article, user: user, featured: true, tags: ["discuss"])
expect(described_class.new(article).articles.size).to eq(4)
end
it "returns proper number of articles with post with different tags" do
create_list(:article, 2, user: user, featured: true, tags: ["discuss"])
create_list(:article, 2, user: user, featured: true, tags: ["javascript"])
article = create(:article, user: user, featured: true, tags: ["discuss"])
expect(described_class.new(article).articles.size).to eq(4)
end
it "returns proper number of articles with post without tags" do
create_list(:article, 5, user: user, tags: [], with_tags: false, featured: true)
article = create(:article, user: user, featured: true, tag_list: "")
expect(described_class.new(article).articles.size).to eq(4)
end
it "returns the number of articles requested" do
articles = create_list(:article, 3, user: user, featured: true)
expect(described_class.new(articles.first).articles(max: 2).size).to eq(2)
end
end