Sha256: 9793e90d9173841020cb6e75c2d250256eca9ca5e758f9b14b6dd077a1187a32

Contents?: true

Size: 1.21 KB

Versions: 5

Compression:

Stored size: 1.21 KB

Contents

require 'spec_helper'

RSpec.describe Protobuf::Field::EnumField do
  let(:message) do
    Class.new(::Protobuf::Message) do
      enum_class = Class.new(::Protobuf::Enum) do
        define :POSITIVE, 22
        define :NEGATIVE, -33
      end

      optional enum_class, :enum, 1
    end
  end

  describe '.{encode, decode}' do
    it 'handles positive enum constants' do
      instance = message.new(:enum => :POSITIVE)
      expect(message.decode(instance.encode).enum).to eq(22)
    end

    it 'handles negative enum constants' do
      instance = message.new(:enum => :NEGATIVE)
      expect(message.decode(instance.encode).enum).to eq(-33)
    end
  end

  # https://developers.google.com/protocol-buffers/docs/proto3#json
  describe '.{to_json, from_json}' do
    it 'serialises enum value as string' do
      instance = message.new(:enum => :POSITIVE)
      expect(instance.to_json).to eq('{"enum":"POSITIVE"}')
    end

    it 'deserialises enum value as integer' do
      instance = message.from_json('{"enum":22}')
      expect(instance.enum).to eq(22)
    end

    it 'deserialises enum value as string' do
      instance = message.from_json('{"enum":"NEGATIVE"}')
      expect(instance.enum).to eq(-33)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
protobuf-cucumber-3.10.8 spec/lib/protobuf/field/enum_field_spec.rb
protobuf-cucumber-3.10.7 spec/lib/protobuf/field/enum_field_spec.rb
protobuf-cucumber-3.10.6 spec/lib/protobuf/field/enum_field_spec.rb
protobuf-cucumber-3.10.5 spec/lib/protobuf/field/enum_field_spec.rb
protobuf-cucumber-3.10.4 spec/lib/protobuf/field/enum_field_spec.rb