Sha256: abdb92a964d69bc4d03a487933d35613ec2c5b70ae5c516bb0e54ef73e23611a

Contents?: true

Size: 1.76 KB

Versions: 34

Compression:

Stored size: 1.76 KB

Contents

require 'spec_helper'

require 'protobuf/generators/enum_generator'

RSpec.describe ::Protobuf::Generators::EnumGenerator do

  let(:values) do
    [
      { :name => 'FOO', :number => 1 },
      { :name => 'BAR', :number => 2 },
      { :name => 'BAZ', :number => 3 },
    ]
  end
  let(:options) { nil }
  let(:enum_fields) do
    {
      :name => 'TestEnum',
      :value => values,
      :options => options,
    }
  end

  let(:enum) { ::Google::Protobuf::EnumDescriptorProto.new(enum_fields) }

  subject { described_class.new(enum) }

  describe '#compile' do
    let(:compiled) do
      <<-RUBY
class TestEnum < ::Protobuf::Enum
  define :FOO, 1
  define :BAR, 2
  define :BAZ, 3
end

      RUBY
    end

    it 'compiles the enum and its field values' do
      subject.compile
      expect(subject.to_s).to eq(compiled)
    end

    context 'when allow_alias option is set' do
      let(:compiled) do
        <<-RUBY
class TestEnum < ::Protobuf::Enum
  set_option :allow_alias, true

  define :FOO, 1
  define :BAR, 2
  define :BAZ, 3
end

        RUBY
      end

      let(:options) { { :allow_alias => true } }

      it 'sets the allow_alias option' do
        subject.compile
        expect(subject.to_s).to eq(compiled)
      end
    end
  end

  describe '#build_value' do
    it 'returns a string identifying the given enum value' do
      expect(subject.build_value(enum.value.first)).to eq("define :FOO, 1")
    end

    context 'with PB_UPCASE_ENUMS set' do
      before { allow(ENV).to receive(:key?).with('PB_UPCASE_ENUMS').and_return(true) }
      let(:values) { [{ :name => 'boom', :number => 1 }] }

      it 'returns a string with the given enum name in ALL CAPS' do
        expect(subject.build_value(enum.value.first)).to eq("define :BOOM, 1")
      end
    end
  end

end

Version data entries

34 entries across 34 versions & 3 rubygems

Version Path
protobuf-3.10.6 spec/lib/protobuf/generators/enum_generator_spec.rb
protobuf-3.10.5 spec/lib/protobuf/generators/enum_generator_spec.rb
protobuf-3.10.4 spec/lib/protobuf/generators/enum_generator_spec.rb
protobuf-cucumber-3.10.8 spec/lib/protobuf/generators/enum_generator_spec.rb
protobuf-cucumber-3.10.7 spec/lib/protobuf/generators/enum_generator_spec.rb
protobuf-cucumber-3.10.6 spec/lib/protobuf/generators/enum_generator_spec.rb
protobuf-cucumber-3.10.5 spec/lib/protobuf/generators/enum_generator_spec.rb
protobuf-cucumber-3.10.4 spec/lib/protobuf/generators/enum_generator_spec.rb
protobuf-3.10.3 spec/lib/protobuf/generators/enum_generator_spec.rb
protobuf-3.10.2 spec/lib/protobuf/generators/enum_generator_spec.rb
protobuf-3.10.1 spec/lib/protobuf/generators/enum_generator_spec.rb
protobuf-3.10.0 spec/lib/protobuf/generators/enum_generator_spec.rb
protobuf-3.10.0.pre0 spec/lib/protobuf/generators/enum_generator_spec.rb
protobuf-3.9.0 spec/lib/protobuf/generators/enum_generator_spec.rb
protobuf-3.9.0.pre2 spec/lib/protobuf/generators/enum_generator_spec.rb
protobuf-3.9.0.pre spec/lib/protobuf/generators/enum_generator_spec.rb
protobuf-3.8.5 spec/lib/protobuf/generators/enum_generator_spec.rb
protobuf-3.8.5.pre0 spec/lib/protobuf/generators/enum_generator_spec.rb
protobuf-3.8.4 spec/lib/protobuf/generators/enum_generator_spec.rb
protobuf-3.8.3 spec/lib/protobuf/generators/enum_generator_spec.rb