44 lines
1.4 KiB
Ruby
44 lines
1.4 KiB
Ruby
require "rails_helper"
|
|
|
|
RSpec.describe Articles::ApiSearchQuery, type: :query do
|
|
before do
|
|
create(:article, published: false)
|
|
create(:article, title: "Top ten Interview tips")
|
|
create(:article, title: "Top ten Ruby tips")
|
|
create(:article, title: "Frontend Frameworks")
|
|
create(:article)
|
|
end
|
|
|
|
context "when there is no query parameter" do
|
|
it "shows all published and approved articles" do
|
|
articles = described_class.call({})
|
|
# The one not included has publiched set to false.
|
|
expect(articles.count).to eq(4)
|
|
end
|
|
end
|
|
|
|
context "when there is a query parameter" do
|
|
it "shows articles that match that query" do
|
|
articles = described_class.call({ q: "ruby" })
|
|
expect(articles.count).to eq(1)
|
|
end
|
|
|
|
it "does not show article if below minimum index" do
|
|
Settings::UserExperience.index_minimum_score = 10_000
|
|
articles = described_class.call({ q: "ruby" })
|
|
expect(articles.count).to eq(0)
|
|
Settings::UserExperience.index_minimum_score = 0
|
|
end
|
|
end
|
|
|
|
context "when there is a top parameter" do
|
|
it "shows the most popular articles in the last n days" do
|
|
article = Article.find_by(title: "Frontend Frameworks")
|
|
article.update_column(:published_at, 30.days.ago)
|
|
|
|
# The two not included is the one that has publiched set to false.
|
|
articles = described_class.call({ top: 10 })
|
|
expect(articles.count).to eq(3)
|
|
end
|
|
end
|
|
end
|