diff options
Diffstat (limited to 'spec/graphql/types/base_enum_spec.rb')
-rw-r--r-- | spec/graphql/types/base_enum_spec.rb | 70 |
1 files changed, 69 insertions, 1 deletions
diff --git a/spec/graphql/types/base_enum_spec.rb b/spec/graphql/types/base_enum_spec.rb index b7adcf217f6..744aee40044 100644 --- a/spec/graphql/types/base_enum_spec.rb +++ b/spec/graphql/types/base_enum_spec.rb @@ -3,7 +3,75 @@ require 'spec_helper' RSpec.describe Types::BaseEnum do - describe '#enum' do + describe '.declarative_enum' do + let(:use_name) { true } + let(:use_description) { true } + let(:enum_type) do + Class.new(described_class) do + graphql_name 'OriginalName' + description 'Original description' + end + end + + let(:enum_module) do + Module.new do + extend DeclarativeEnum + + name 'Name' + description 'Description' + + define do + foo value: 0, description: 'description of foo' + end + end + end + + subject(:set_declarative_enum) { enum_type.declarative_enum(enum_module, use_name: use_name, use_description: use_description) } + + describe '#graphql_name' do + context 'when the use_name is `true`' do + it 'changes the graphql_name' do + expect { set_declarative_enum }.to change { enum_type.graphql_name }.from('OriginalName').to('Name') + end + end + + context 'when the use_name is `false`' do + let(:use_name) { false } + + it 'does not change the graphql_name' do + expect { set_declarative_enum }.not_to change { enum_type.graphql_name }.from('OriginalName') + end + end + end + + describe '#description' do + context 'when the use_description is `true`' do + it 'changes the description' do + expect { set_declarative_enum }.to change { enum_type.description }.from('Original description').to('Description') + end + end + + context 'when the use_description is `false`' do + let(:use_description) { false } + + it 'does not change the description' do + expect { set_declarative_enum }.not_to change { enum_type.description }.from('Original description') + end + end + end + + describe '#values' do + it 'sets the values defined by the declarative enum' do + set_declarative_enum + + expect(enum_type.values.keys).to eq(['FOO']) + expect(enum_type.values.values.map(&:description)).to eq(['description of foo']) + expect(enum_type.values.values.map(&:value)).to eq([0]) + end + end + end + + describe '.enum' do let(:enum) do Class.new(described_class) do value 'TEST', value: 3 |