From daf534edb7bb0b82df9ea5cc4d81d2def3ede45d Mon Sep 17 00:00:00 2001 From: Joe Corcoran Date: Wed, 8 Jun 2016 17:13:05 +0200 Subject: [PATCH] Don't overwrite settings with defaults Also changes the way the JSON fields are set to force ActiveRecord to recognise the changes. Is there a better way? --- lib/travis/api/v3/models/settings.rb | 6 ++++-- spec/v3/services/settings_spec.rb | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/travis/api/v3/models/settings.rb b/lib/travis/api/v3/models/settings.rb index 626ea097..48824816 100644 --- a/lib/travis/api/v3/models/settings.rb +++ b/lib/travis/api/v3/models/settings.rb @@ -11,8 +11,10 @@ module Travis::API::V3 end def update(settings = {}) - settings = defaults.merge(settings) - repository.update_attributes(settings: JSON.generate(settings)) + settings = to_h.merge(settings) + repository.settings.clear + settings.each { |k, v| repository.settings[k] = v } + repository.save! end private diff --git a/spec/v3/services/settings_spec.rb b/spec/v3/services/settings_spec.rb index d5a3bd09..c193a7ec 100644 --- a/spec/v3/services/settings_spec.rb +++ b/spec/v3/services/settings_spec.rb @@ -107,6 +107,7 @@ describe Travis::API::V3::Services::Settings do let(:params) { JSON.dump('settings.build_pushes' => false) } before do + repo.update_attributes(settings: JSON.dump('maximum_number_of_builds' => 20)) patch("/v3/repo/#{repo.id}/settings", params, json_headers.merge(auth_headers)) end @@ -118,7 +119,7 @@ describe Travis::API::V3::Services::Settings do 'builds_only_with_travis_yml' => false, 'build_pushes' => false, 'build_pull_requests' => true, - 'maximum_number_of_builds' => 0 + 'maximum_number_of_builds' => 20 } ) end