git_pivotal_tracker 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -87,6 +87,9 @@ module GitPivotalTracker
87
87
  opts.on("-b", "--integration-branch=", "The branch to merge finished stories back down onto") { |b| options[:integration_branch] = b }
88
88
  opts.on("-n", "--full-name=", "Your Pivotal Tracker full name") { |n| options[:full_name] = n }
89
89
 
90
+
91
+ opts.on("-I", "--include-rejected", "Include rejected stories as well as unstarted ones") { |i| options[:include_rejected] = i }
92
+ opts.on("-O", "--only-mine", "Only include stories that are assigned to me") { |o| options[:only_mine] = o }
90
93
  opts.on("-F", "--fast-forward", "Merge topic branch with fast forward") { |f| options[:fast_forward] = f }
91
94
  opts.on("-S", "--use-ssl", "Use SSL for connection to Pivotal Tracker") { |s| options[:use_ssl] = s }
92
95
  opts.on("-R", "--rebase", "Fetch and rebase the integration branch before merging") { |r| options[:rebase] = r }
@@ -39,7 +39,9 @@ module GitPivotalTracker
39
39
  private
40
40
 
41
41
  def fetch_story
42
- conditions = { :current_state => "unstarted", :limit => 1 }
42
+ state = options[:include_rejected] ? "unstarted,rejected" : "unstarted"
43
+ conditions = { :current_state => state, :limit => 1 }
44
+ conditions[:owned_by] = "\"#{options[:full_name]}\"" if options[:only_mine]
43
45
  conditions[:story_type] = type unless type == 'story'
44
46
  project.stories.all(conditions).first
45
47
  end
@@ -1,3 +1,3 @@
1
1
  module GitPivotalTracker
2
- VERSION = '0.0.5'
2
+ VERSION = '0.0.6'
3
3
  end
@@ -32,6 +32,14 @@ describe GitPivotalTracker::Base do
32
32
  it "leaves full_name nil" do
33
33
  subject.options[:full_name].should be_nil
34
34
  end
35
+
36
+ it "leaves include_rejected nil" do
37
+ subject.options[:include_rejected].should be_nil
38
+ end
39
+
40
+ it "leaves only_mine nil" do
41
+ subject.options[:only_mine].should be_nil
42
+ end
35
43
  end
36
44
 
37
45
  it "sets the api_token" do
@@ -54,6 +62,16 @@ describe GitPivotalTracker::Base do
54
62
  GitPivotalTracker::Base.new("-n", "Full Name").options[:full_name].should == 'Full Name'
55
63
  end
56
64
 
65
+ it "sets include_rejected" do
66
+ GitPivotalTracker::Base.new("--include-rejected").options[:include_rejected].should be
67
+ GitPivotalTracker::Base.new("-I").options[:include_rejected].should be
68
+ end
69
+
70
+ it "sets only_mine" do
71
+ GitPivotalTracker::Base.new("--only-mine").options[:only_mine].should be
72
+ GitPivotalTracker::Base.new("-O").options[:only_mine].should be
73
+ end
74
+
57
75
  it "sets fast_forward" do
58
76
  GitPivotalTracker::Base.new("--fast-forward").options[:fast_forward].should be
59
77
  GitPivotalTracker::Base.new("-F").options[:fast_forward].should be
@@ -147,13 +165,15 @@ describe GitPivotalTracker::Base do
147
165
  end
148
166
 
149
167
  context "given no prepare-commit-msg hook" do
168
+ let(:file_name) { ".git/hooks/prepare-commit-msg" }
169
+
150
170
  before do
151
- File.delete ".git/hooks/prepare-commit-msg"
171
+ File.delete file_name if File.exists? file_name
152
172
  GitPivotalTracker::Base.new
153
173
  end
154
174
 
155
175
  it "installs the hook" do
156
- File.executable?(".git/hooks/prepare-commit-msg").should be
176
+ File.executable?(file_name).should be
157
177
  end
158
178
  end
159
179
  end
@@ -5,10 +5,9 @@ describe GitPivotalTracker::Story do
5
5
  before do
6
6
  stub_request(:get, 'http://www.pivotaltracker.com/services/v3/projects/123').
7
7
  to_return :body => File.read("#{FIXTURES_PATH}/project.xml")
8
+ @story = GitPivotalTracker::Story.new("-t", "8a8a8a8", "-p", "123")
8
9
  end
9
10
 
10
- let(:story) { GitPivotalTracker::Story.new("-t", "8a8a8a8", "-p", "123") }
11
-
12
11
  context "given there are no stories" do
13
12
  before do
14
13
  stub_request(:get, 'http://www.pivotaltracker.com/services/v3/projects/123/stories?filter=current_state:unstarted&limit=1').
