artisan 0.0.1 → 0.0.2

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.
data/Gemfile CHANGED
@@ -13,4 +13,6 @@ group :development do
13
13
  gem "bundler", "~> 1.0.0"
14
14
  gem "jeweler", "~> 1.6.4"
15
15
  gem "rcov", ">= 0"
16
+ gem "rspec", "~> 2.6.0"
17
+ gem "cucumber", "~> 1.0.2"
16
18
  end
data/Gemfile.lock CHANGED
@@ -1,7 +1,17 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
+ builder (3.0.0)
4
5
  crack (0.1.8)
6
+ cucumber (1.0.2)
7
+ builder (>= 2.1.2)
8
+ diff-lcs (>= 1.1.2)
9
+ gherkin (~> 2.4.5)
10
+ json (>= 1.4.6)
11
+ term-ansicolor (>= 1.0.5)
12
+ diff-lcs (1.1.2)
13
+ gherkin (2.4.6)
14
+ json (>= 1.4.6)
5
15
  git (1.2.5)
6
16
  httparty (0.7.8)
7
17
  crack (= 0.1.8)
@@ -9,16 +19,28 @@ GEM
9
19
  bundler (~> 1.0)
10
20
  git (>= 1.2.5)
11
21
  rake
22
+ json (1.5.3)
12
23
  rake (0.9.2)
13
24
  rcov (0.9.9)
25
+ rspec (2.6.0)
26
+ rspec-core (~> 2.6.0)
27
+ rspec-expectations (~> 2.6.0)
28
+ rspec-mocks (~> 2.6.0)
29
+ rspec-core (2.6.4)
30
+ rspec-expectations (2.6.0)
31
+ diff-lcs (~> 1.1.2)
32
+ rspec-mocks (2.6.0)
14
33
  shoulda (2.11.3)
34
+ term-ansicolor (1.0.6)
15
35
 
16
36
  PLATFORMS
17
37
  ruby
18
38
 
19
39
  DEPENDENCIES
20
40
  bundler (~> 1.0.0)
41
+ cucumber (~> 1.0.2)
21
42
  httparty (~> 0.7.3)
22
43
  jeweler (~> 1.6.4)
23
44
  rcov
45
+ rspec (~> 2.6.0)
24
46
  shoulda
data/Rakefile CHANGED
@@ -15,11 +15,11 @@ require 'jeweler'
15
15
  Jeweler::Tasks.new do |gem|
16
16
  # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
17
  gem.name = "artisan"
18
- gem.homepage = "http://github.com/patrickgombert/artisan"
18
+ gem.homepage = "http://github.com/8thlight/artisan_gem"
19
19
  gem.license = "MIT"
20
20
  gem.summary = %Q{Artisan API wrapper}
21
21
  gem.description = %Q{Make calls to the Artisan API.}
22
- gem.email = "patrickgombert@gmail.com"
22
+ gem.email = "patrick@8thlight.com"
23
23
  gem.authors = ["patrickgombert"]
24
24
  gem.add_dependency "httparty", "~> 0.7.8"
25
25
  gem.add_development_dependency "thoughtbot-shoulda", ">=0"
@@ -27,25 +27,16 @@ Jeweler::Tasks.new do |gem|
27
27
  end
28
28
  Jeweler::RubygemsDotOrgTasks.new
29
29
 
30
- require 'rake/testtask'
31
- Rake::TestTask.new(:test) do |test|
32
- test.libs << 'lib' << 'test'
33
- test.pattern = 'test/**/test_*.rb'
30
+ require 'rspec/core/rake_task'
31
+ RSpec::Core::RakeTask.new(:test) do |test|
32
+ test.pattern = 'spec/**/*_spec.rb'
34
33
  test.verbose = true
35
34
  end
36
35
 
37
- require 'rcov/rcovtask'
38
- Rcov::RcovTask.new do |test|
39
- test.libs << 'test'
40
- test.pattern = 'test/**/test_*.rb'
41
- test.verbose = true
42
- test.rcov_opts << '--exclude "gems/*"'
43
- end
44
-
45
36
  task :default => :test
46
37
 
47
38
  require 'rake/rdoctask'
48
- Rake::RDocTask.new do |rdoc|
39
+ Rake::RDocTask.new(:rdoc) do |rdoc|
49
40
  version = File.exist?('VERSION') ? File.read('VERSION') : ""
