api_controller 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,14 +1,9 @@
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
- # Add dependencies to develop your gem here.
7
- # Include everything needed to run rake, tests, features, etc.
8
3
  group :development do
9
- gem "shoulda", ">= 0"
10
4
  gem "bundler", "~> 1.0.0"
11
5
  gem "jeweler", "~> 1.5.2"
12
6
  gem "rcov", ">= 0"
13
7
  gem "rails", ">= 3.0.0"
8
+ gem "cucumber", ">= 0.10.0"
14
9
  end
data/Gemfile.lock CHANGED
@@ -30,14 +30,24 @@ GEM
30
30
  activesupport (3.0.3)
31
31
  arel (2.0.8)
32
32
  builder (2.1.2)
33
+ cucumber (0.10.0)
34
+ builder (>= 2.1.2)
35
+ diff-lcs (~> 1.1.2)
36
+ gherkin (~> 2.3.2)
37
+ json (~> 1.4.6)
38
+ term-ansicolor (~> 1.0.5)
39
+ diff-lcs (1.1.2)
33
40
  erubis (2.6.6)
34
41
  abstract (>= 1.0.0)
42
+ gherkin (2.3.3)
43
+ json (~> 1.4.6)
35
44
  git (1.2.5)
36
45
  i18n (0.5.0)
37
46
  jeweler (1.5.2)
38
47
  bundler (~> 1.0.0)
39
48
  git (>= 1.2.5)
40
49
  rake
50
+ json (1.4.6)
41
51
  mail (2.2.15)
42
52
  activesupport (>= 2.3.6)
43
53
  i18n (>= 0.4.0)
@@ -65,7 +75,7 @@ GEM
65
75
  thor (~> 0.14.4)
66
76
  rake (0.8.7)
67
77
  rcov (0.9.9)
68
- shoulda (2.11.3)
78
+ term-ansicolor (1.0.5)
69
79
  thor (0.14.6)
70
80
  treetop (1.4.9)
71
81
  polyglot (>= 0.3.1)
@@ -76,7 +86,7 @@ PLATFORMS
76
86
 
77
87
  DEPENDENCIES
78
88
  bundler (~> 1.0.0)
89
+ cucumber (>= 0.10.0)
79
90
  jeweler (~> 1.5.2)
80
91
  rails (>= 3.0.0)
81
92
  rcov
82
- shoulda
data/README.rdoc CHANGED
@@ -14,13 +14,15 @@ generates:
14
14
  == To do
15
15
 
16
16
  * modularize test framework usage
17
- * add proper requirements to all files so that everything works outside of a
18
- rails project (and in different versions of rails)
17
+ * add proper requirements to all files so that everything works outside of a rails project (and in different versions of rails)
19
18
  * make opinionated, robust api and test generation
20
19
  * test!
21
- * change the parameters for the command so that either the plural (people) or
22
- class name (Person) can be used.
20
+ * change the parameters for the command so that either the plural (people) or class name (Person) can be used.
23
21
  * use variable caching in generation methods (version)
22
+ * shorten generator name
23
+ * only make new routes if necessary
24
+ * default generator should be 'api' (generates test and controller); possibly add other generators (test, controller, barebones, etc.)
25
+ * properly insert routes
24
26
 
25
27
  == Contributing to api_controller
26
28
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.2.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{api_controller}
8
- s.version = "0.1.2"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Cody Frazer"]
12
- s.date = %q{2011-02-17}
12
+ s.date = %q{2011-02-18}
13
13
  s.description = %q{Genarator for controllers dedicated to custom APIs.}
14
14
  s.email = %q{cody.frazer@cph.org}
15
15
  s.extra_rdoc_files = [
@@ -25,45 +25,40 @@ Gem::Specification.new do |s|
25
25
  "Rakefile",
26
26
  "VERSION",
27
27
  "api_controller.gemspec",
28
+ "features/routes.feature",
28
29
  "lib/generators/api_controller/USAGE",
29
30
  "lib/generators/api_controller/api_controller_generator.rb",
30
31
  "lib/generators/api_controller/templates/api_controller.rb",
31
- "lib/generators/api_controller/templates/api_controller_test.rb",
32
- "test/helper.rb",
33
- "test/test_api_controller.rb"
32
+ "lib/generators/api_controller/templates/api_controller_test.rb"
34
33
  ]