@@ -16,51 +15,83 @@ describe GitPivotalTracker::Story do
16
15
  end
17
16
 
18
17
  it "fails" do
19
- story.run!.should == 1
18
+ @story.run!.should == 1
20
19
  end
21
20
  end
22
21
 
23
22
  context "given there is a story" do
24
23
  before do
25
24
  start_xml = File.read("#{FIXTURES_PATH}/start_story.xml")
26
- stub_request(:get, 'http://www.pivotaltracker.com/services/v3/projects/123/stories?filter=current_state:unstarted&limit=1').
27
- to_return :body => File.read("#{FIXTURES_PATH}/one_story.xml")
28
25
  stub_request(:put, 'http://www.pivotaltracker.com/services/v3/projects/123/stories/1234567890').
29
26
  with(:body => start_xml).to_return(:body => start_xml)
30
27
 
31
- @current_branch = story.repository.head.name
28
+ @current_branch = @story.repository.head.name
29
+
30
+ @expected_branch = 'feature-1234567890-pause_the_film'
31
+ @story.repository.git.branch({:D => true}, @expected_branch)
32
32
  end
33
33
 
34
- context "then I accept the default branch suffix" do
34
+ context "when the include-rejected flag is set" do
35
35
  before do
36
- @expected_branch = 'feature-1234567890-pause_the_film'
37
- story.repository.git.branch({:D => true}, @expected_branch)
36
+ @story = GitPivotalTracker::Story.new("-t", "8a8a8a8", "-p", "123", "--include-rejected")
38
37
 
39
- story.should_receive(:gets).and_return "\n"
40
- story.run!
38
+ stub_request(:get, 'http://www.pivotaltracker.com/services/v3/projects/123/stories?filter=current_state:unstarted,rejected&limit=1').
39
+ to_return :body => File.read("#{FIXTURES_PATH}/one_story.xml")
41
40
  end
42
41
 
43
- it "creates a new branch" do
44
- story.repository.head.name.should == @expected_branch
42
+ it "succeeds" do
43
+ @story.should_receive(:gets).and_return "\n"
44
+ @story.run!.should == 0
45
45
  end
46
46
  end
47
47
 
48
- context "then I customize the branch suffix" do
48
+ context "when the only-mine flag is set" do
49
49
  before do
50
- @expected_branch = 'feature-1234567890-new_name'
51
- story.repository.git.branch({:D => true}, @expected_branch)
50
+ @story = GitPivotalTracker::Story.new("-t", "8a8a8a8", "-p", "123", "--full-name", "Ben Lindsey", "--only-mine")
51
+ stub_request(:get, 'http://www.pivotaltracker.com/services/v3/projects/123/stories?filter=current_state:unstarted%20owned_by:%22Ben%20Lindsey%22&limit=1').
52
+ to_return :body => File.read("#{FIXTURES_PATH}/one_story.xml")
53
+ end
52
54
 
53
- story.should_receive(:gets).and_return "new_name\n"
54
- story.run!
55
+ it "succeeds" do
56
+ @story.should_receive(:gets).and_return "\n"
57
+ @story.run!.should == 0
55
58
  end
59
+ end
60
+
61
+ context "when the default options are used" do
62
+ before do
63
+ stub_request(:get, 'http://www.pivotaltracker.com/services/v3/projects/123/stories?filter=current_state:unstarted&limit=1').
64
+ to_return :body => File.read("#{FIXTURES_PATH}/one_story.xml")
65
+ end
66
+
67
+ context "then I accept the default branch suffix" do
68
+ before do
69
+ @story.should_receive(:gets).and_return "\n"
70
+ @story.run!
71
+ end
72
+
73
+ it "creates a new branch" do
74
+ @story.repository.head.name.should == @expected_branch
75
+ end
76
+ end
77
+
78
+ context "then I customize the branch suffix" do
79
+ before do
80
+ @expected_branch = 'feature-1234567890-new_name'
81
+ @story.repository.git.branch({:D => true}, @expected_branch)
82
+
83
+ @story.should_receive(:gets).and_return "new_name\n"
84
+ @story.run!
85
+ end
56
86
 
57
- it "creates a new branch" do
58
- story.repository.head.name.should == @expected_branch
87
+ it "creates a new branch" do
88
+ @story.repository.head.name.should == @expected_branch
89
+ end
59
90
  end
60
91
  end
61
92
 
62
93
  after do
63
- story.repository.git.checkout({:raise => true}, @current_branch)
94
+ @story.repository.git.checkout({:raise => true}, @current_branch)
64
95
  end
65
96
  end
66
97
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: git_pivotal_tracker
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.5
5
+ version: 0.0.6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Ben Lindsey
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-07-21 00:00:00 -07:00
13
+ date: 2011-07-31 00:00:00 -07:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency