diff --git a/app/controllers/search_controller.rb b/app/controllers/search_controller.rb
index 7aeac8ff0..5c3ab6627 100644
--- a/app/controllers/search_controller.rb
+++ b/app/controllers/search_controller.rb
@@ -90,7 +90,11 @@ class SearchController < ApplicationController
feed_content_search
end
- render json: { result: feed_docs }
+ render json: {
+ result: feed_docs,
+ display_jobs_banner: SiteConfig.display_jobs_banner,
+ jobs_url: SiteConfig.jobs_url
+ }
end
def reactions
diff --git a/app/views/articles/_search.html.erb b/app/views/articles/_search.html.erb
index d6bb17ed1..694bdc8ac 100644
--- a/app/views/articles/_search.html.erb
+++ b/app/views/articles/_search.html.erb
@@ -59,6 +59,14 @@
}
}
+ function addOptionalBanner(query, displayBanner, jobsUrl) {
+ var lowerCaseQuery = query.toLowerCase();
+
+ if (displayBanner && lowerCaseQuery.includes("job")) {
+ document.getElementById("banner-section").innerHTML = '
- <% if (params[:q]&.downcase == "job" || params[:q]&.downcase == "jobs") && SiteConfig.display_jobs_banner %>
-
Interested in joining our team? Explore our
>open roles.
- <% end %>
+
diff --git a/spec/requests/search_spec.rb b/spec/requests/search_spec.rb
index 307713cb1..f5aec976c 100644
--- a/spec/requests/search_spec.rb
+++ b/spec/requests/search_spec.rb
@@ -75,7 +75,7 @@ RSpec.describe "Search", type: :request, proper_status: true do
)
get "/search/feed_content"
- expect(response.parsed_body).to eq("result" => mock_documents)
+ expect(response.parsed_body["result"]).to eq(mock_documents)
end
it "queries only the user index if class_name=User" do
diff --git a/spec/system/search/display_jobs_banner_spec.rb b/spec/system/search/display_jobs_banner_spec.rb
new file mode 100644
index 000000000..e1268984c
--- /dev/null
+++ b/spec/system/search/display_jobs_banner_spec.rb
@@ -0,0 +1,34 @@
+require "rails_helper"
+
+RSpec.describe "Display Jobs Banner spec", type: :system, js: true do
+ before do
+ stub_request(:post, "http://www.google-analytics.com/collect")
+ allow(SiteConfig).to receive(:jobs_url).and_return("www.very_cool_jobs_website.com")
+ end
+
+ context "when SiteConfig.display_jobs_banner is false" do
+ it "does not show jobs banner" do
+ allow(SiteConfig).to receive(:display_jobs_banner).and_return(false)
+ visit "/search?q=jobs"
+
+ expect(page).not_to have_content("Interested in joining our team?")
+ end
+ end
+
+ context "when SiteConfig.display_jobs_banner is true" do
+ before { allow(SiteConfig).to receive(:display_jobs_banner).and_return(true) }
+
+ it "displays job banner for job search" do
+ visit "/search?q=jobs"
+
+ expect(page).to have_content("Interested in joining our team?")
+ expect(find_link("open roles")["href"]).to include(SiteConfig.jobs_url)
+ end
+
+ it "does not display jobs banner for other searches" do
+ visit "/search?q=ruby"
+
+ expect(page).not_to have_content("Interested in joining our team?")
+ end
+ end
+end