50
41
 
51
42
  rdoc.rdoc_dir = 'rdoc'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
data/artisan.gemspec ADDED
@@ -0,0 +1,80 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{artisan}
8
+ s.version = "0.0.2"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = [%q{patrickgombert}]
12
+ s.date = %q{2011-08-08}
13
+ s.description = %q{Make calls to the Artisan API.}
14
+ s.email = %q{patrick@8thlight.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.rdoc"
18
+ ]
19
+ s.files = [
20
+ ".document",
21
+ ".rvmrc",
22
+ "Gemfile",
23
+ "Gemfile.lock",
24
+ "LICENSE.txt",
25
+ "README.rdoc",
26
+ "Rakefile",
27
+ "VERSION",
28
+ "artisan.gemspec",
29
+ "lib/artisan.rb",
30
+ "lib/artisan/project.rb",
31
+ "lib/artisan/query.rb",
32
+ "lib/artisan/story.rb",
33
+ "spec/artisan/project_spec.rb",
34
+ "spec/artisan/story_spec.rb",
35
+ "spec/artisan/validation_spec.rb",
36
+ "spec/spec_helper.rb"
37
+ ]
38
+ s.homepage = %q{http://github.com/8thlight/artisan_gem}
39
+ s.licenses = [%q{MIT}]
40
+ s.require_paths = [%q{lib}]
41
+ s.rubygems_version = %q{1.8.6}
42
+ s.summary = %q{Artisan API wrapper}
43
+
44
+ if s.respond_to? :specification_version then
45
+ s.specification_version = 3
46
+
47
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
48
+ s.add_runtime_dependency(%q<httparty>, ["~> 0.7.3"])
49
+ s.add_development_dependency(%q<shoulda>, [">= 0"])
50
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
51
+ s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
52
+ s.add_development_dependency(%q<rcov>, [">= 0"])
53
+ s.add_development_dependency(%q<rspec>, ["~> 2.6.0"])
54
+ s.add_development_dependency(%q<cucumber>, ["~> 1.0.2"])
55
+ s.add_runtime_dependency(%q<httparty>, ["~> 0.7.8"])
56
+ s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
57
+ else
58
+ s.add_dependency(%q<httparty>, ["~> 0.7.3"])
59
+ s.add_dependency(%q<shoulda>, [">= 0"])
60
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
61
+ s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
62
+ s.add_dependency(%q<rcov>, [">= 0"])
63
+ s.add_dependency(%q<rspec>, ["~> 2.6.0"])
64
+ s.add_dependency(%q<cucumber>, ["~> 1.0.2"])
65
+ s.add_dependency(%q<httparty>, ["~> 0.7.8"])
66
+ s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
67
+ end
68
+ else
69
+ s.add_dependency(%q<httparty>, ["~> 0.7.3"])
70
+ s.add_dependency(%q<shoulda>, [">= 0"])
71
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
72
+ s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
73
+ s.add_dependency(%q<rcov>, [">= 0"])
74
+ s.add_dependency(%q<rspec>, ["~> 2.6.0"])
75
+ s.add_dependency(%q<cucumber>, ["~> 1.0.2"])
76
+ s.add_dependency(%q<httparty>, ["~> 0.7.8"])
77
+ s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
78
+ end
79
+ end
80
+
data/lib/artisan.rb CHANGED
@@ -1,16 +1,15 @@
1
- require 'artisan/story'
2
1
  require 'artisan/project'
3
2
  require 'artisan/query'
4
3
  require 'json'
5
4
 
6
5
  module Artisan
7
- def self.get_project key
8
- response = Query.get_project key
6
+ def self.get_project(key, address = 'artisan.8thlight.com')
7
+ response = Query.get_project(key, address)
9
8
  json_chunk = JSON::parse(response)
10
9
  return Project.new(json_chunk)
11
10
  end
12
11
 
13
- def self.update_estimates(key, story)
14
- response = Query.update_estimates(key, story)
12
+ def self.update_estimates(key, story, address = 'artisan.8thlight.com')
13
+ response = Query.update_estimates(key, story, address)
15
14
  end
16
15
  end
@@ -1,17 +1,19 @@
1
- class Project
1
+ module Artisan
2
+ class Project
2
3
 
3
- attr_reader :stories
4
+ attr_reader :stories
4
5
 
5
- def initialize json_chunk
6
- story_json_chunks = json_chunk.collect{|story| story["story"]}
7
- @stories = []
8
- generate_stories story_json_chunks
9
- end
6
+ def initialize json_chunk
7
+ story_json_chunks = json_chunk.collect{|story| story["story"]}
8
+ @stories = []
9
+ generate_stories story_json_chunks
10
+ end
10
11
 
11
- def generate_stories story_chunks
12
- story_chunks.each do |story|
13
- @stories << Story.new(story)
12
+ def generate_stories story_chunks
13
+ story_chunks.each do |story|
14
+ @stories << Story.new(story)
15
+ end
14
16
  end
15
- end
16
17
 
18
+ end
17
19
  end
data/lib/artisan/query.rb CHANGED
@@ -2,21 +2,25 @@ require 'httparty'
2
2
 
3
3
  module Artisan
4
4
  module Query
5
- def self.get_project key
6
- response = HTTParty.get 'http://artisan.8thlight.com/api/projects', :key => key, :accept => :json
7
- Query.raise_not_okay_exception response.code
5
+ def self.get_project(key, address = 'artisan.8thlight.com')
6
+ response = HTTParty.get 'http://' + address + '/api/projects', :headers => {'accept' => 'application/json'}, :query => {'key' => key}
7
+ Validation.validate_response response.code
8
8
  return response.body
9
9
  end
10
10
 
11
- def self.update_estimates(key, story)
12
- return HTTParty.put 'http://artisan.8thlight.com/api/projects/stories/' + story.number + '/estimates', :key => key, :accept => :json, :optimistic => story.optimistic, :realistic => story.realistic, :pessimistic => story.pessimistic
13
- Query.raise_not_okay_exception response.code
11
+ def self.update_estimates(key, story, address = 'artisan.8thlight.com')
12
+ response = HTTParty.put 'http://' + address + '/api/projects/stories/' + story.number.to_s + '/estimates', :query => {:key => key}, :headers => {'accept' => 'application/json', 'content-type' => 'application/json'}, :body => '{"Optimistic" => story.optimistic, "Realistic" => story.realistic, "Pessimistic" => story.pessimistic}'.to_json
13
+ Validation.validate_response response.code
14
14
  return response
15
15
  end
16
16
 
17
- def self.raise_not_okay_exception response_code
18
- if !response_code == 200
19
- raise 'Server response not 200'
17
+ module Validation
18
+ def self.validate_response code
19
+ if code == 401
20
+ raise 'API key not found in database'
21
+ elsif !code == 200
22
+ raise 'Something went wrong with the HTTP call!'
23
+ end
20
24
  end
21
25
  end
22
26
  end
data/lib/artisan/story.rb CHANGED
@@ -1,13 +1,15 @@
1
- class Story
1
+ module Artisan
2
+ class Story
2
3
 
3
- attr_accessor :name, :number, :optimistic, :realistic, :pessimistic
4
+ attr_accessor :name, :number, :optimistic, :realistic, :pessimistic
4
5
 
5
- def initialize json_chunk
6
- @name = json_chunk["name"]
7
- @number = json_chunk["number"]
8
- @optimistic = json_chunk["optimistic"]
9
- @realistic = json_chunk["realistic"]
10
- @pessimistic = json_chunk["pessimistic"]
11
- end
6
+ def initialize json_chunk
7
+ @name = json_chunk["name"]
8
+ @number = json_chunk["number"]
9
+ @optimistic = json_chunk["optimistic"]
10
+ @realistic = json_chunk["realistic"]
11
+ @pessimistic = json_chunk["pessimistic"]
12
+ end
12
13
 
14
+ end
13
15
  end
@@ -5,7 +5,7 @@ describe 'Project' do
5
5
  it "intializes with an api call json chunk" do
6
6
  chunk = '[{"story":{"name":"T1","number":1,"optimistic":null,"pessimistic":null,"realistic":null}},{"story":{"name":"T2","number":2,"optimistic":null,"pessimistic":null,"realistic":null}},{"story":{"name":"T3","number":3,"optimistic":null,"pessimistic":null,"realistic":null}}]'
7
7
 
8
- project = Project.new(JSON::parse(chunk))
8
+ project = Artisan::Project.new(JSON::parse(chunk))
9
9
  project.stories.size.should == 3
10
10
  end
11
11
  end
@@ -1,10 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Story do
3
+ describe Artisan::Story do
4
4
 
5
5
  it "initializes with an api call json chunk" do
6
6
  chunk = {'name' => "Test", 'number' => 1, 'optimistic' => nil, 'realistic' => nil, 'pessimistic' => nil}
7
- story = Story.new(chunk)
7
+ story = Artisan::Story.new(chunk)
8
8
  story.name.should == "Test"
9
9
  story.optimistic.should be_nil
10
10
  end
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+
3
+ describe Artisan::Query::Validation do
4
+
5
+ it 'raises an exception if the server returns a 401' do
6
+ lambda { Artisan::Query::Validation.validate_response 401 }.should raise_error
7
+ end
8
+ end
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.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-08-05 00:00:00.000000000Z
12
+ date: 2011-08-08 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: httparty
16
- requirement: &20241760 !ruby/object:Gem::Requirement
16
+ requirement: &23745060 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.7.3
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *20241760
24
+ version_requirements: *23745060
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: shoulda
27
- requirement: &20240160 !ruby/object:Gem::Requirement
27
+ requirement: &23744440 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *20240160
35
+ version_requirements: *23744440
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: bundler
38
- requirement: &20238480 !ruby/object:Gem::Requirement
38
+ requirement: &23743780 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.0.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *20238480
46
+ version_requirements: *23743780
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: jeweler
49
- requirement: &20237060 !ruby/object:Gem::Requirement
49
+ requirement: &23740660 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.6.4
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *20237060
57
+ version_requirements: *23740660
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rcov
60
- requirement: &20235240 !ruby/object:Gem::Requirement
60
+ requirement: &23740020 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,32 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *20235240
68
+ version_requirements: *23740020
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: &23739500 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ version: 2.6.0
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: *23739500
80
+ - !ruby/object:Gem::Dependency
81
+ name: cucumber
82
+ requirement: &23738960 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ~>
86
+ - !ruby/object:Gem::Version
87
+ version: 1.0.2
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: *23738960
69
91
  - !ruby/object:Gem::Dependency
70
92
  name: httparty
71
- requirement: &20058760 !ruby/object:Gem::Requirement
93
+ requirement: &23738360 !ruby/object:Gem::Requirement
72
94
  none: false
73
95
  requirements:
74
96
  - - ~>
@@ -76,10 +98,10 @@ dependencies:
76
98
  version: 0.7.8
77
99
  type: :runtime
78
100
  prerelease: false
79
- version_requirements: *20058760
101
+ version_requirements: *23738360
80
102
  - !ruby/object:Gem::Dependency
81
103
  name: thoughtbot-shoulda
82
- requirement: &20057860 !ruby/object:Gem::Requirement
104
+ requirement: &23737760 !ruby/object:Gem::Requirement
83
105
  none: false
84
106
  requirements:
85
107
  - - ! '>='
@@ -87,9 +109,9 @@ dependencies:
87
109
  version: '0'
88
110
  type: :development
89
111
  prerelease: false
90
- version_requirements: *20057860
112
+ version_requirements: *23737760
91
113
  description: Make calls to the Artisan API.
92
- email: patrickgombert@gmail.com
114
+ email: patrick@8thlight.com
93
115
  executables: []
94
116
  extensions: []
95
117
  extra_rdoc_files:
@@ -104,14 +126,16 @@ files:
104
126
  - README.rdoc
105
127
  - Rakefile
106
128
  - VERSION
129
+ - artisan.gemspec
107
130
  - lib/artisan.rb
108
131
  - lib/artisan/project.rb
109
132
  - lib/artisan/query.rb
110
133
  - lib/artisan/story.rb
111
134
  - spec/artisan/project_spec.rb
112
135
  - spec/artisan/story_spec.rb
136
+ - spec/artisan/validation_spec.rb
113
137
  - spec/spec_helper.rb
114
- homepage: http://github.com/patrickgombert/artisan
138
+ homepage: http://github.com/8thlight/artisan_gem
115
139
  licenses:
116
140
  - MIT
117
141
  post_install_message:
@@ -126,7 +150,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
126
150
  version: '0'
127
151
  segments:
128
152
  - 0
129
- hash: 590979130552460352
153
+ hash: 3034807256952506434
130
154
  required_rubygems_version: !ruby/object:Gem::Requirement
131
155
  none: false
132
156
  requirements: