pbbuilder 0.16.2 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0f61e783abb61817e05f29772b6614314646c0fda6f24a5f73f556ebc19d0f97
4
- data.tar.gz: 34cf6626e2f60aa50a7ee2e7278a0149557263d023dee6a758e4adf2d8e0d263
3
+ metadata.gz: fe95820bf0015825b24715abe48a568f865affb04ec6c3db6261f33cd3e19829
4
+ data.tar.gz: 0de697e6e0970a49cf599cb764e1941e019b1b6e0dddcc86c862c070a34ec904
5
5
  SHA512:
6
- metadata.gz: 15f60555cb89a70e0b28490db9bc00e4b9ca7ed34f179a5df0576d6a70ef737c9d7acc66e686b0b0216a003e043c967162d377087a443f3057470e4396889e4e
7
- data.tar.gz: fd6e5587bd3d8bafc4988f089901afe2848c577243b5d9b105e629b92c3f7cbc522fbe218f9be59ca29605af27c034c423f244c8df0208dd72d9b67bf4831143
6
+ metadata.gz: fa06d08bee0e966095491d7b1d0956ff5c0f9a5d305fe66308c98883ddbe3c424d60b62ebf846fe25d2e7ec86181baf0666ec0d638648117188d1b17e3185784
7
+ data.tar.gz: dac52c94458493380247cba47db06e61ad29590ff8b09b51abbe870aca8381f553870c16604b8079653488c0acc76fa87bfa54cb6a652e3c9fd0538e09ed85d8
data/CHANGELOG.md CHANGED
@@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file.
3
3
 
4
4
  This format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
5
5
 
6
+ ## 0.17.0
7
+ ### Changed
8
+ - Instead of appending to repeated enum message, we're replacing it to avoid issues in case output will be rendered twice
9
+ - If one field was defined twice, only last definition will end up in output
10
+
11
+ ## Fixed
12
+ - Fixed CI by locking 3 version or lower of google-protobuf dependency.
13
+
6
14
  ## 0.16.2
7
15
  ### Added
8
16
  - Add support for partial as a first argument , e.g.`pb.friends "racers/racer", as: :racer, collection: @racers`
data/lib/pbbuilder.rb CHANGED
@@ -75,12 +75,12 @@ class Pbbuilder
75
75
  if arg.respond_to?(:to_hash)
76
76
  # example syntax that should end up here:
77
77
  # pb.fields {"one" => "two"}
78
+
78
79
  arg.to_hash.each { |k, v| @message[name][k] = v }
79
80
  elsif arg.respond_to?(:to_ary) && !descriptor.type.eql?(:message)
80
81
  # pb.fields ["one", "two"]
81
- # Using concat so it behaves the same as _append_repeated
82
82
 
83
- @message[name].concat arg.to_ary
83
+ @message[name].replace arg.to_ary
84
84
  elsif arg.respond_to?(:to_ary) && descriptor.type.eql?(:message)
85
85
  # example syntax that should end up here:
86
86
  # pb.friends [Person.new(name: "Johnny Test"), Person.new(name: "Max Verstappen")]
@@ -89,11 +89,13 @@ class Pbbuilder
89
89
  else
90
90
  # example syntax that should end up here:
91
91
  # pb.fields "one"
92
- @message[name].push arg
92
+
93
+ @message[name].replace [arg]
93
94
  end
94
95
  else
95
96
  # example syntax that should end up here:
96
97
  # pb.field "value"
98
+
97
99
  @message[name] = arg
98
100
  end
99
101
  else
data/pbbuilder.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "pbbuilder"
5
- spec.version = "0.16.2"
5
+ spec.version = "0.17.0"
6
6
  spec.authors = ["Bouke van der Bijl"]
7
7
  spec.email = ["bouke@cheddar.me"]
8
8
  spec.homepage = "https://github.com/cheddar-me/pbbuilder"
@@ -14,7 +14,7 @@ Gem::Specification.new do |spec|
14
14
  spec.files = `git ls-files`.split("\n")
15
15
  spec.test_files = `git ls-files -- test/*`.split("\n")
16
16
 
17
- spec.add_dependency "google-protobuf"
17
+ spec.add_dependency "google-protobuf", "~> 3.25"
18
18
  spec.add_dependency "activesupport"
19
19
  spec.add_development_dependency 'm'
20
20
  spec.add_development_dependency "pry"
@@ -25,11 +25,38 @@ class PbbuilderTest < ActiveSupport::TestCase
25
25
 
26
26
  assert_equal "Hello world", person.name
27
27
  assert_equal "Friend #1", person.friends.first.name
28
- assert_equal ["ok", "that's", "cool"], person.field_mask.paths
28
+ assert_equal ["cool"], person.field_mask.paths
29
29
  assert_equal "Manuelo", person.best_friend.name
30
30
  assert_equal "Eggs", person.favourite_foods["Breakfast"]
31
31
  end
32
32
 
33
+ test "replaces the repeated field's value with the last one set" do
34
+ person = Pbbuilder.new(API::Person.new) do |pb|
35
+ pb.field_mask do
36
+ pb.paths ["ok", "that's"]
37
+ end
38
+ end.target!
39
+
40
+ p = Pbbuilder.new(person) do |pb|
41
+ pb.field_mask do
42
+ pb.paths ["ok", "that's"]
43
+ end
44
+ end.target!
45
+
46
+ assert_equal(["ok", "that's"], p.field_mask.paths)
47
+ end
48
+
49
+ test "sets the last value of the repeated field to be the only value" do
50
+ person = Pbbuilder.new(API::Person.new) do |pb|
51
+ pb.field_mask do
52
+ pb.paths ["ok", "that's"]
53
+ pb.paths ["cool"]
54
+ end
55
+ end.target!
56
+
57
+ assert_equal ["cool"], person.field_mask.paths
58
+ end
59
+
33
60
  test "it can extract fields in a nice way" do
34
61
  klass = Struct.new(:name)
35
62
  friends = [klass.new("Friend 1"), klass.new("Friend 2")]
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pbbuilder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.2
4
+ version: 0.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bouke van der Bijl
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-18 00:00:00.000000000 Z
11
+ date: 2024-03-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google-protobuf
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '3.25'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '3.25'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -123,7 +123,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  requirements: []
126
- rubygems_version: 3.5.3
126
+ rubygems_version: 3.3.7
127
127
  signing_key:
128
128
  specification_version: 4
129
129
  summary: Generate Protobuf Messages with a simple DSL similar to JBuilder