Sha256: 711b995ac937327d50402dbe04e8dabc64ce18949ed30210db9395c8f5ada275

Contents?: true

Size: 1.51 KB

Versions: 26

Compression:

Stored size: 1.51 KB

Contents

class ModelA

  def self.find(_)
    new
  end
end

class ModelB

  def self.find(_)
    new
  end
end

class DummyBaseA < Symphonia::ApplicationController
  include Symphonia::BaseController
  self.model = ModelA
end
class DummyBaseB < DummyBaseA
  self.model = ModelB
end

RSpec.describe DummyBaseB do

  controller do
    before_action :set_locale, only: :index

    def show
      render plain: model.name
    end

    def index
      render plain: t(:language)
    end
  end
  it "#model" do
    subject = DummyBaseA.new
    expect(subject.model).to eq ModelA
    subject = DummyBaseB.new
    expect(subject.model).to eq ModelB
  end

  it "#show" do
    get :show, params: { id: 1 }
    expect(response.body).to eq "ModelB"
  end

  describe "#set_locale" do
    before do
      I18n.locale = :cs
    end
    context "logged user", logged: true do
      before { Symphonia::User.current.language = :cs }
      it "enforce language of user" do
        get :index
        expect(response.body).to eq "Čeština"
        Symphonia::User.current.language = :en
        get :index
        expect(response.body).to eq "English"
      end

      it "ignore :locale params" do
        get :index, params: { locale: "en" }
        expect(response.body).to eq "Čeština"
      end
    end
    it "anonymous default language" do
      get :index
      expect(response.body).to eq "Čeština"
    end

    it "anonymous language by :locale" do
      get :index, params: { locale: "en" }
      expect(response.body).to eq "English"
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
symphonia-6.0.6 spec/controllers/base_controller_spec.rb
symphonia-6.0.5 spec/controllers/base_controller_spec.rb
symphonia-6.0.2 spec/controllers/base_controller_spec.rb
symphonia-6.0.1 spec/controllers/base_controller_spec.rb
symphonia-6.0.0 spec/controllers/base_controller_spec.rb
symphonia-5.0.6 spec/controllers/base_controller_spec.rb
symphonia-5.0.5 spec/controllers/base_controller_spec.rb
symphonia-5.0.4 spec/controllers/base_controller_spec.rb
symphonia-5.0.3 spec/controllers/base_controller_spec.rb
symphonia-5.0.0 spec/controllers/base_controller_spec.rb
symphonia-4.2.0 spec/controllers/base_controller_spec.rb
symphonia-4.1.3 spec/controllers/base_controller_spec.rb
symphonia-4.1.2 spec/controllers/base_controller_spec.rb
symphonia-4.1.1 spec/controllers/base_controller_spec.rb
symphonia-4.1.0 spec/controllers/base_controller_spec.rb
symphonia-4.0.1 spec/controllers/base_controller_spec.rb
symphonia-4.0.0 spec/controllers/base_controller_spec.rb
symphonia-3.4.0 spec/controllers/base_controller_spec.rb
symphonia-3.3.4 spec/controllers/base_controller_spec.rb
symphonia-3.3.3 spec/controllers/base_controller_spec.rb