diff --git a/lib/travis/api/v3/extensions/belongs_to.rb b/lib/travis/api/v3/extensions/belongs_to.rb index 1fec8a7e..28aaa918 100644 --- a/lib/travis/api/v3/extensions/belongs_to.rb +++ b/lib/travis/api/v3/extensions/belongs_to.rb @@ -41,7 +41,7 @@ module Travis::API::V3 end def []=(key, value) - value &&= value.sub("#{self.class.parent}::") if self.class.polymorfic_foreign_types.include?(key) + value &&= value.sub("#{self.class.parent}::", ''.freeze) if self.class.polymorfic_foreign_types.include?(key) super(key, value) end end diff --git a/spec/v3/extensions/belongs_to_spec.rb b/spec/v3/extensions/belongs_to_spec.rb new file mode 100644 index 00000000..dd031ab5 --- /dev/null +++ b/spec/v3/extensions/belongs_to_spec.rb @@ -0,0 +1,17 @@ +require 'spec_helper' + +describe Travis::API::V3::Extensions::BelongsTo do + describe 'reading polymorphic relation' do + subject(:repo) { Travis::API::V3::Models::Repository.first } + example { expect(repo.owner).to be_a(Travis::API::V3::Models::User) } + end + + describe 'writing polymorphic relation' do + let(:repo) { Travis::API::V3::Models::Repository.create(owner: user) } + let(:user) { Travis::API::V3::Models::User.create } + after { repo.destroy; user.destroy } + + example { expect(repo.owner).to be_a(Travis::API::V3::Models::User) } + example { expect(::Repository.find(repo.id).owner).to be_a(::User) } + end +end \ No newline at end of file