Skip to content

Commit

Permalink
Fix spec
Browse files Browse the repository at this point in the history
  • Loading branch information
solnic committed May 11, 2022
1 parent 6d69fe1 commit 3051387
Showing 1 changed file with 26 additions and 20 deletions.
46 changes: 26 additions & 20 deletions spec/integration/contract/using_messages_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,18 @@
contract_class.new
end

let(:locales) { %i[en] }

let(:contract_class) do
backend = self.backend
locales = self.locales

Class.new(Dry::Validation::Contract) do
config.messages.load_paths << SPEC_ROOT.join("fixtures/messages/errors.en.yml").realpath
config.messages.backend = backend

locales.each do |l|
config.messages.load_paths << SPEC_ROOT.join("fixtures/messages/errors.#{l}.yml").realpath
end

params do
required(:email).filled(:string, min_size?: 3, max_size?: 100)
Expand Down Expand Up @@ -54,36 +63,33 @@
end

context "using :yaml messages" do
before do
contract_class.config.messages.backend = :yaml
end
let(:backend) { :yaml }

include_context "translated messages"
end

context "using :i18n messages" do
before do
I18n.available_locales = %i[en pl]

contract_class.config.messages.backend = :i18n
contract_class.config.messages.load_paths << SPEC_ROOT.join("fixtures/messages/errors.pl.yml").realpath
include_context "translated messages" do
let(:backend) { :i18n }
let(:locales) { %i[en pl] }

contract
end
before do
contract_class
I18n.available_locales = locales
end

include_context "translated messages"
it "respects I18n.with_locale" do
I18n.with_locale(:pl) do
expect(contract.call(email: "foo").errors.to_h).to eql(email: ["oh nie zły email"])
end

it "respects I18n.with_locale" do
I18n.with_locale(:pl) do
expect(contract.call(email: "foo").errors.to_h).to eql(email: ["oh nie zły email"])
end
I18n.with_locale(:en) do
expect(contract.call(email: "foo").errors.to_h).to eql(email: ["oh noez bad email"])
end

I18n.with_locale(:en) do
expect(contract.call(email: "foo").errors(locale: :pl).to_h).to eql(email: ["oh nie zły email"])
expect(contract.call(email: "foo").errors.to_h).to eql(email: ["oh noez bad email"])
end

expect(contract.call(email: "foo").errors(locale: :pl).to_h).to eql(email: ["oh nie zły email"])
expect(contract.call(email: "foo").errors.to_h).to eql(email: ["oh noez bad email"])
end
end

Expand Down

0 comments on commit 3051387

Please sign in to comment.