Skip to content

Instantly share code, notes, and snippets.

@hovsater
Last active December 17, 2020 12:03
Show Gist options
  • Save hovsater/f349fbce245fecbd96de114303693efd to your computer and use it in GitHub Desktop.
Save hovsater/f349fbce245fecbd96de114303693efd to your computer and use it in GitHub Desktop.
require 'spec_helper'
require 'dry-validation'
module AllowList
NAMES = %w(john jane)
end
class Admin
SCHEMA = Dry::Validation.Params do
configure do
def allow_list
AllowList::NAMES
end
end
required(:name).filled?(included_in?: allow_list)
end
def initialize(name)
@name = name
end
def valid?
SCHEMA.call({ name: @name }).success?
end
end
RSpec.describe Admin do
describe "without a stubbed list" do
it "validates using original list" do
stub_const("AllowList::NAMES", %w(peter))
jane = Admin.new("jane")
john = Admin.new("john")
peter = Admin.new("peter")
expect(jane).to be_valid
expect(john).to be_valid
expect(peter).not_to be_valid
end
end
describe "with stubbed allow list" do
it "validates using stubbed list" do
stub_const("AllowList::NAMES", %w(peter))
jane = Admin.new("jane")
peter = Admin.new("peter")
expect(jane).not_to be_valid
expect(peter).to be_valid
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment