diff --git a/app/controllers/spaces_controller.rb b/app/controllers/spaces_controller.rb index 7e9d911fd..97a680225 100644 --- a/app/controllers/spaces_controller.rb +++ b/app/controllers/spaces_controller.rb @@ -60,6 +60,8 @@ def space_params policy_scope(Space).friendly.find(params[:id]) elsif params[:space] policy_scope(Space).new(space_params) + elsif BrandedDomainConstraint.new(space_repository).space_for_request(request).present? + BrandedDomainConstraint.new(space_repository).space_for_request(request) else policy_scope(Space).new end.tap do |space| diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 7e4ea34d7..9a23fa5e2 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -12,7 +12,7 @@ <%= render 'layouts/header' %> -
+
<%= yield %>
diff --git a/app/views/spaces/show.html.erb b/app/views/spaces/show.html.erb index 60c728e1f..dc4cd40bc 100644 --- a/app/views/spaces/show.html.erb +++ b/app/views/spaces/show.html.erb @@ -2,4 +2,4 @@ <%- if space.entrance.present? %> <%= render space.entrance %> -<%- end %> \ No newline at end of file +<%- end %> diff --git a/spec/furniture/marketplace/carts_controller_request_spec.rb b/spec/furniture/marketplace/carts_controller_request_spec.rb index 8a587227e..9e1a86d04 100644 --- a/spec/furniture/marketplace/carts_controller_request_spec.rb +++ b/spec/furniture/marketplace/carts_controller_request_spec.rb @@ -26,7 +26,7 @@ before { sign_in(space, person) } - it { is_expected.to redirect_to(room.location) } + it { is_exepected.to redirect_to(room.location) } specify { expect { perform_request }.to change { cart.reload.delivery_address }.from(nil).to("123 N West St") } end end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 8ee9bb0f3..918de011b 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -63,6 +63,7 @@ # config.filter_gems_from_backtrace("gem name") config.include(AuthHelpers, type: :request) + config.include(DomHelpers, type: :request) config.include ViewComponent::TestHelpers, type: :component end diff --git a/spec/requests/spaces_controller_request_spec.rb b/spec/requests/spaces_controller_request_spec.rb index d76876fce..d4dce0e13 100644 --- a/spec/requests/spaces_controller_request_spec.rb +++ b/spec/requests/spaces_controller_request_spec.rb @@ -2,17 +2,38 @@ require "swagger_helper" -RSpec.describe SpacesController, type: :request do +RSpec.describe SpacesController do include ActiveJob::TestHelper describe "#show" do + subject(:perform_request) do + get url + test_response + end + + let(:space) { create(:space) } + let(:url) { polymorphic_url(space) } + + it { is_expected.to be_ok } + specify { perform_request && assert_select("##{dom_id(space)}") } + context "with a branded domain" do let(:space) { create(:space, branded_domain: "beta.example.com") } - it "redirects to the domain" do - get polymorphic_path(space) + context "when accessing via the neighborhood url" do + it { is_expected.to redirect_to "http://beta.example.com" } + end + + context "when accessing via domain" do + before do + space + host! "beta.example.com" + end + + let(:url) { "http://beta.example.com" } - expect(response).to redirect_to "http://beta.example.com" + it { is_expected.to be_ok } + specify { perform_request && assert_select("##{dom_id(space)}") } end end end diff --git a/spec/support/dom_helpers.rb b/spec/support/dom_helpers.rb new file mode 100644 index 000000000..08e25f8c5 --- /dev/null +++ b/spec/support/dom_helpers.rb @@ -0,0 +1,16 @@ +module DomHelpers + def record_identifier + ActionView::RecordIdentifier + end + delegate :dom_id, to: :record_identifier + + def test_response + TestResponse.new(response) + end + + class TestResponse < SimpleDelegator + def media_type?(expected_media_type) + media_type == Mime[expected_media_type] + end + end +end