test/story_test.rb in tracker_api-0.2.9 vs test/story_test.rb in tracker_api-0.2.10
- old
+ new
@@ -4,10 +4,11 @@
let(:pt_user) { PT_USER_1 }
let(:client) { TrackerApi::Client.new token: pt_user[:token] }
let(:project_id) { pt_user[:project_id] }
let(:project) { VCR.use_cassette('get project') { client.project(project_id) } }
let(:story_id) { '66728004' }
+ let(:another_story_id) { '66728000' }
let(:story) { VCR.use_cassette('get story') { project.story(story_id) } }
it 'can update an existing story' do
new_name = "#{story.name}+"
@@ -32,14 +33,57 @@
story.name.must_equal new_name
story.description.must_equal new_desc
end
+ it 'can add new labels to an existing story' do
+ new_label_name = 'super-special-label'
+
+ story.labels.map(&:name).wont_include new_label_name
+
+ new_label = TrackerApi::Resources::Label.new(name: new_label_name)
+ story.labels << new_label
+
+ VCR.use_cassette('save story with new label', record: :new_episodes) do
+ story.save
+ end
+
+ story.labels.wont_be_empty
+ story.labels.map(&:name).must_include new_label_name
+ end
+
+ it 'objects are equal based on id' do
+ story_a = story
+ story_b = VCR.use_cassette('get story') { project.story(story_id) }
+ story_c = VCR.use_cassette('get another story') { project.story(another_story_id) }
+
+ story_a.must_equal story_b
+ story_a.hash.must_equal story_b.hash
+ story_a.eql?(story_b).must_equal true
+ story_a.equal?(story_b).must_equal false
+
+ story_a.wont_equal story_c
+ story_a.hash.wont_equal story_c.hash
+ story_a.eql?(story_c).must_equal false
+ story_a.equal?(story_c).must_equal false
+ end
+
describe '.tasks' do
+ it 'gets all tasks for this story with eager loading' do
+ VCR.use_cassette('get story with tasks', record: :new_episodes) do
+ tasks = project.story(story_id, fields: ':default,tasks').tasks
+
+ tasks.wont_be_empty
+ task = tasks.first
+ task.must_be_instance_of TrackerApi::Resources::Task
+ end
+ end
+
it 'gets all tasks for this story' do
VCR.use_cassette('get tasks', record: :new_episodes) do
- tasks = project.story(story_id).tasks
+ story = project.story(story_id)
+ tasks = VCR.use_cassette('get tasks for story') { story.tasks }
tasks.wont_be_empty
task = tasks.first
task.must_be_instance_of TrackerApi::Resources::Task
end
@@ -53,9 +97,20 @@
unless tasks.empty?
task = tasks.first
task.must_be_instance_of TrackerApi::Resources::Task
end
end
+ end
+ end
+
+ it 'can create task' do
+ VCR.use_cassette('create task') do
+ task = project.story(story_id).create_task(description: 'Test task')
+
+ task.must_be_instance_of TrackerApi::Resources::Task
+ task.id.wont_be_nil
+ task.id.must_be :>, 0
+ task.description.must_equal 'Test task'
end
end
end
describe '.activity' do