pgit 0.0.4 → 1.0.0
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.
- checksums.yaml +4 -4
- data/.agignore +3 -0
- data/.travis.yml +1 -0
- data/README.markdown +32 -9
- data/Rakefile +12 -0
- data/bin/pgit +167 -25
- data/lib/pgit.rb +40 -10
- data/lib/pgit/bilateral/handle_back.rb +22 -0
- data/lib/pgit/bilateral/handle_choose_story.rb +31 -0
- data/lib/pgit/bilateral/story.rb +44 -0
- data/lib/pgit/command.rb +83 -0
- data/lib/pgit/command/add.rb +36 -0
- data/lib/pgit/command/application.rb +21 -0
- data/lib/pgit/command/edit.rb +36 -0
- data/lib/pgit/command/remove.rb +36 -0
- data/lib/pgit/command/run.rb +32 -0
- data/lib/pgit/command/show.rb +53 -0
- data/lib/pgit/configuration.rb +27 -3
- data/lib/pgit/current_project.rb +9 -45
- data/lib/pgit/current_project/validator.rb +2 -1
- data/lib/pgit/error/external.rb +11 -0
- data/lib/pgit/error/user.rb +12 -0
- data/lib/pgit/helpers/heredoc.rb +17 -0
- data/lib/pgit/helpers/query_methods.rb +63 -0
- data/lib/pgit/helpers/string_extensions.rb +29 -0
- data/lib/pgit/installer/bash_auto_completion.rb +57 -0
- data/lib/pgit/pivotal/collection_request.rb +21 -0
- data/lib/pgit/pivotal/individual_request.rb +47 -0
- data/lib/pgit/pivotal/iteration.rb +6 -0
- data/lib/pgit/pivotal/iterations.rb +15 -0
- data/lib/pgit/pivotal/project.rb +6 -0
- data/lib/pgit/pivotal/projects.rb +20 -0
- data/lib/pgit/pivotal/query.rb +8 -0
- data/lib/pgit/pivotal/request.rb +33 -0
- data/lib/pgit/pivotal/request/query.rb +25 -0
- data/lib/pgit/pivotal/story.rb +38 -0
- data/lib/pgit/pivotal_request_validator.rb +1 -1
- data/lib/pgit/project.rb +78 -0
- data/lib/pgit/project/add.rb +28 -0
- data/lib/pgit/project/application.rb +21 -0
- data/lib/pgit/project/interactive_adder.rb +41 -0
- data/lib/pgit/project/remove.rb +41 -0
- data/lib/pgit/project/reuse_api_token_adder.rb +48 -0
- data/lib/pgit/response_handler.rb +16 -0
- data/lib/pgit/root.rb +5 -0
- data/lib/pgit/status.rb +16 -0
- data/lib/pgit/story_branch/application.rb +3 -3
- data/lib/pgit/{name_parser.rb → story_branch/name_parser.rb} +0 -0
- data/lib/pgit/story_branch/story_id_parser.rb +11 -0
- data/lib/pgit/validators/project_validator.rb +20 -0
- data/lib/pgit/version.rb +1 -1
- data/lib/pivotal +0 -0
- data/pgit.gemspec +5 -0
- data/spec/fixtures/iterations +1 -0
- data/spec/pgit/bilateral/handle_back_spec.rb +29 -0
- data/spec/pgit/bilateral/handle_choose_story_spec.rb +17 -0
- data/spec/pgit/bilateral/story_spec.rb +178 -0
- data/spec/pgit/command/add_spec.rb +68 -0
- data/spec/pgit/command/application_spec.rb +110 -0
- data/spec/pgit/command/edit_spec.rb +61 -0
- data/spec/pgit/command/remove_spec.rb +76 -0
- data/spec/pgit/command/run_spec.rb +49 -0
- data/spec/pgit/command/show_spec.rb +95 -0
- data/spec/pgit/command_spec.rb +299 -0
- data/spec/pgit/configuration_spec.rb +121 -18
- data/spec/pgit/current_project/validator_spec.rb +2 -1
- data/spec/pgit/current_project_spec.rb +20 -71
- data/spec/pgit/{external_error_spec.rb → error/external_spec.rb} +3 -3
- data/spec/pgit/error/user_spec.rb +17 -0
- data/spec/pgit/helpers/heredoc_spec.rb +33 -0
- data/spec/pgit/helpers/query_methods_spec.rb +24 -0
- data/spec/pgit/helpers/string_extensions_spec.rb +49 -0
- data/spec/pgit/installer/bash_auto_completion_spec.rb +134 -0
- data/spec/pgit/pivotal/individual_request_spec.rb +32 -0
- data/spec/pgit/pivotal/iteration_spec.rb +19 -0
- data/spec/pgit/pivotal/iterations_spec.rb +37 -0
- data/spec/pgit/pivotal/project_spec.rb +9 -0
- data/spec/pgit/pivotal/projects_spec.rb +48 -0
- data/spec/pgit/pivotal/request/query_spec.rb +24 -0
- data/spec/pgit/pivotal/story_spec.rb +113 -0
- data/spec/pgit/pivotal_request_validator_spec.rb +3 -3
- data/spec/pgit/project/add_spec.rb +52 -0
- data/spec/pgit/project/application_spec.rb +69 -0
- data/spec/pgit/project/interactive_adder_spec.rb +45 -0
- data/spec/pgit/project/remove_spec.rb +86 -0
- data/spec/pgit/project/reuse_api_token_adder_spec.rb +41 -0
- data/spec/pgit/project_spec.rb +513 -0
- data/spec/pgit/status_spec.rb +40 -0
- data/spec/pgit/story_branch/application_spec.rb +5 -8
- data/spec/pgit/story_branch/name_parser_spec.rb +3 -3
- data/spec/pgit/story_branch/story_id_parser_spec.rb +17 -0
- data/spec/pgit/validators/project_validator_spec.rb +39 -0
- metadata +146 -21
- data/lib/pgit/configuration/layout_error.rb +0 -9
- data/lib/pgit/configuration/missing_attributes_error.rb +0 -10
- data/lib/pgit/configuration/not_found_error.rb +0 -10
- data/lib/pgit/configuration/project_missing_error.rb +0 -10
- data/lib/pgit/configuration/validator.rb +0 -41
- data/lib/pgit/current_project/no_paths_match_working_dir_error.rb +0 -10
- data/lib/pgit/external_error.rb +0 -9
- data/lib/pgit/installer/configuration.rb +0 -34
- data/lib/pgit/story.rb +0 -44
- data/spec/pgit/configuration/missing_attributes_error_spec.rb +0 -30
- data/spec/pgit/configuration/not_found_error_spec.rb +0 -17
- data/spec/pgit/configuration/project_missing_error_spec.rb +0 -30
- data/spec/pgit/configuration/validator_spec.rb +0 -79
- data/spec/pgit/current_project/no_paths_match_working_dir_error_spec.rb +0 -17
- data/spec/pgit/installer/configuration_spec.rb +0 -162
- data/spec/pgit/story_spec.rb +0 -35
data/lib/pgit/external_error.rb
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
module PGit
|
|
2
|
-
module Installer
|
|
3
|
-
class Configuration
|
|
4
|
-
FILEPATH = "~/.pgit.rc.yml"
|
|
5
|
-
def initialize(glob_opts, opts, args)
|
|
6
|
-
@expanded_path = File.expand_path(FILEPATH)
|
|
7
|
-
|
|
8
|
-
if File.exists? @expanded_path
|
|
9
|
-
warn "#{FILEPATH} already exists"
|
|
10
|
-
else
|
|
11
|
-
ask_continue
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def ask_continue
|
|
16
|
-
puts "*** Installing example pgit configuration file under #{FILEPATH}. Continue? [Y/n]"
|
|
17
|
-
if STDIN.gets.chomp.match(/y/i)
|
|
18
|
-
puts "Saving example pgit config in #{FILEPATH}..."
|
|
19
|
-
write_example_pgit_rc_file
|
|
20
|
-
else
|
|
21
|
-
puts "Aborting installation..."
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def write_example_pgit_rc_file
|
|
26
|
-
File.open(@expanded_path, 'w') do |f|
|
|
27
|
-
YAML.dump(PGit::Configuration.default_options, f)
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
puts "Saved! Please edit #{FILEPATH} and add the proper Pivotal Tracker API tokens, id, and file paths for each project"
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
data/lib/pgit/story.rb
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
#
|
|
2
|
-
# Wrapper for a Pivotal Tracker story
|
|
3
|
-
#
|
|
4
|
-
|
|
5
|
-
module PGit
|
|
6
|
-
class Story
|
|
7
|
-
class << self
|
|
8
|
-
def get(id, current_project)
|
|
9
|
-
@id = id
|
|
10
|
-
@project_id = current_project.id
|
|
11
|
-
@api_token = current_project.api_token
|
|
12
|
-
|
|
13
|
-
define_methods(get!)
|
|
14
|
-
|
|
15
|
-
new
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def define_methods(json)
|
|
19
|
-
JSON.parse(json).each do |key, value|
|
|
20
|
-
define_method key do
|
|
21
|
-
value
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def api_version
|
|
27
|
-
"v5"
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def get!
|
|
31
|
-
validator = PGit::PivotalRequestValidator.new `#{get_request}`
|
|
32
|
-
validator.request
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def link
|
|
36
|
-
"'https://www.pivotaltracker.com/services/#{api_version}/projects/#{@project_id}/stories/#{@id}'"
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def get_request
|
|
40
|
-
"curl -X GET -H 'X-TrackerToken: #{@api_token}' #{link}"
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
end
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe 'PGit::Configuration::MissingAttributesError' do
|
|
4
|
-
it 'should inherit from PGit::Error' do
|
|
5
|
-
ancestors = PGit::Configuration::MissingAttributesError.ancestors
|
|
6
|
-
|
|
7
|
-
expect(ancestors).to include (PGit::Error)
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
it 'should complain saying that a project must exist' do
|
|
11
|
-
error_message = <<-ERROR
|
|
12
|
-
/Users/edderic/some/config/path.yml must have a path, id, and api_token for each project.
|
|
13
|
-
Please have the following layout:
|
|
14
|
-
---
|
|
15
|
-
projects:
|
|
16
|
-
- api_token: somepivotalatoken124
|
|
17
|
-
id: '12345'
|
|
18
|
-
path: "~/some/path/to/a/pivotal-git/project"
|
|
19
|
-
- api_token: somepivotalatoken124
|
|
20
|
-
id: '23429070'
|
|
21
|
-
path: "~/some/other/pivotal-git/project"
|
|
22
|
-
ERROR
|
|
23
|
-
error_message.gsub!(/^\s{6}/,'')
|
|
24
|
-
fake_path = "/Users/edderic/some/config/path.yml"
|
|
25
|
-
missing_attributes_error = PGit::Configuration::MissingAttributesError.new(fake_path)
|
|
26
|
-
message = missing_attributes_error.instance_eval{ @message }
|
|
27
|
-
|
|
28
|
-
expect(message).to eq error_message
|
|
29
|
-
end
|
|
30
|
-
end
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe 'PGit::Configuration::NotFoundError' do
|
|
4
|
-
it 'should inherit from PGit::Error' do
|
|
5
|
-
ancestors = PGit::Configuration::NotFoundError.ancestors
|
|
6
|
-
|
|
7
|
-
expect(ancestors).to include (PGit::Error)
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
it 'should complain that the Configuration file does not exist' do
|
|
11
|
-
fake_config_path = "/Users/edderic/some/path/to/.pgit.rc.yml"
|
|
12
|
-
not_found_error = PGit::Configuration::NotFoundError.new(fake_config_path)
|
|
13
|
-
message = not_found_error.instance_eval{ @message }
|
|
14
|
-
|
|
15
|
-
expect(message).to eq "#{fake_config_path} configuration file does not exist. Please run `pgit install`"
|
|
16
|
-
end
|
|
17
|
-
end
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe 'PGit::Configuration::ProjectMissingError' do
|
|
4
|
-
it 'should inherit from PGit::Error' do
|
|
5
|
-
ancestors = PGit::Configuration::ProjectMissingError.ancestors
|
|
6
|
-
|
|
7
|
-
expect(ancestors).to include (PGit::Error)
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
it 'should complain saying that a project must exist' do
|
|
11
|
-
error_message = <<-ERROR
|
|
12
|
-
/Users/edderic/some/config/path.yml needs at least one project.
|
|
13
|
-
Please have the following layout:
|
|
14
|
-
---
|
|
15
|
-
projects:
|
|
16
|
-
- api_token: somepivotalatoken124
|
|
17
|
-
id: '12345'
|
|
18
|
-
path: "~/some/path/to/a/pivotal-git/project"
|
|
19
|
-
- api_token: somepivotalatoken124
|
|
20
|
-
id: '23429070'
|
|
21
|
-
path: "~/some/other/pivotal-git/project"
|
|
22
|
-
ERROR
|
|
23
|
-
error_message.gsub!(/^\s{6}/,'')
|
|
24
|
-
fake_path = "/Users/edderic/some/config/path.yml"
|
|
25
|
-
project_missing_error = PGit::Configuration::ProjectMissingError.new(fake_path)
|
|
26
|
-
message = project_missing_error.instance_eval{ @message }
|
|
27
|
-
|
|
28
|
-
expect(message).to eq error_message
|
|
29
|
-
end
|
|
30
|
-
end
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe 'PGit::Configuration::Validator' do
|
|
4
|
-
describe '#new(configuration_path)' do
|
|
5
|
-
describe 'empty file' do
|
|
6
|
-
it 'should complain that there should be at least one project' do
|
|
7
|
-
fake_path = "~/some/config/path.yml"
|
|
8
|
-
fake_expanded_path = "/Users/edderic/some/config/path.yml"
|
|
9
|
-
fake_file = double('file')
|
|
10
|
-
fake_yaml = {}
|
|
11
|
-
|
|
12
|
-
allow(File).to receive(:expand_path).with(fake_path).and_return(fake_expanded_path)
|
|
13
|
-
allow(File).to receive(:expand_path).with('.')
|
|
14
|
-
allow(File).to receive(:exists?).with(fake_expanded_path).and_return(true)
|
|
15
|
-
allow(File).to receive(:open).with(fake_expanded_path, 'r').and_return(fake_file)
|
|
16
|
-
allow(YAML).to receive(:load).with(fake_file).and_return(fake_yaml)
|
|
17
|
-
|
|
18
|
-
expect do
|
|
19
|
-
PGit::Configuration::Validator.new(fake_path)
|
|
20
|
-
end.to raise_error(PGit::Configuration::ProjectMissingError)
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
describe 'has projects but is missing a token' do
|
|
25
|
-
it 'should raise an error' do
|
|
26
|
-
fake_path = "~/some/config/path.yml"
|
|
27
|
-
fake_expanded_path = "/Users/edderic/some/config/path.yml"
|
|
28
|
-
fake_file = double('file')
|
|
29
|
-
fake_projects = [ { path: 'fake_path',
|
|
30
|
-
api_token: 'fake_token'
|
|
31
|
-
}]
|
|
32
|
-
fake_yaml = { 'projects' => fake_projects }
|
|
33
|
-
|
|
34
|
-
allow(File).to receive(:expand_path).with(fake_path).and_return(fake_expanded_path)
|
|
35
|
-
allow(File).to receive(:expand_path).with('.')
|
|
36
|
-
allow(File).to receive(:exists?).with(fake_expanded_path).and_return(true)
|
|
37
|
-
allow(File).to receive(:open).with(fake_expanded_path, 'r').and_return(fake_file)
|
|
38
|
-
allow(YAML).to receive(:load).with(fake_file).and_return(fake_yaml)
|
|
39
|
-
|
|
40
|
-
expect do
|
|
41
|
-
PGit::Configuration::Validator.new(fake_path)
|
|
42
|
-
end.to raise_error(PGit::Configuration::MissingAttributesError)
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
describe 'configuration_path exists' do
|
|
47
|
-
it '#yaml should return the yaml file' do
|
|
48
|
-
fake_path = "~/some/config/path.yml"
|
|
49
|
-
fake_expanded_path = "/Users/edderic/some/config/path.yml"
|
|
50
|
-
fake_file = double('file')
|
|
51
|
-
fake_projects = [ { "path" => 'fake_path',
|
|
52
|
-
"id" => 'fake_id',
|
|
53
|
-
"api_token" => 'fake_token'
|
|
54
|
-
}]
|
|
55
|
-
|
|
56
|
-
fake_yaml = { 'projects' => fake_projects }
|
|
57
|
-
|
|
58
|
-
allow(File).to receive(:expand_path).with(fake_path).and_return(fake_expanded_path)
|
|
59
|
-
allow(File).to receive(:exists?).with(fake_expanded_path).and_return(true)
|
|
60
|
-
allow(File).to receive(:open).with(fake_expanded_path, 'r').and_return(fake_file)
|
|
61
|
-
allow(YAML).to receive(:load).with(fake_file).and_return(fake_yaml)
|
|
62
|
-
|
|
63
|
-
configuration = PGit::Configuration::Validator.new(fake_path)
|
|
64
|
-
|
|
65
|
-
expect(configuration.yaml).to eq fake_yaml
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
describe 'configuration path does not exist' do
|
|
70
|
-
it 'should throw an error' do
|
|
71
|
-
file_path = '~/.edderic-dotfiles/config/project.yml'
|
|
72
|
-
fake_expanded_path = "/home/edderic/.edderic-dotfiles/config/project.yml"
|
|
73
|
-
allow(File).to receive(:exists?).and_return(false)
|
|
74
|
-
|
|
75
|
-
expect{ PGit::Configuration::Validator.new(file_path) }.to raise_error(PGit::Configuration::NotFoundError)
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
end
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe 'PGit::CurrentProject::NoPathsMatchWorkingDirError' do
|
|
4
|
-
it 'should have PGit::Error as an ancestor' do
|
|
5
|
-
ancestors = PGit::CurrentProject::NoPathsMatchWorkingDirError.ancestors
|
|
6
|
-
|
|
7
|
-
expect(ancestors).to include PGit::Error
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
it 'should have the appropriate message' do
|
|
11
|
-
matches = []
|
|
12
|
-
error = PGit::CurrentProject::NoPathsMatchWorkingDirError.new
|
|
13
|
-
message = error.instance_eval { @message }
|
|
14
|
-
|
|
15
|
-
expect(message).to eq "None of the project paths matches the working directory"
|
|
16
|
-
end
|
|
17
|
-
end
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
require 'pgit'
|
|
2
|
-
|
|
3
|
-
describe 'PGit::Installer::Configuration' do
|
|
4
|
-
describe '::FILEPATH' do
|
|
5
|
-
it 'should eq ~/.pgit.rc.yml' do
|
|
6
|
-
expect(PGit::Installer::Configuration::FILEPATH).to eq '~/.pgit.rc.yml'
|
|
7
|
-
end
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
describe "#{PGit::Installer::Configuration::FILEPATH} exists" do
|
|
11
|
-
it 'should say that the file already exists' do
|
|
12
|
-
global_opts = {}
|
|
13
|
-
opts = { }
|
|
14
|
-
args = {}
|
|
15
|
-
message = "#{PGit::Installer::Configuration::FILEPATH} already exists"
|
|
16
|
-
default_file_path = "#{PGit::Installer::Configuration::FILEPATH}"
|
|
17
|
-
file_expanded_path = "/home/edderic/.pgit.rc.yml"
|
|
18
|
-
|
|
19
|
-
allow(File).to receive(:expand_path).
|
|
20
|
-
with(".")
|
|
21
|
-
allow(File).to receive(:expand_path).
|
|
22
|
-
with(default_file_path).and_return(file_expanded_path)
|
|
23
|
-
allow(File).to receive(:exists?).
|
|
24
|
-
with(file_expanded_path).and_return(true)
|
|
25
|
-
allow_any_instance_of(PGit::Installer::Configuration).to receive(:warn).with(message)
|
|
26
|
-
|
|
27
|
-
installer = PGit::Installer::Configuration.new(global_opts, opts, args)
|
|
28
|
-
|
|
29
|
-
expect(installer).to have_received(:warn).with(message)
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
describe '~/pgit.rc.yml does not exist' do
|
|
34
|
-
it 'should ask to continue or not' do
|
|
35
|
-
global_opts = {}
|
|
36
|
-
opts = { }
|
|
37
|
-
args = {}
|
|
38
|
-
|
|
39
|
-
message = "*** Installing example pgit configuration file under #{PGit::Installer::Configuration::FILEPATH}. " +
|
|
40
|
-
"Continue? [Y/n]"
|
|
41
|
-
confirmation_message = "Saving example pgit config in #{PGit::Installer::Configuration::FILEPATH}..."
|
|
42
|
-
edit_message = "Saved! Please edit #{PGit::Installer::Configuration::FILEPATH} and add the proper Pivotal Tracker API tokens, id, and file paths for each project"
|
|
43
|
-
answer = instance_double("String", chomp: 'y')
|
|
44
|
-
expanded_path = "/home/edderic/.pgit.rc.yml"
|
|
45
|
-
fake_writable_file = double('File')
|
|
46
|
-
allow(File).to receive(:expand_path).with("#{PGit::Installer::Configuration::FILEPATH}").and_return(expanded_path)
|
|
47
|
-
allow(File).to receive(:exists?).with(expanded_path).and_return(false)
|
|
48
|
-
allow(File).to receive(:open).with(expanded_path, 'w').and_return(fake_writable_file)
|
|
49
|
-
allow(STDIN).to receive(:gets).and_return(answer)
|
|
50
|
-
allow_any_instance_of(PGit::Installer::Configuration).to receive(:puts).with(message)
|
|
51
|
-
allow_any_instance_of(PGit::Installer::Configuration).to receive(:puts).with(confirmation_message)
|
|
52
|
-
allow_any_instance_of(PGit::Installer::Configuration).to receive(:puts).with(edit_message)
|
|
53
|
-
installer = PGit::Installer::Configuration.new(global_opts, opts, args)
|
|
54
|
-
|
|
55
|
-
expect(installer).to have_received(:puts).with(message)
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
describe 'user answers "y"' do
|
|
59
|
-
it "should show the save message" do
|
|
60
|
-
global_opts = {}
|
|
61
|
-
opts = { }
|
|
62
|
-
args = {}
|
|
63
|
-
|
|
64
|
-
first_message = "*** Installing example pgit configuration file under #{PGit::Installer::Configuration::FILEPATH}. " +
|
|
65
|
-
"Continue? [Y/n]"
|
|
66
|
-
save_message = "Saving example pgit config in #{PGit::Installer::Configuration::FILEPATH}..."
|
|
67
|
-
expanded_path = "/home/edderic/.pgit.rc.yml"
|
|
68
|
-
edit_message = "Saved! Please edit #{PGit::Installer::Configuration::FILEPATH} and add the proper Pivotal Tracker API tokens, id, and file paths for each project"
|
|
69
|
-
fake_writable_file = double('File')
|
|
70
|
-
allow(File).to receive(:expand_path).with("#{PGit::Installer::Configuration::FILEPATH}").and_return(expanded_path)
|
|
71
|
-
allow(File).to receive(:exists?).with(expanded_path).and_return(false)
|
|
72
|
-
allow(File).to receive(:open).with(expanded_path, 'w').and_return(fake_writable_file)
|
|
73
|
-
allow_any_instance_of(PGit::Installer::Configuration).to receive(:puts).with(edit_message)
|
|
74
|
-
allow_any_instance_of(PGit::Installer::Configuration).to receive(:puts).with(first_message)
|
|
75
|
-
allow_any_instance_of(PGit::Installer::Configuration).to receive(:puts).with(save_message)
|
|
76
|
-
|
|
77
|
-
answer = instance_double("String", chomp: 'Y')
|
|
78
|
-
allow(STDIN).to receive(:gets).and_return(answer)
|
|
79
|
-
|
|
80
|
-
installer = PGit::Installer::Configuration.new(global_opts, opts, args)
|
|
81
|
-
|
|
82
|
-
expect(installer).to have_received(:puts).with(save_message)
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
it "should save the file under #{PGit::Installer::Configuration::FILEPATH}" do
|
|
86
|
-
global_opts = {}
|
|
87
|
-
opts = { }
|
|
88
|
-
args = {}
|
|
89
|
-
|
|
90
|
-
first_message = "*** Installing example pgit configuration file under #{PGit::Installer::Configuration::FILEPATH}. " +
|
|
91
|
-
"Continue? [Y/n]"
|
|
92
|
-
save_message = "Saving example pgit config in #{PGit::Installer::Configuration::FILEPATH}..."
|
|
93
|
-
expanded_path = "/home/edderic/.pgit.rc.yml"
|
|
94
|
-
fake_writable_file = double('File')
|
|
95
|
-
edit_message = "Saved! Please edit #{PGit::Installer::Configuration::FILEPATH} and add the proper Pivotal Tracker API tokens, id, and file paths for each project"
|
|
96
|
-
allow(File).to receive(:expand_path).with(PGit::Installer::Configuration::FILEPATH).and_return(expanded_path)
|
|
97
|
-
allow(File).to receive(:exists?).with(expanded_path).and_return(false)
|
|
98
|
-
allow(File).to receive(:open).with(expanded_path, 'w').and_return(fake_writable_file)
|
|
99
|
-
allow_any_instance_of(PGit::Installer::Configuration).to receive(:puts).with(first_message)
|
|
100
|
-
allow_any_instance_of(PGit::Installer::Configuration).to receive(:puts).with(save_message)
|
|
101
|
-
allow_any_instance_of(PGit::Installer::Configuration).to receive(:puts).with(edit_message)
|
|
102
|
-
|
|
103
|
-
answer = instance_double("String", chomp: 'Y')
|
|
104
|
-
allow(STDIN).to receive(:gets).and_return(answer)
|
|
105
|
-
|
|
106
|
-
installer = PGit::Installer::Configuration.new(global_opts, opts, args)
|
|
107
|
-
|
|
108
|
-
expect(File).to have_received(:open).with(expanded_path, 'w')
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
it 'should ask the user to edit the config file' do
|
|
112
|
-
global_opts = {}
|
|
113
|
-
opts = { }
|
|
114
|
-
args = {}
|
|
115
|
-
|
|
116
|
-
first_message = "*** Installing example pgit configuration file under #{PGit::Installer::Configuration::FILEPATH}. " +
|
|
117
|
-
"Continue? [Y/n]"
|
|
118
|
-
save_message = "Saving example pgit config in #{PGit::Installer::Configuration::FILEPATH}..."
|
|
119
|
-
edit_message = "Saved! Please edit #{PGit::Installer::Configuration::FILEPATH} and add the proper Pivotal Tracker API tokens, id, and file paths for each project"
|
|
120
|
-
expanded_path = "/home/edderic/.pgit.rc.yml"
|
|
121
|
-
fake_writable_file = double('File')
|
|
122
|
-
allow(File).to receive(:expand_path).with(PGit::Installer::Configuration::FILEPATH).and_return(expanded_path)
|
|
123
|
-
allow(File).to receive(:exists?).with(expanded_path).and_return(false)
|
|
124
|
-
allow(File).to receive(:open).with(expanded_path, 'w').and_return(fake_writable_file)
|
|
125
|
-
allow_any_instance_of(PGit::Installer::Configuration).to receive(:puts).with(first_message)
|
|
126
|
-
allow_any_instance_of(PGit::Installer::Configuration).to receive(:puts).with(edit_message)
|
|
127
|
-
allow_any_instance_of(PGit::Installer::Configuration).to receive(:puts).with(save_message)
|
|
128
|
-
|
|
129
|
-
answer = instance_double("String", chomp: 'Y')
|
|
130
|
-
allow(STDIN).to receive(:gets).and_return(answer)
|
|
131
|
-
|
|
132
|
-
installer = PGit::Installer::Configuration.new(global_opts, opts, args)
|
|
133
|
-
|
|
134
|
-
expect(installer).to have_received(:puts).with(edit_message)
|
|
135
|
-
end
|
|
136
|
-
end
|
|
137
|
-
|
|
138
|
-
describe 'user answers with "n"' do
|
|
139
|
-
it "should show the abort message" do
|
|
140
|
-
message = "Aborting installation..."
|
|
141
|
-
global_opts = {}
|
|
142
|
-
opts = { }
|
|
143
|
-
args = {}
|
|
144
|
-
|
|
145
|
-
first_message = "*** Installing example pgit configuration file under #{PGit::Installer::Configuration::FILEPATH}. " +
|
|
146
|
-
"Continue? [Y/n]"
|
|
147
|
-
expanded_path = "/home/edderic/.pgit.rc.yml"
|
|
148
|
-
allow(File).to receive(:expand_path).with("#{PGit::Installer::Configuration::FILEPATH}").and_return(expanded_path)
|
|
149
|
-
allow(File).to receive(:exists?).with(expanded_path).and_return(false)
|
|
150
|
-
allow_any_instance_of(PGit::Installer::Configuration).to receive(:puts).with(first_message)
|
|
151
|
-
allow_any_instance_of(PGit::Installer::Configuration).to receive(:puts).with(message)
|
|
152
|
-
|
|
153
|
-
answer = instance_double("String", chomp: 'n')
|
|
154
|
-
allow(STDIN).to receive(:gets).and_return(answer)
|
|
155
|
-
|
|
156
|
-
installer = PGit::Installer::Configuration.new(global_opts, opts, args)
|
|
157
|
-
|
|
158
|
-
expect(installer).to have_received(:puts).with(message)
|
|
159
|
-
end
|
|
160
|
-
end
|
|
161
|
-
end
|
|
162
|
-
end
|
data/spec/pgit/story_spec.rb
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe 'PGit::Story' do
|
|
4
|
-
describe '#get' do
|
|
5
|
-
it 'should generate the story' do
|
|
6
|
-
story_id = '123'
|
|
7
|
-
current_project = double('current_project', id: '321', api_token: 'abc10xyz')
|
|
8
|
-
get_request = "curl -X GET -H 'X-TrackerToken: abc10xyz' 'https://www.pivotaltracker.com/services/v5/projects/321/stories/123'"
|
|
9
|
-
fake_good_json = <<-GOOD_JSON
|
|
10
|
-
{
|
|
11
|
-
"created_at": "2014-11-25T12:00:00Z",
|
|
12
|
-
"current_state": "unstarted",
|
|
13
|
-
"description": "ignore the droids",
|
|
14
|
-
"estimate": 2,
|
|
15
|
-
"id": 555,
|
|
16
|
-
"kind": "story",
|
|
17
|
-
"labels": [],
|
|
18
|
-
"name": "Bring me the passengers",
|
|
19
|
-
"owner_ids": [],
|
|
20
|
-
"project_id": 99,
|
|
21
|
-
"requested_by_id": 101,
|
|
22
|
-
"story_type": "feature",
|
|
23
|
-
"updated_at": "2014-11-25T12:00:00Z",
|
|
24
|
-
"url": "http://localhost/story/show/555"
|
|
25
|
-
}
|
|
26
|
-
GOOD_JSON
|
|
27
|
-
allow(PGit::Story).to receive(:`).with(get_request).and_return(fake_good_json)
|
|
28
|
-
|
|
29
|
-
story = PGit::Story.get(story_id, current_project)
|
|
30
|
-
|
|
31
|
-
expect(story.name).to eq "Bring me the passengers"
|
|
32
|
-
expect(story.description).to eq "ignore the droids"
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|