api_controller 0.1.2 → 0.2.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.
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