artisan 0.1.1 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +2 -8
- data/Gemfile.lock +12 -5
- data/README.rdoc +5 -0
- data/VERSION +1 -1
- data/artisan.gemspec +25 -17
- data/lib/artisan.rb +28 -0
- data/lib/artisan/base.rb +28 -0
- data/lib/artisan/iteration.rb +11 -0
- data/lib/artisan/project.rb +4 -7
- data/lib/artisan/query.rb +46 -0
- data/lib/artisan/signoff_pdf.rb +9 -0
- data/lib/artisan/story.rb +6 -12
- data/spec/artisan/artisan_spec.rb +10 -0
- data/spec/artisan/base_spec.rb +36 -0
- data/spec/artisan/iteration_spec.rb +17 -0
- data/spec/artisan/project_spec.rb +9 -4
- data/spec/artisan/query_spec.rb +12 -0
- data/spec/artisan/signoff_pdf_spec.rb +9 -0
- data/spec/artisan/story_spec.rb +9 -5
- data/spec/spec_helper.rb +3 -0
- metadata +77 -24
data/Gemfile
CHANGED
@@ -1,16 +1,10 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
|
-
# Add dependencies required to use your gem here.
|
3
|
-
# Example:
|
4
|
-
# gem "activesupport", ">= 2.3.5"
|
5
2
|
|
6
|
-
|
7
|
-
# Include everything needed to run rake, tests, features, etc.
|
8
|
-
|
9
|
-
gem "httparty", "~> 0.7.3"
|
3
|
+
gem "httparty", "~> 0.8.3"
|
10
4
|
|
11
5
|
group :development do
|
12
6
|
gem "shoulda", ">= 0"
|
13
|
-
gem "bundler", "~> 1.
|
7
|
+
gem "bundler", "~> 1.1.3"
|
14
8
|
gem "jeweler", "~> 1.6.4"
|
15
9
|
gem "rcov", ">= 0"
|
16
10
|
gem "rspec", "~> 2.6.0"
|
data/Gemfile.lock
CHANGED
@@ -2,7 +2,6 @@ GEM
|
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
4
|
builder (3.0.0)
|
5
|
-
crack (0.1.8)
|
6
5
|
cucumber (1.0.2)
|
7
6
|
builder (>= 2.1.2)
|
8
7
|
diff-lcs (>= 1.1.2)
|
@@ -12,16 +11,23 @@ GEM
|
|
12
11
|
diff-lcs (1.1.2)
|
13
12
|
gherkin (2.4.6)
|
14
13
|
json (>= 1.4.6)
|
14
|
+
gherkin (2.4.6-java)
|
15
|
+
json (>= 1.4.6)
|
15
16
|
git (1.2.5)
|
16
|
-
httparty (0.
|
17
|
-
|
17
|
+
httparty (0.8.3)
|
18
|
+
multi_json (~> 1.0)
|
19
|
+
multi_xml
|
18
20
|
jeweler (1.6.4)
|
19
21
|
bundler (~> 1.0)
|
20
22
|
git (>= 1.2.5)
|
21
23
|
rake
|
22
24
|
json (1.5.3)
|
25
|
+
json (1.5.3-java)
|
26
|
+
multi_json (1.3.2)
|
27
|
+
multi_xml (0.4.4)
|
23
28
|
rake (0.9.2)
|
24
29
|
rcov (0.9.9)
|
30
|
+
rcov (0.9.9-java)
|
25
31
|
rspec (2.6.0)
|
26
32
|
rspec-core (~> 2.6.0)
|
27
33
|
rspec-expectations (~> 2.6.0)
|
@@ -34,12 +40,13 @@ GEM
|
|
34
40
|
term-ansicolor (1.0.6)
|
35
41
|
|
36
42
|
PLATFORMS
|
43
|
+
java
|
37
44
|
ruby
|
38
45
|
|
39
46
|
DEPENDENCIES
|
40
|
-
bundler (~> 1.
|
47
|
+
bundler (~> 1.1.3)
|
41
48
|
cucumber (~> 1.0.2)
|
42
|
-
httparty (~> 0.
|
49
|
+
httparty (~> 0.8.3)
|
43
50
|
jeweler (~> 1.6.4)
|
44
51
|
rcov
|
45
52
|
rspec (~> 2.6.0)
|
data/README.rdoc
CHANGED
@@ -12,6 +12,11 @@ Communicate with artisan.8thlight.com's API. API keys are automatically issued p
|
|
12
12
|
* Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
|
13
13
|
* Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
|
14
14
|
|
15
|
+
|
16
|
+
== Building gem
|
17
|
+
|
18
|
+
Run: gem build artisan.gemspec
|
19
|
+
|
15
20
|
== Copyright
|
16
21
|
|
17
22
|
Copyright (c) 2011 Patrick Gombert. See LICENSE.txt for
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
data/artisan.gemspec
CHANGED
@@ -4,14 +4,14 @@
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
|
-
s.name =
|
8
|
-
s.version = "0.
|
7
|
+
s.name = "artisan"
|
8
|
+
s.version = "0.4.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = [
|
12
|
-
s.date =
|
13
|
-
s.description =
|
14
|
-
s.email =
|
11
|
+
s.authors = ["patrickgombert"]
|
12
|
+
s.date = "2012-06-01"
|
13
|
+
s.description = "Make calls to the Artisan API."
|
14
|
+
s.email = "patrick@8thlight.com"
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE.txt",
|
17
17
|
"README.rdoc"
|
@@ -27,27 +27,35 @@ Gem::Specification.new do |s|
|
|
27
27
|
"VERSION",
|
28
28
|
"artisan.gemspec",
|
29
29
|
"lib/artisan.rb",
|
30
|
+
"lib/artisan/base.rb",
|
31
|
+
"lib/artisan/iteration.rb",
|
30
32
|
"lib/artisan/project.rb",
|
31
33
|
"lib/artisan/query.rb",
|
34
|
+
"lib/artisan/signoff_pdf.rb",
|
32
35
|
"lib/artisan/story.rb",
|
36
|
+
"spec/artisan/artisan_spec.rb",
|
37
|
+
"spec/artisan/base_spec.rb",
|
38
|
+
"spec/artisan/iteration_spec.rb",
|
33
39
|
"spec/artisan/project_spec.rb",
|
40
|
+
"spec/artisan/query_spec.rb",
|
41
|
+
"spec/artisan/signoff_pdf_spec.rb",
|
34
42
|
"spec/artisan/story_spec.rb",
|
35
43
|
"spec/artisan/validation_spec.rb",
|
36
44
|
"spec/spec_helper.rb"
|
37
45
|
]
|
38
|
-
s.homepage =
|
39
|
-
s.licenses = [
|
40
|
-
s.require_paths = [
|
41
|
-
s.rubygems_version =
|
42
|
-
s.summary =
|
46
|
+
s.homepage = "http://github.com/8thlight/artisan_gem"
|
47
|
+
s.licenses = ["MIT"]
|
48
|
+
s.require_paths = ["lib"]
|
49
|
+
s.rubygems_version = "1.8.23"
|
50
|
+
s.summary = "Artisan API wrapper"
|
43
51
|
|
44
52
|
if s.respond_to? :specification_version then
|
45
53
|
s.specification_version = 3
|
46
54
|
|
47
55
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
48
|
-
s.add_runtime_dependency(%q<httparty>, ["~> 0.
|
56
|
+
s.add_runtime_dependency(%q<httparty>, ["~> 0.8.3"])
|
49
57
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
50
|
-
s.add_development_dependency(%q<bundler>, ["~> 1.
|
58
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.1.3"])
|
51
59
|
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
|
52
60
|
s.add_development_dependency(%q<rcov>, [">= 0"])
|
53
61
|
s.add_development_dependency(%q<rspec>, ["~> 2.6.0"])
|
@@ -55,9 +63,9 @@ Gem::Specification.new do |s|
|
|
55
63
|
s.add_runtime_dependency(%q<httparty>, ["~> 0.7.8"])
|
56
64
|
s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
57
65
|
else
|
58
|
-
s.add_dependency(%q<httparty>, ["~> 0.
|
66
|
+
s.add_dependency(%q<httparty>, ["~> 0.8.3"])
|
59
67
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
60
|
-
s.add_dependency(%q<bundler>, ["~> 1.
|
68
|
+
s.add_dependency(%q<bundler>, ["~> 1.1.3"])
|
61
69
|
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
62
70
|
s.add_dependency(%q<rcov>, [">= 0"])
|
63
71
|
s.add_dependency(%q<rspec>, ["~> 2.6.0"])
|
@@ -66,9 +74,9 @@ Gem::Specification.new do |s|
|
|
66
74
|
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
67
75
|
end
|
68
76
|
else
|
69
|
-
s.add_dependency(%q<httparty>, ["~> 0.
|
77
|
+
s.add_dependency(%q<httparty>, ["~> 0.8.3"])
|
70
78
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
71
|
-
s.add_dependency(%q<bundler>, ["~> 1.
|
79
|
+
s.add_dependency(%q<bundler>, ["~> 1.1.3"])
|
72
80
|
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
73
81
|
s.add_dependency(%q<rcov>, [">= 0"])
|
74
82
|
s.add_dependency(%q<rspec>, ["~> 2.6.0"])
|
data/lib/artisan.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'artisan/project'
|
2
|
+
require 'artisan/iteration'
|
2
3
|
require 'artisan/story'
|
3
4
|
require 'artisan/query'
|
5
|
+
require 'artisan/signoff_pdf'
|
4
6
|
require 'json'
|
5
7
|
|
6
8
|
module Artisan
|
@@ -10,6 +12,22 @@ module Artisan
|
|
10
12
|
return Project.new(json_chunk)
|
11
13
|
end
|
12
14
|
|
15
|
+
def self.get_iterations(key, address = 'artisan.8thlight.com')
|
16
|
+
response = Query.get_iterations(key, address)
|
17
|
+
json_chunk = JSON::parse(response)
|
18
|
+
|
19
|
+
@iterations = []
|
20
|
+
json_chunk.collect { |iteration_chunk| @iterations << Iteration.new(iteration_chunk) }
|
21
|
+
|
22
|
+
return @iterations
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.get_signoff_pdf(key, iteration_id, address = 'artisan.8thlight.com')
|
26
|
+
response = Query.get_signoff_pdf(key, iteration_id, address)
|
27
|
+
|
28
|
+
return SignoffPdf.new :raw_pdf => response
|
29
|
+
end
|
30
|
+
|
13
31
|
def self.get_stories(key, address = 'artisan.8thlight.com')
|
14
32
|
response = Query.get_stories(key, address)
|
15
33
|
json_chunk = JSON::parse(response)
|
@@ -20,6 +38,16 @@ module Artisan
|
|
20
38
|
return @stories
|
21
39
|
end
|
22
40
|
|
41
|
+
def self.get_stories_by_iteration(key, iteration_number, address = 'artisan.8thlight.com')
|
42
|
+
response = Query.get_stories_by_iteration(key, iteration_number, address)
|
43
|
+
json_chunk = JSON::parse(response)
|
44
|
+
|
45
|
+
@stories = []
|
46
|
+
json_chunk.collect { |story_chunk| @stories << Story.new(story_chunk) }
|
47
|
+
|
48
|
+
return @stories
|
49
|
+
end
|
50
|
+
|
23
51
|
def self.get_backlog_stories(key, address = 'artisan.8thlight.com')
|
24
52
|
response = Query.get_backlog_stories(key, address)
|
25
53
|
json_chunk = JSON::parse(response)
|
data/lib/artisan/base.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
module Artisan
|
2
|
+
class Base
|
3
|
+
|
4
|
+
def self.hash_attr_accessor(*accessors)
|
5
|
+
accessors.each do |m|
|
6
|
+
define_method(m) do
|
7
|
+
@attributes[m]
|
8
|
+
end
|
9
|
+
|
10
|
+
define_method("#{m}=") do |value|
|
11
|
+
@attributes = {} if @attributes.nil?
|
12
|
+
@attributes[m] = value
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def initialize(attributes = {})
|
18
|
+
attributes.each do |key, value|
|
19
|
+
send("#{key}=", value) if respond_to?("#{key}=")
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def attributes
|
24
|
+
return @attributes.dup
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
data/lib/artisan/project.rb
CHANGED
@@ -1,12 +1,9 @@
|
|
1
|
-
|
2
|
-
class Project
|
1
|
+
require 'artisan/base'
|
3
2
|
|
4
|
-
|
3
|
+
module Artisan
|
4
|
+
class Project < Base
|
5
5
|
|
6
|
-
|
7
|
-
@name = json_chunk["project"]["name"]
|
8
|
-
@description = json_chunk["project"]["description"]
|
9
|
-
end
|
6
|
+
hash_attr_accessor :id, :name, :description
|
10
7
|
|
11
8
|
end
|
12
9
|
end
|
data/lib/artisan/query.rb
CHANGED
@@ -8,6 +8,51 @@ module Artisan
|
|
8
8
|
return response.body
|
9
9
|
end
|
10
10
|
|
11
|
+
def self.get_iterations(key, address)
|
12
|
+
response = HTTParty.get 'http://' + address + '/api/projects/iterations', :headers => {'accept' => 'application/json'}, :query => {'key' => key}
|
13
|
+
Validation.validate_response response.code
|
14
|
+
return response.body
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.get_signoff_pdf(key, iteration_id, address)
|
18
|
+
response = HTTParty.get(
|
19
|
+
'http://' + address + '/api/reports',
|
20
|
+
:headers => {
|
21
|
+
'accept' => 'application/pdf'
|
22
|
+
},
|
23
|
+
:query => {
|
24
|
+
'key' => key,
|
25
|
+
'options' => {
|
26
|
+
'iteration_id' => iteration_id,
|
27
|
+
'show_owner' => '1',
|
28
|
+
'sections' => {
|
29
|
+
'Completed' => '1',
|
30
|
+
'Features' => '1',
|
31
|
+
'Tasks' => '1',
|
32
|
+
'Untagged' => '0'
|
33
|
+
}
|
34
|
+
}
|
35
|
+
}
|
36
|
+
)
|
37
|
+
Validation.validate_response response.code
|
38
|
+
return response.body
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.get_stories_by_iteration(key, iteration_number, address)
|
42
|
+
response = HTTParty.get(
|
43
|
+
'http://' + address + '/api/projects/iterations/stories',
|
44
|
+
:headers => {
|
45
|
+
'accept' => 'application/json'
|
46
|
+
},
|
47
|
+
:query => {
|
48
|
+
'key' => key,
|
49
|
+
'iteration_number' => iteration_number
|
50
|
+
}
|
51
|
+
)
|
52
|
+
Validation.validate_response response.code
|
53
|
+
return response.body
|
54
|
+
end
|
55
|
+
|
11
56
|
def self.get_stories(key, address)
|
12
57
|
response = HTTParty.get 'http://' + address + '/api/projects/stories', :headers => {'accept' => 'application/json'}, :query => {'key' => key}
|
13
58
|
Validation.validate_response response.code
|
@@ -26,6 +71,7 @@ module Artisan
|
|
26
71
|
return response.body
|
27
72
|
end
|
28
73
|
|
74
|
+
|
29
75
|
module Validation
|
30
76
|
def self.validate_response code
|
31
77
|
if code == 401
|
data/lib/artisan/story.rb
CHANGED
@@ -1,16 +1,10 @@
|
|
1
|
-
|
2
|
-
class Story
|
3
|
-
|
4
|
-
attr_accessor :name, :number, :optimistic, :realistic, :pessimistic, :acceptance_criteria
|
1
|
+
require 'artisan/base'
|
5
2
|
|
6
|
-
|
7
|
-
|
8
|
-
@number = story_chunk["story"]["number"]
|
9
|
-
@optimistic = story_chunk["story"]["optimistic"]
|
10
|
-
@realistic = story_chunk["story"]["realistic"]
|
11
|
-
@pessimistic = story_chunk["story"]["pessimistic"]
|
12
|
-
@acceptance_criteria = story_chunk["story"]["acceptance_criteria"]
|
13
|
-
end
|
3
|
+
module Artisan
|
4
|
+
class Story < Base
|
14
5
|
|
6
|
+
hash_attr_accessor :name, :number, :optimistic, :realistic, :pessimistic,
|
7
|
+
:weighted_mean, :assigned_user_id, :assigned_user_name,
|
8
|
+
:assigned_user_email, :estimate
|
15
9
|
end
|
16
10
|
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Artisan do
|
4
|
+
let(:pdf) { "test" }
|
5
|
+
|
6
|
+
it ".get_signoff_pdf fetches a sign off pdf from Artisan" do
|
7
|
+
Artisan::Query.stub! :get_signoff_pdf => pdf
|
8
|
+
described_class.get_signoff_pdf("abc", 5, "http://nothing.com").raw_pdf.should == pdf
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'artisan/base'
|
3
|
+
|
4
|
+
describe 'Base' do
|
5
|
+
|
6
|
+
before(:each) do
|
7
|
+
class Peep < Artisan::Base
|
8
|
+
hash_attr_accessor :name, :address
|
9
|
+
end
|
10
|
+
|
11
|
+
@peep = Peep.new(name: "Nancy", address: "123 Main Street")
|
12
|
+
end
|
13
|
+
|
14
|
+
it "creates the attributes specified by hash_attr_accessor" do
|
15
|
+
@peep.name.should eq("Nancy")
|
16
|
+
@peep.address.should eq("123 Main Street")
|
17
|
+
end
|
18
|
+
|
19
|
+
it "ignores hash keys not present in hash_attr_accessor" do
|
20
|
+
instance = Peep.new(name: "John", phone: '867-5309')
|
21
|
+
instance.name.should eq("John")
|
22
|
+
lambda { instance.phone }.should raise_exception
|
23
|
+
end
|
24
|
+
|
25
|
+
it "allows access to the attributes via attributes method" do
|
26
|
+
attributes = @peep.attributes
|
27
|
+
attributes[:name].should eq("Nancy")
|
28
|
+
end
|
29
|
+
|
30
|
+
it "attributes hash is a copy (can't set values)" do
|
31
|
+
attributes = @peep.attributes
|
32
|
+
attributes[:name].should eq("Nancy")
|
33
|
+
@peep.attributes[:name] = "Bob"
|
34
|
+
attributes[:name].should eq("Nancy")
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Artisan::Iteration do
|
4
|
+
|
5
|
+
it "initializes with an api call json chunk" do
|
6
|
+
hash = {
|
7
|
+
'id' => 33,
|
8
|
+
'number' => 1,
|
9
|
+
'complete' => false
|
10
|
+
}
|
11
|
+
iteration = Artisan::Iteration.new(hash)
|
12
|
+
iteration.number.should == 1
|
13
|
+
iteration.id.should == 33
|
14
|
+
iteration.complete.should be_false
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
@@ -1,13 +1,18 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
require 'json'
|
3
2
|
|
4
3
|
describe 'Project' do
|
5
|
-
it "intializes with an api call json chunk" do
|
6
|
-
chunk = '{"project":{"description":"This is a project.", "name":"A"}}'
|
7
4
|
|
8
|
-
|
5
|
+
it "intializes with a hash" do
|
6
|
+
hash = {
|
7
|
+
'id' => 1,
|
8
|
+
'description' => 'This is a project.',
|
9
|
+
'name' => 'A'
|
10
|
+
}
|
11
|
+
|
12
|
+
@project = Artisan::Project.new(hash)
|
9
13
|
@project.name.should == "A"
|
10
14
|
@project.description.should == "This is a project."
|
15
|
+
@project.id.should == 1
|
11
16
|
end
|
12
17
|
|
13
18
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "ostruct"
|
3
|
+
|
4
|
+
describe Artisan::Query do
|
5
|
+
let(:pdf) { "test" }
|
6
|
+
|
7
|
+
it ".get_signoff_pdf fetches the raw pdf file from Artisan" do
|
8
|
+
response = OpenStruct.new :body => pdf, :code => 200
|
9
|
+
HTTParty.stub! :get => response
|
10
|
+
Artisan::Query.get_signoff_pdf("api_key", 3, "address").should == pdf
|
11
|
+
end
|
12
|
+
end
|
data/spec/artisan/story_spec.rb
CHANGED
@@ -2,12 +2,16 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Artisan::Story do
|
4
4
|
|
5
|
-
it "initializes with
|
6
|
-
|
7
|
-
|
5
|
+
it "initializes with a hash" do
|
6
|
+
hash = {
|
7
|
+
'name' => 'Test',
|
8
|
+
'number' => 1,
|
9
|
+
'weighted_mean' => nil
|
10
|
+
}
|
11
|
+
story = Artisan::Story.new(hash)
|
8
12
|
story.name.should == "Test"
|
9
|
-
story.number.should == 1
|
10
13
|
story.optimistic.should be_nil
|
11
|
-
story.
|
14
|
+
story.weighted_mean.should be_nil
|
12
15
|
end
|
16
|
+
|
13
17
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: artisan
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,22 +9,27 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-06-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httparty
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.
|
21
|
+
version: 0.8.3
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.8.3
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: shoulda
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,21 +37,31 @@ dependencies:
|
|
32
37
|
version: '0'
|
33
38
|
type: :development
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: bundler
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ~>
|
42
52
|
- !ruby/object:Gem::Version
|
43
|
-
version: 1.
|
53
|
+
version: 1.1.3
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.1.3
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: jeweler
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ~>
|
@@ -54,10 +69,15 @@ dependencies:
|
|
54
69
|
version: 1.6.4
|
55
70
|
type: :development
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 1.6.4
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
79
|
name: rcov
|
60
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
61
81
|
none: false
|
62
82
|
requirements:
|
63
83
|
- - ! '>='
|
@@ -65,10 +85,15 @@ dependencies:
|
|
65
85
|
version: '0'
|
66
86
|
type: :development
|
67
87
|
prerelease: false
|
68
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
69
94
|
- !ruby/object:Gem::Dependency
|
70
95
|
name: rspec
|
71
|
-
requirement:
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
72
97
|
none: false
|
73
98
|
requirements:
|
74
99
|
- - ~>
|
@@ -76,10 +101,15 @@ dependencies:
|
|
76
101
|
version: 2.6.0
|
77
102
|
type: :development
|
78
103
|
prerelease: false
|
79
|
-
version_requirements:
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 2.6.0
|
80
110
|
- !ruby/object:Gem::Dependency
|
81
111
|
name: cucumber
|
82
|
-
requirement:
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
83
113
|
none: false
|
84
114
|
requirements:
|
85
115
|
- - ~>
|
@@ -87,10 +117,15 @@ dependencies:
|
|
87
117
|
version: 1.0.2
|
88
118
|
type: :development
|
89
119
|
prerelease: false
|
90
|
-
version_requirements:
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ~>
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: 1.0.2
|
91
126
|
- !ruby/object:Gem::Dependency
|
92
127
|
name: httparty
|
93
|
-
requirement:
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
94
129
|
none: false
|
95
130
|
requirements:
|
96
131
|
- - ~>
|
@@ -98,10 +133,15 @@ dependencies:
|
|
98
133
|
version: 0.7.8
|
99
134
|
type: :runtime
|
100
135
|
prerelease: false
|
101
|
-
version_requirements:
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ~>
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: 0.7.8
|
102
142
|
- !ruby/object:Gem::Dependency
|
103
143
|
name: thoughtbot-shoulda
|
104
|
-
requirement:
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
105
145
|
none: false
|
106
146
|
requirements:
|
107
147
|
- - ! '>='
|
@@ -109,7 +149,12 @@ dependencies:
|
|
109
149
|
version: '0'
|
110
150
|
type: :development
|
111
151
|
prerelease: false
|
112
|
-
version_requirements:
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
113
158
|
description: Make calls to the Artisan API.
|
114
159
|
email: patrick@8thlight.com
|
115
160
|
executables: []
|
@@ -128,10 +173,18 @@ files:
|
|
128
173
|
- VERSION
|
129
174
|
- artisan.gemspec
|
130
175
|
- lib/artisan.rb
|
176
|
+
- lib/artisan/base.rb
|
177
|
+
- lib/artisan/iteration.rb
|
131
178
|
- lib/artisan/project.rb
|
132
179
|
- lib/artisan/query.rb
|
180
|
+
- lib/artisan/signoff_pdf.rb
|
133
181
|
- lib/artisan/story.rb
|
182
|
+
- spec/artisan/artisan_spec.rb
|
183
|
+
- spec/artisan/base_spec.rb
|
184
|
+
- spec/artisan/iteration_spec.rb
|
134
185
|
- spec/artisan/project_spec.rb
|
186
|
+
- spec/artisan/query_spec.rb
|
187
|
+
- spec/artisan/signoff_pdf_spec.rb
|
135
188
|
- spec/artisan/story_spec.rb
|
136
189
|
- spec/artisan/validation_spec.rb
|
137
190
|
- spec/spec_helper.rb
|
@@ -150,7 +203,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
150
203
|
version: '0'
|
151
204
|
segments:
|
152
205
|
- 0
|
153
|
-
hash: -
|
206
|
+
hash: -3838850922971901347
|
154
207
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
208
|
none: false
|
156
209
|
requirements:
|
@@ -159,7 +212,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
159
212
|
version: '0'
|
160
213
|
requirements: []
|
161
214
|
rubyforge_project:
|
162
|
-
rubygems_version: 1.8.
|
215
|
+
rubygems_version: 1.8.23
|
163
216
|
signing_key:
|
164
217
|
specification_version: 3
|
165
218
|
summary: Artisan API wrapper
|