summaryrefslogtreecommitdiff
path: root/spec/graphql/types/base_enum_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/graphql/types/base_enum_spec.rb')
-rw-r--r--spec/graphql/types/base_enum_spec.rb70
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