Skip to content

Commit

Permalink
Test optional keys in Data#to_h
Browse files Browse the repository at this point in the history
  • Loading branch information
ismasan committed Oct 31, 2024
1 parent 7cf4d7d commit 18e3792
Showing 1 changed file with 34 additions and 25 deletions.
59 changes: 34 additions & 25 deletions spec/data_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -101,31 +101,40 @@ class DifferentClass
expect(nillable.new(foo: nil).to_h).to eq(foo: nil, count: nil)
end

specify '#==' do
user1 = Types::User.new(
name: 'Jane',
age: 20,
friend: { name: 'John', email: 'john@server.com' },
company: { name: 'Acme' },
books: [{ isbn: '123' }]
)
user2 = Types::User.new(
name: 'Jane',
age: 20,
friend: { name: 'John', email: 'john@server.com' },
company: { name: 'Acme' },
books: [{ isbn: '123' }]
)
user3 = Types::User.new(
name: 'Jane',
age: 20,
friend: { name: 'Phil', email: 'phil@server.com' },
company: { name: 'Acme' },
books: [{ isbn: '123' }]
)
describe '#==' do
specify 'nested structs' do
user1 = Types::User.new(
name: 'Jane',
age: 20,
friend: { name: 'John', email: 'john@server.com' },
company: { name: 'Acme' },
books: [{ isbn: '123' }]
)
user2 = Types::User.new(
name: 'Jane',
age: 20,
friend: { name: 'John', email: 'john@server.com' },
company: { name: 'Acme' },
books: [{ isbn: '123' }]
)
user3 = Types::User.new(
name: 'Jane',
age: 20,
friend: { name: 'Phil', email: 'phil@server.com' },
company: { name: 'Acme' },
books: [{ isbn: '123' }]
)

expect(user1 == user2).to be true
expect(user1 == user3).to be false
end

expect(user1 == user2).to be true
expect(user1 == user3).to be false
specify 'optional keys' do
klass = Types::Data[foo?: Types::String.nullable, age: Integer]
k1 = klass.new(age: 20, foo: nil)
k2 = klass.new(age: 20)
expect(k1 == k2).to be false
end
end

describe 'pattern matching' do
Expand Down Expand Up @@ -196,7 +205,7 @@ class DifferentClass

specify 'invalid shorthard array with multiple elements' do
expect do
klass = Class.new(Types::Data) do
Class.new(Types::Data) do
attribute :typed_array, [Integer, String]
end
end.to raise_error(ArgumentError)
Expand Down

0 comments on commit 18e3792

Please sign in to comment.