123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- require 'rails_helper'
- RSpec.describe ActiveModel::Error, :aggregate_failures do
- context 'with a default rails error available from locale.yml (including interpolation)' do
- let(:error) { User.first.errors.add(:firstname, :equal_to, count: '25') }
- context 'when using the standard error format and the default locale' do
- it 'produces a standard Rails error including the field name' do
- expect(error.message).to eq('must be equal to 25')
- expect(error.full_message).to eq('Firstname must be equal to 25')
- end
- end
- context 'when using a custom error format and a custom locale' do
- let(:custom_translations) { { 'must be equal to %{count}' => 'muss den Wert %{count} haben', 'This field %s' => 'Dieses Feld %<message>s' } } # rubocop:disable Style/FormatStringToken
- it 'produces a custom error NOT including the field name' do
- allow(Translation).to receive(:translate) { |_locale, string| custom_translations[string] || string }
- expect(error.message).to eq('must be equal to 25')
- expect(error.localized_full_message(no_field_name: true, locale: 'de-de')).to eq('Dieses Feld muss den Wert 25 haben')
- end
- end
- end
- context 'with a custom error not available from locale.yml (does not support interpolation)' do
- let(:error) { User.first.errors.add(:firstname, 'is unknown') }
- context 'when using the standard error format and the default locale' do
- it 'produces a standard Rails error including the field name' do
- expect(error.message).to eq('is unknown')
- expect(error.full_message).to eq('Firstname is unknown')
- end
- end
- context 'when using a custom error format and a custom locale' do
- let(:custom_translations) { { 'is unknown' => 'ist unbekannt', 'This field %s' => 'Dieses Feld %{message}' } }
- it 'produces a custom error NOT including the field name' do
- allow(Translation).to receive(:translate) { |_locale, string| custom_translations[string] || string }
- expect(error.message).to eq('is unknown')
- expect(error.localized_full_message(no_field_name: true, locale: 'de-de')).to eq('Dieses Feld ist unbekannt')
- end
- end
- end
- end
|