35
34
  s.homepage = %q{http://github.com/crfrazer/api_controller}
36
35
  s.licenses = ["MIT"]
37
36
  s.require_paths = ["lib"]
38
37
  s.rubygems_version = %q{1.5.2}
39
38
  s.summary = %q{Genarator for controllers dedicated to custom APIs.}
40
- s.test_files = [
41
- "test/helper.rb",
42
- "test/test_api_controller.rb"
43
- ]
44
39
 
45
40
  if s.respond_to? :specification_version then
46
41
  s.specification_version = 3
47
42
 
48
43
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
49
- s.add_development_dependency(%q<shoulda>, [">= 0"])
50
44
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
51
45
  s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
52
46
  s.add_development_dependency(%q<rcov>, [">= 0"])
53
47
  s.add_development_dependency(%q<rails>, [">= 3.0.0"])
48
+ s.add_development_dependency(%q<cucumber>, [">= 0.10.0"])
54
49
  else
55
- s.add_dependency(%q<shoulda>, [">= 0"])
56
50
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
57
51
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
58
52
  s.add_dependency(%q<rcov>, [">= 0"])
59
53
  s.add_dependency(%q<rails>, [">= 3.0.0"])
54
+ s.add_dependency(%q<cucumber>, [">= 0.10.0"])
60
55
  end
61
56
  else
62
- s.add_dependency(%q<shoulda>, [">= 0"])
63
57
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
64
58
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
65
59
  s.add_dependency(%q<rcov>, [">= 0"])
66
60
  s.add_dependency(%q<rails>, [">= 3.0.0"])
61
+ s.add_dependency(%q<cucumber>, [">= 0.10.0"])
67
62
  end
68
63
  end
69
64
 
@@ -0,0 +1,29 @@
1
+ Feature: API Generator
2
+ In order to allow access to data
3
+ As a rails developer
4
+ I want to generate a controller, routes, and a test for that controller
5
+
6
+ Scenario: Generate standard API for resource
7
+ Given a new rails app
8
+ When I run "rails g scaffold person"
9
+ And I run "rails g api people"
10
+ Then I should see the following files
11
+ | app/controllers/api/v1/people_api_controller.rb |
12
+ | test/functional/api/v1/people_api_test.rb |
13
+ And I should see "resources :people" in file "config/routes.rb"
14
+
15
+ Scenario: Generate API with a different version
16
+
17
+ Scenario: Generate API with Test::Unit tests
18
+
19
+ Scenario: Generate API with cucumber tests
20
+
21
+ Scenario: Generate API with shoulda tests
22
+
23
+ Scenario: Generate blank API
24
+
25
+ Scenario: Generate API controller
26
+
27
+ Scenario: Generate API test
28
+
29
+ Scenario: Generate API routes
@@ -46,14 +46,19 @@ class ApiControllerGenerator < Rails::Generators::Base
46
46
  File.open("#{RAILS_ROOT}/config/routes.rb", "r+") do |file|
47
47
  file.each do |line|
48
48
  final << line
49
- if line =~ /[\d]+?::Application.routes.draw/
49
+ if line =~ /\w+::Application.routes.draw/
50
50
  final << <<-ROUTES
51
- namespace :api do
52
- namespace v#{version} do
53
- resources :#{model}, :controller => '#{model}_api', :only => [:index, :show, :create, :update, :destroy]
51
+
52
+ namespace :api do
53
+ namespace v#{version} do
54
+ resources :#{model}, :controller => '#{model}_api', :only => [:index, :show, :create, :update, :destroy]
55
+ end
56
+ end
57
+
54
58
  ROUTES
55
59
  end
56
60
  end
61
+ file.pos = 0
57
62
  file.puts final
58
63
  end
59
64
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: api_controller
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 1
9
8
  - 2
10
- version: 0.1.2
9
+ - 0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Cody Frazer
@@ -15,27 +15,13 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-02-17 00:00:00 -06:00
18
+ date: 2011-02-18 00:00:00 -06:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  prerelease: false
23
23
  type: :development
24
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
33
- name: shoulda
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- prerelease: false
37
- type: :development
38
- requirement: &id002 !ruby/object:Gem::Requirement
39
25
  none: false
40
26
  requirements:
41
27
  - - ~>
@@ -47,11 +33,11 @@ dependencies:
47
33
  - 0
48
34
  version: 1.0.0
49
35
  name: bundler
50
- version_requirements: *id002
36
+ version_requirements: *id001
51
37
  - !ruby/object:Gem::Dependency
52
38
  prerelease: false
53
39
  type: :development
54
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ requirement: &id002 !ruby/object:Gem::Requirement
55
41
  none: false
56
42
  requirements:
57
43
  - - ~>
@@ -63,11 +49,11 @@ dependencies:
63
49
  - 2
64
50
  version: 1.5.2
65
51
  name: jeweler
66
- version_requirements: *id003
52
+ version_requirements: *id002
67
53
  - !ruby/object:Gem::Dependency
68
54
  prerelease: false
69
55
  type: :development
70
- requirement: &id004 !ruby/object:Gem::Requirement
56
+ requirement: &id003 !ruby/object:Gem::Requirement
71
57
  none: false
72
58
  requirements:
73
59
  - - ">="
@@ -77,11 +63,11 @@ dependencies:
77
63
  - 0
78
64
  version: "0"
79
65
  name: rcov
80
- version_requirements: *id004
66
+ version_requirements: *id003
81
67
  - !ruby/object:Gem::Dependency
82
68
  prerelease: false
83
69
  type: :development
84
- requirement: &id005 !ruby/object:Gem::Requirement
70
+ requirement: &id004 !ruby/object:Gem::Requirement
85
71
  none: false
86
72
  requirements:
87
73
  - - ">="
@@ -93,6 +79,22 @@ dependencies:
93
79
  - 0
94
80
  version: 3.0.0
95
81
  name: rails
82
+ version_requirements: *id004
83
+ - !ruby/object:Gem::Dependency
84
+ prerelease: false
85
+ type: :development
86
+ requirement: &id005 !ruby/object:Gem::Requirement
87
+ none: false
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ hash: 55
92
+ segments:
93
+ - 0
94
+ - 10
95
+ - 0
96
+ version: 0.10.0
97
+ name: cucumber
96
98
  version_requirements: *id005
97
99
  description: Genarator for controllers dedicated to custom APIs.
98
100
  email: cody.frazer@cph.org
@@ -112,12 +114,11 @@ files:
112
114
  - Rakefile
113
115
  - VERSION
114
116
  - api_controller.gemspec
117
+ - features/routes.feature
115
118
  - lib/generators/api_controller/USAGE
116
119
  - lib/generators/api_controller/api_controller_generator.rb
117
120
  - lib/generators/api_controller/templates/api_controller.rb
118
121
  - lib/generators/api_controller/templates/api_controller_test.rb
119
- - test/helper.rb
120
- - test/test_api_controller.rb
121
122
  has_rdoc: true
122
123
  homepage: http://github.com/crfrazer/api_controller
123
124
  licenses:
@@ -152,6 +153,5 @@ rubygems_version: 1.5.2
152
153
  signing_key:
153
154
  specification_version: 3
154
155
  summary: Genarator for controllers dedicated to custom APIs.
155
- test_files:
156
- - test/helper.rb
157
- - test/test_api_controller.rb
156
+ test_files: []
157
+
data/test/helper.rb DELETED
@@ -1,19 +0,0 @@
1
- require 'rubygems'
2
- require 'bundler'
3
- begin
4
- Bundler.setup(:default, :development)
5
- rescue Bundler::BundlerError => e
6
- $stderr.puts e.message
7
- $stderr.puts "Run `bundle install` to install missing gems"
8
- exit e.status_code
9
- end
10
- require 'test/unit'
11
- require 'shoulda'
12
- require 'rails'
13
-
14
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
15
- $LOAD_PATH.unshift(File.dirname(__FILE__))
16
- require 'generators/api_controller/api_controller_generator.rb'
17
-
18
- class Test::Unit::TestCase
19
- end
@@ -1,7 +0,0 @@
1
- require 'helper'
2
-
3
- class TestApiController < Test::Unit::TestCase
4
- should "probably rename this file and start testing for real" do
5
- flunk "hey buddy, you should probably rename this file and start testing for real"
6
- end
7
- end