Skip to content

Commit

Permalink
Start of deprecating TrackerApi::Resources::Story#save.
Browse files Browse the repository at this point in the history
  • Loading branch information
forest committed Feb 5, 2016
1 parent af89c34 commit ec15bc7
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 13 deletions.
12 changes: 11 additions & 1 deletion lib/tracker_api/endpoints/story.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,23 @@ def create(project_id, params={})
Resources::Story.new({ client: client }.merge(data))
end

def update(story, params={})
# @deprecated Please use {update} instead.
def update_direct(story, params={})
warn "[DEPRECATION] `save` is deprecated. Please use `update` instead."

raise ArgumentError, 'Valid story required to update.' unless story.instance_of?(Resources::Story)

data = client.put("/projects/#{story.project_id}/stories/#{story.id}", params: params).body

story.attributes = data
end

def update(project_id, story_id, params={})
data = client.put("/projects/#{project_id}/stories/#{story_id}", params: params).body

Resources::Story.new({ client: client }.merge(data))
end

end
end
end
6 changes: 5 additions & 1 deletion lib/tracker_api/resources/story.rb
Original file line number Diff line number Diff line change
Expand Up @@ -110,10 +110,14 @@ def create_task(params)
end

# Save changes to an existing Story.
#
# @deprecated Please use {Endpoints::Story.update} directly instead.
def save
warn "[DEPRECATION] `save` is deprecated. Please use `Endpoints::Story.update` directly instead."

raise ArgumentError, 'Can not update a story with an unknown project_id.' if project_id.nil?

Endpoints::Story.new(client).update(self, UpdateRepresenter.new(self))
Endpoints::Story.new(client).update_direct(self, UpdateRepresenter.new(self))
end
end
end
Expand Down
30 changes: 19 additions & 11 deletions test/story_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,29 +10,37 @@
let(:story) { VCR.use_cassette('get story') { project.story(story_id) } }


it '.save is deprecated' do
VCR.use_cassette('save story', record: :new_episodes) do
assert_output(nil, /\[DEPRECATION\]/) { story.save }
end
end

it 'can update an existing story' do
new_name = "#{story.name}+"
story.name = new_name
new_name = "#{story.name}+"

VCR.use_cassette('save story', record: :new_episodes) do
story.save
end
updated_story = TrackerApi::Endpoints::Story.new(client).update(project_id,
story_id,
{name: new_name})

story.name.must_equal new_name
updated_story.name.must_equal new_name
end
end

it 'can update multiple attributes of an existing story at once' do
new_name = "#{story.name}+"
new_desc = "#{story.description}+"

story.attributes = { name: new_name, description: new_desc }

VCR.use_cassette('save story with multiple changes', record: :new_episodes) do
story.save
end
updated_story = TrackerApi::Endpoints::Story.new(client).update(project_id,
story_id,
{ name: new_name,
description: new_desc })

story.name.must_equal new_name
story.description.must_equal new_desc
updated_story.name.must_equal new_name
updated_story.description.must_equal new_desc
end
end

it 'can add new labels to an existing story' do
Expand Down

0 comments on commit ec15bc7

Please sign in to comment.