У меня есть одна модель пользователя, которая имеет разные проверки, основанные на переменной окружения ENV ['APP_FOR']. Это может быть «app-1» или «app-2». Приложение-1 проверяет имя пользователя, а приложение-2 проверяет адрес электронной почты. Вот моя модель пользователя спецификации для приложения-1:Попытка изменить переменную среды в спецификации спецификации RSpec
require 'rails_helper'
RSpec.describe User, type: :model do
include Shared::Categories
before do
ENV['APP_FOR']='app-1'
end
context "given a valid User" do
before { allow_any_instance_of(User).to receive(:older_than_18?).and_return(true) }
it {should validate_presence_of :username}
end
end
И это модель пользователя спецификации для приложения-2
require 'rails_helper'
RSpec.describe User, type: :model do
include Shared::Categories
before do
ENV['APP_FOR']='app-2'
end
context "given a valid User" do
before { allow_any_instance_of(User).to receive(:older_than_18?).and_return(true) }
it {should validate_presence_of :email}
end
end
Моя проблема заключается в том, что переменная окружения не установлена, как я ожидал бы, что он будет в переднем блоке. Есть идеи, как это сделать?
EDIT 1
Вот моя реализация проверки. Я использовал беспокойство, которое я расширить пользовательскую модель с:
module TopDogCore::Concerns::UserValidations
extend ActiveSupport::Concern
included do
if ENV['APP_FOR'] == 'app-1'
validates :username,
presence: true,
uniqueness: true
elsif ENV['APP_FOR'] == 'app-2'
validates :email,
presence: true,
uniqueness: true
end
end
end
Вы могли бы опубликовать свою проверку? –
@IgorBelo проверить новое редактирование выше, я включил его там – NdaJunior