i0n_rails3_generators 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.
Files changed (25) hide show
  1. data/LICENSE +20 -0
  2. data/README.rdoc +17 -0
  3. data/Rakefile +71 -0
  4. data/config/version.yml +4 -0
  5. data/lib/generators/authlogic/authlogic.rb +11 -0
  6. data/lib/generators/authlogic/complete/complete_generator.rb +75 -0
  7. data/lib/generators/authlogic/complete/templates/_application_controller.rb +50 -0
  8. data/lib/generators/authlogic/complete/templates/_populate.rake +16 -0
  9. data/lib/generators/authlogic/complete/templates/_routes.rb +8 -0
  10. data/lib/generators/authlogic/complete/templates/_test_helper_fixture_settings.rb +3 -0
  11. data/lib/generators/authlogic/complete/templates/_test_helper_require.rb +2 -0
  12. data/lib/generators/authlogic/complete/templates/_test_helper_setup.rb +4 -0
  13. data/lib/generators/authlogic/complete/templates/migration_create_users.rb +28 -0
  14. data/lib/generators/authlogic/complete/templates/user.rb +11 -0
  15. data/lib/generators/authlogic/complete/templates/user_session.rb +9 -0
  16. data/lib/generators/authlogic/complete/templates/user_sessions_controller.rb +26 -0
  17. data/lib/generators/authlogic/complete/templates/user_sessions_controller_test.rb +21 -0
  18. data/lib/generators/authlogic/complete/templates/user_test.rb +8 -0
  19. data/lib/generators/authlogic/complete/templates/users.yml +8 -0
  20. data/lib/generators/authlogic/complete/templates/users_controller.rb +38 -0
  21. data/lib/generators/authlogic/complete/templates/users_controller_test.rb +34 -0
  22. data/lib/i0n_rails3_generators.rb +70 -0
  23. data/test/i0n_rails3_generators/test_base.rb +20 -0
  24. data/test/test_i0n_rails3_generators.rb +110 -0
  25. metadata +115 -0
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2010 Ian Alexander Wood (i0n)
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,17 @@
1
+ =i0n_rails3_generators
2
+
3
+ ==Description:
4
+ Custom Rails 3 generators.
5
+
6
+ ==Current Generators:
7
+ * authlogic:complete
8
+
9
+ ==Note on Patches/Pull Requests
10
+
11
+ * Fork the project.
12
+ * Make your feature addition or bug fix.
13
+ * Add tests for it. This is important so I don't break it in a
14
+ future version unintentionally.
15
+ * Commit, do not mess with rakefile, version, or history.
16
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
17
+ * Send me a pull request. Bonus points for topic branches.
data/Rakefile ADDED
@@ -0,0 +1,71 @@
1
+ $:.unshift File.expand_path("../lib", __FILE__)
2
+
3
+ require 'rubygems'
4
+ require 'rake'
5
+ require 'i0n_rails3_generators'
6
+
7
+ # Runs all tests
8
+ require 'rake/testtask'
9
+ Rake::TestTask.new(:test) do |test|
10
+ test.libs << 'lib' << 'test'
11
+ test.pattern = 'test/**/test_*.rb'
12
+ test.verbose = true
13
+ end
14
+
15
+ namespace :deploy do
16
+
17
+ desc "Commits changes to local git repo and then pushes to remote"
18
+ task :git do
19
+ git_actions
20
+ end
21
+
22
+ desc "Builds gemspec and deploys gem to RubyGems.org"
23
+ task :gem do
24
+ rubygems_actions
25
+ end
26
+
27
+ end
28
+
29
+ namespace :bump do
30
+
31
+ desc "Bumps major version number by 1"
32
+ task :major do
33
+ I0nRails3Generators.bump_version_major
34
+ git_actions
35
+ rubygems_actions
36
+ end
37
+
38
+ desc "Bumps minor version number by 1"
39
+ task :minor do
40
+ I0nRails3Generators.bump_version_minor
41
+ git_actions
42
+ rubygems_actions
43
+ end
44
+
45
+ desc "Bumps patch version number by 1"
46
+ task :patch do
47
+ I0nRails3Generators.bump_version_patch
48
+ git_actions
49
+ rubygems_actions
50
+ end
51
+
52
+ end
53
+
54
+ task :version do
55
+ puts "\nI0nRails3Generators Version: #{I0nRails3Generators::VERSION}"
56
+ end
57
+
58
+ def git_actions
59
+ Dir.chdir("#{I0nRails3Generators::ROOT_PATH}")
60
+ system "git add ."
61
+ system "git commit -v -a -m 'commit for version: #{I0nRails3Generators.version}'"
62
+ system "git tag #{I0nRails3Generators.version}"
63
+ system "git push"
64
+ system "git push --tags"
65
+ end
66
+
67
+ def rubygems_actions
68
+ Dir.chdir("#{I0nRails3Generators::ROOT_PATH}")
69
+ system "gem build i0n_rails3_generators.gemspec"
70
+ system "gem push i0n_rails3_generators-#{I0nRails3Generators.version}.gem"
71
+ end
@@ -0,0 +1,4 @@
1
+ ---
2
+ :version_major: 0
3
+ :version_minor: 2
4
+ :version_patch: 0
@@ -0,0 +1,11 @@
1
+ require 'rails/generators/named_base'
2
+
3
+ module Authlogic
4
+ module Generators
5
+ class Base < Rails::Generators::NamedBase
6
+ # def self.source_root
7
+ # @_authlogic_source_root ||= File.expand_path(File.join(File.dirname(__FILE__), 'authlogic', generator_name, 'templates'))
8
+ # end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,75 @@
1
+ module Authlogic
2
+ module Generators
3
+ class CompleteGenerator < Rails::Generators::Base
4
+ require 'rails/generators'
5
+ require 'rails/generators/migration'
6
+ include Rails::Generators::Migration
7
+
8
+ desc "Creates a complete authlogic based authentication system, using user and user_session as defaults"
9
+
10
+ source_root File.expand_path('../templates', __FILE__)
11
+
12
+ def create_models
13
+ copy_file "user.rb", "#{Rails.root}/app/models/user.rb"
14
+ copy_file "user_session.rb", "#{Rails.root}/app/models/user_session.rb"
15
+ end
16
+
17
+ def create_controllers
18
+ copy_file "users_controller.rb", "#{Rails.root}/app/controllers/users_controller.rb"
19
+ copy_file "user_sessions_controller.rb", "#{Rails.root}/app/controllers/user_sessions_controller.rb"
20
+ end
21
+
22
+ def add_application_controller_helper_methods
23
+ inject_into_file "#{Rails.root}/app/controllers/application_controller.rb", IO.read("#{CompleteGenerator.source_root}/_application_controller.rb"), :after => "protect_from_forgery"
24
+ end
25
+
26
+ def create_views
27
+
28
+ end
29
+
30
+ def add_default_users_to_populate_rake_task
31
+ inject_into_file "#{Rails.root}/lib/tasks/populate.rake", IO.read("#{CompleteGenerator.source_root}/_populate.rake"), :after => "require 'faker'"
32
+ end
33
+
34
+ def add_routes
35
+ inject_into_file "#{Rails.root}/config/routes.rb", IO.read("#{CompleteGenerator.source_root}/_routes.rb"), :after => "::Application.routes.draw do"
36
+ end
37
+
38
+ def setup_test_helper
39
+ inject_into_file "#{Rails.root}/test/test_helper.rb", IO.read("#{CompleteGenerator.source_root}/_test_helper_require.rb"), :after => "require 'rails/test_help'"
40
+ inject_into_class "#{Rails.root}/test/test_helper.rb", ActiveSupport::TestCase do
41
+ IO.read(File.expand_path('../', __FILE__) + "/templates/_test_helper_fixture_settings.rb")
42
+ end
43
+ append_file "#{Rails.root}/test/test_helper.rb" do
44
+ IO.read("#{CompleteGenerator.source_root}/_test_helper_setup.rb")
45
+ end
46
+ end
47
+
48
+ def create__unit_tests
49
+ copy_file "user_test.rb", "#{Rails.root}/test/unit/user_test.rb"
50
+ end
51
+
52
+ def create_functional_tests
53
+ copy_file "users_controller_test.rb", "#{Rails.root}/test/functional/users_controller_test.rb"
54
+ copy_file "user_sessions_controller_test.rb", "#{Rails.root}/test/functional/user_sessions_controller_test.rb"
55
+ end
56
+
57
+ def create_user_fixtures
58
+ copy_file "users.yml", "#{Rails.root}/test/fixtures/users.yml"
59
+ end
60
+
61
+ def self.next_migration_number(dirname)
62
+ if ActiveRecord::Base.timestamped_migrations
63
+ Time.now.utc.strftime("%Y%m%d%H%M%S")
64
+ else
65
+ "%.3d" % (current_migration_number(dirname) + 1)
66
+ end
67
+ end
68
+
69
+ def create_database_migration
70
+ migration_template "migration_create_users.rb", "db/migrate/create_users.rb"
71
+ end
72
+
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,50 @@
1
+
2
+ helper :all
3
+ helper_method :current_user_session, :current_user
4
+
5
+ private
6
+
7
+ def current_user_session
8
+ return @current_user_session if defined?(@current_user_session)
9
+ @current_user_session = UserSession.find
10
+ end
11
+
12
+ def current_user
13
+ return @current_user if defined?(@current_user)
14
+ @current_user = current_user_session && current_user_session.record
15
+ end
16
+
17
+ def require_user
18
+ unless current_user
19
+ store_location
20
+ flash[:notice] = 'You must be logged in to access this page'
21
+ redirect_to new_user_session_url
22
+ return false
23
+ end
24
+ end
25
+
26
+ def require_no_user
27
+ if current_user
28
+ store_location
29
+ flash[:notice] = 'You must be logged out to access this page'
30
+ redirect_to account_url
31
+ return false
32
+ end
33
+ end
34
+
35
+ def require_admin
36
+ unless current_admin && ["admin"].include?(current_admin.role)
37
+ flash[:notice] = "You must be logged in to access this page"
38
+ redirect_to new_admin_login_url
39
+ return false
40
+ end
41
+ end
42
+
43
+ def store_location
44
+ session[:return_to] = request.request_uri
45
+ end
46
+
47
+ def redirect_back_or_default(default)
48
+ redirect_to(session[:return_to] || default)
49
+ session[:return_to] = nil
50
+ end
@@ -0,0 +1,16 @@
1
+ ##################### DELETE EXISTING USERS #####################
2
+ User.delete_all
3
+
4
+ ##################### CREATE DEFAULT USER #####################
5
+ User.populate 1 do |x|
6
+ x.login = "i0n"
7
+ x.email = "ianalexanderwood@gmail.com"
8
+ x.crypted_password = "e22d74a99750f4a13960e72782586fc2edd020a2c6215eb1f98ede635c1e5173a25a53b3f461ade87f3a13fa1f3fdb20f1dcdd4e8cdd74c0d29abfd5f8a66c79"
9
+ x.password_salt = "3kH2EVijgrXNODNyLtLZ"
10
+ x.single_access_token = "be9e887123d2f1ef7d7370ed26fd823c031ca6c5da1ddf3cade69bb29e285cbca799517a44672fd62fe9354f782e3d5dc641376270d36f59ca9600d95437e630"
11
+ x.perishable_token = "s7bD7z9B8DqVcX4hwa2P"
12
+ x.persistence_token = 'be9e887123d2f1ef7d7370ed26fd823c031ca6c5da1ddf3cade69bb29e285cbca799517a44672fd62fe9354f782e3d5dc641376270d36f59ca9600d95437e630'
13
+ x.role = "admin"
14
+ x.login_count = 0
15
+ x.failed_login_count = 0
16
+ end
@@ -0,0 +1,8 @@
1
+
2
+ match '/logout' => 'user_sessions#destroy'
3
+ match '/signup' => 'users#new'
4
+ match '/register' => 'users#new'
5
+ scope(:path_names => { :new => "" }) do
6
+ resource :login, :controller => 'user_sessions', :only => [:new, :create, :destroy], :as => 'user_session'
7
+ end
8
+ resource :account, :controller => 'users'
@@ -0,0 +1,3 @@
1
+
2
+ self.use_transactional_fixtures = true
3
+ self.use_instantiated_fixtures = false
@@ -0,0 +1,2 @@
1
+
2
+ require 'authlogic/test_case'
@@ -0,0 +1,4 @@
1
+
2
+ class ActionController::TestCase
3
+ setup :activate_authlogic
4
+ end
@@ -0,0 +1,28 @@
1
+ class CreateUsers < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :users do |t|
4
+ t.string :login, :null => false # optional, you can use email instead, or both
5
+ t.string :email, :null => false # optional, you can use login instead, or both
6
+ t.string :crypted_password, :null => false # optional, see below
7
+ t.string :password_salt, :null => false # optional, but highly recommended
8
+ t.string :persistence_token, :null => false # required
9
+ t.string :single_access_token, :null => false # optional, see Authlogic::Session::Params
10
+ t.string :perishable_token, :null => false # optional, see Authlogic::Session::Perishability
11
+ t.string :role, :null => false, :default => 'user'
12
+
13
+ # Magic columns, just like ActiveRecord's created_at and updated_at. These are automatically maintained by Authlogic if they are present.
14
+ t.integer :login_count, :null => false, :default => 0 # optional, see Authlogic::Session::MagicColumns
15
+ t.integer :failed_login_count, :null => false, :default => 0 # optional, see Authlogic::Session::MagicColumns
16
+ t.datetime :last_request_at # optional, see Authlogic::Session::MagicColumns
17
+ t.datetime :current_login_at # optional, see Authlogic::Session::MagicColumns
18
+ t.datetime :last_login_at # optional, see Authlogic::Session::MagicColumns
19
+ t.string :current_login_ip # optional, see Authlogic::Session::MagicColumns
20
+ t.string :last_login_ip # optional, see Authlogic::Session::MagicColumns
21
+ t.timestamps
22
+ end
23
+ end
24
+
25
+ def self.down
26
+ drop_table :users
27
+ end
28
+ end
@@ -0,0 +1,11 @@
1
+ class User < ActiveRecord::Base
2
+
3
+ acts_as_authentic do |c|
4
+ c.session_ids = [nil,:admin]
5
+ end
6
+
7
+ def self.find_by_username_or_email(login)
8
+ find_by_login(login) || find_by_email(login)
9
+ end
10
+
11
+ end
@@ -0,0 +1,9 @@
1
+ class UserSession < Authlogic::Session::Base
2
+
3
+ def to_key
4
+ new_record? ? nil : [ self.send(self.class.primary_key) ]
5
+ end
6
+
7
+ find_by_login_method :find_by_username_or_email
8
+
9
+ end
@@ -0,0 +1,26 @@
1
+ class UserSessionsController < ApplicationController
2
+
3
+ before_filter :require_no_user, :only => [:new, :create]
4
+ before_filter :require_user, :only => :destroy
5
+
6
+ def new
7
+ @user_session = UserSession.new
8
+ end
9
+
10
+ def create
11
+ @user_session = UserSession.new(params[:user_session])
12
+ if @user_session.save
13
+ flash[:notice] = "Login successful!"
14
+ redirect_back_or_default account_path
15
+ else
16
+ render :new
17
+ end
18
+ end
19
+
20
+ def destroy
21
+ current_user_session.destroy
22
+ flash[:notice] = "Logout successful!"
23
+ redirect_back_or_default new_user_session_path
24
+ end
25
+
26
+ end
@@ -0,0 +1,21 @@
1
+ require 'test_helper'
2
+
3
+ class UserSessionsControllerTest < ActionController::TestCase
4
+ test "should get new" do
5
+ get :new
6
+ assert_response :success
7
+ end
8
+
9
+ test "should create user session" do
10
+ post :create, :user_session => { :login => "luke", :password => "the_force" }
11
+ assert user_session = UserSession.find
12
+ assert_equal users(:luke), user_session.user
13
+ assert_redirected_to account_path
14
+ end
15
+
16
+ test "should destroy user session" do
17
+ delete :destroy
18
+ assert_nil UserSession.find
19
+ assert_redirected_to new_user_session_path
20
+ end
21
+ end
@@ -0,0 +1,8 @@
1
+ require 'test_helper'
2
+
3
+ class UserTest < ActiveSupport::TestCase
4
+ # Replace this with your real tests.
5
+ test "the truth" do
6
+ assert true
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ luke:
2
+ login: luke
3
+ email: valid_email@email.co.uk
4
+ password_salt: <%= salt = Authlogic::Random.hex_token %>
5
+ crypted_password: <%= Authlogic::CryptoProviders::Sha512.encrypt("the_force" + salt) %>
6
+ persistence_token: 6cde0674657a8a313ce952df979de2830309aa4c11ca65805dd00bfdc65dbcc2f5e36718660a1d2e68c1a08c276d996763985d2f06fd3d076eb7bc4d97b1e317
7
+ single_access_token: U4b7i7Tt8SSG6FRhqj
8
+ perishable_token: 232CpZECf5kEgjtI10
@@ -0,0 +1,38 @@
1
+ class UsersController < ApplicationController
2
+
3
+ before_filter :require_no_user, :only => [:new, :create]
4
+ before_filter :require_user, :only => [:show, :edit, :update]
5
+
6
+ def new
7
+ @user = User.new
8
+ end
9
+
10
+ def create
11
+ @user = User.new(params[:user])
12
+ if @user.save
13
+ flash[:notice] = "Account registered!"
14
+ redirect_back_or_default account_path
15
+ else
16
+ render :action => :new
17
+ end
18
+ end
19
+
20
+ def show
21
+ @user = current_user
22
+ end
23
+
24
+ def edit
25
+ @user = current_user
26
+ end
27
+
28
+ def update
29
+ @user = @current_user # makes our views "cleaner" and more consistent
30
+ if @user.update_attributes(params[:user])
31
+ flash[:notice] = "Account updated!"
32
+ redirect_to account_path
33
+ else
34
+ render :action => :edit
35
+ end
36
+ end
37
+
38
+ end
@@ -0,0 +1,34 @@
1
+ require 'test_helper'
2
+
3
+ class UsersControllerTest < ActionController::TestCase
4
+ test "should get new" do
5
+ get :new
6
+ assert_response :success
7
+ end
8
+
9
+ test "should create user" do
10
+ assert_difference('User.count') do
11
+ post :create, :user => { :login => "jabba", :email => "jabba@tatooine.org", :password => "the_hutt", :password_confirmation => "the_hutt" }
12
+ end
13
+
14
+ assert_redirected_to account_path
15
+ end
16
+
17
+ test "should show user" do
18
+ UserSession.create(users(:luke))
19
+ get :show
20
+ assert_response :success
21
+ end
22
+
23
+ test "should get edit" do
24
+ UserSession.create(users(:luke))
25
+ get :edit, :id => users(:luke).id
26
+ assert_response :success
27
+ end
28
+
29
+ test "should update user" do
30
+ UserSession.create(users(:luke))
31
+ put :update, :id => users(:luke).id, :user => { }
32
+ assert_redirected_to account_path
33
+ end
34
+ end
@@ -0,0 +1,70 @@
1
+ require 'rubygems'
2
+ require 'fileutils'
3
+ require 'yaml'
4
+
5
+ module I0nRails3Generators
6
+
7
+ ROOT_PATH = File.expand_path(File.join(File.dirname(__FILE__), '..'))
8
+ LIB_PATH = File.expand_path(File.dirname(__FILE__))
9
+ CONFIG_PATH = File.expand_path(File.join(File.dirname(__FILE__), '../config'))
10
+ IGNORE_DIRS = ['.','..']
11
+ LAUNCH_PATH = FileUtils.pwd
12
+
13
+ @version_yaml = YAML.load_file("#{I0nRails3Generators::CONFIG_PATH}/version.yml")
14
+
15
+ @version_major = @version_yaml[:version_major]
16
+ @version_minor = @version_yaml[:version_minor]
17
+ @version_patch = @version_yaml[:version_patch]
18
+
19
+ class << self
20
+
21
+ attr_accessor :version_major, :version_minor, :version_patch
22
+
23
+ # Method for writing to config/jumpstart_version.yml
24
+ def dump_version_yaml
25
+ File.open( "#{I0nRails3Generators::CONFIG_PATH}/version.yml", 'w' ) do |out|
26
+ YAML.dump( {:version_major => @version_major, :version_minor => @version_minor, :version_patch => @version_patch}, out )
27
+ end
28
+ end
29
+
30
+ # Looks up the current version of JumpStart
31
+ def version
32
+ "#{version_major}.#{version_minor}.#{version_patch}"
33
+ end
34
+
35
+ # Method for bumping version number types.
36
+ # Resets @version_minor and @version_patch to 0 if bumping @version_major.
37
+ # Resets @version_pacth to 0 if bumping @version_minor
38
+ def bump(version_type)
39
+ value = instance_variable_get("@#{version_type}")
40
+ instance_variable_set("@#{version_type}", (value + 1))
41
+ if version_type == "version_major"
42
+ @version_minor, @version_patch = 0, 0
43
+ elsif version_type == "version_minor"
44
+ @version_patch = 0
45
+ end
46
+ dump_version_yaml
47
+ end
48
+
49
+ # Handles calls to JumpStart::Setup.bump_version_major, JumpStart::Setup.bump_version_minor and JumpStart::Setup.bump_version_patch class methods.
50
+ def method_missing(method, *args)
51
+ if method.to_s.match(/^bump_version_(major|minor|patch)$/)
52
+ version_type = method.to_s.sub('bump_', '')
53
+ self.send(:bump, "#{version_type}")
54
+ else
55
+ super
56
+ end
57
+ end
58
+
59
+ # Handles calls to missing constants in the JumpStart module. Calls JumpStart.version if JumpStart::VERSION is recognised.
60
+ def const_missing(name)
61
+ if name.to_s =~ /^VERSION$/
62
+ version
63
+ else
64
+ super
65
+ end
66
+ end
67
+
68
+ end
69
+
70
+ end
@@ -0,0 +1,20 @@
1
+ require 'helper'
2
+
3
+ class TestJumpstartBase < Test::Unit::TestCase
4
+
5
+ context "Testing I0n_rails3_generators::Base\n" do
6
+
7
+ setup do
8
+
9
+ end
10
+
11
+ teardown do
12
+
13
+ end
14
+
15
+ context "Tests for the I0n_rails3_generators::Base#intialize instance method. \n" do
16
+
17
+ end
18
+
19
+ end
20
+ end
@@ -0,0 +1,110 @@
1
+ require 'helper'
2
+
3
+ class TestI0n_rails3_generators < Test::Unit::TestCase
4
+
5
+ should "be able to find version.yml" do
6
+ assert(File.exists?("#{I0n_rails3_generators::CONFIG_PATH}/version.yml"))
7
+ end
8
+
9
+ context "Test for I0n_rails3_generators.version class instance method" do
10
+ should "return 1.1.1" do
11
+ I0n_rails3_generators.version_major = 1
12
+ I0n_rails3_generators.version_minor = 1
13
+ I0n_rails3_generators.version_patch = 1
14
+ assert_equal "1.1.1", I0n_rails3_generators.version
15
+ end
16
+ end
17
+
18
+ context "Tests for the I0n_rails3_generators#dump_version_yaml class method." do
19
+ should "call File.open and Yaml.dump for version.yml" do
20
+ YAML.stubs(:dump)
21
+ File.stubs(:open)
22
+ File.expects(:open).once
23
+ I0n_rails3_generators.dump_version_yaml
24
+ end
25
+ end
26
+
27
+ context "Tests for the I0n_rails3_generators#bump class method." do
28
+
29
+ setup do
30
+ I0n_rails3_generators.stubs(:dump_version_yaml)
31
+ end
32
+
33
+ should "add 1 to @version_major class instance variable, set @version_minor and @version_patch to 0 and call dump_I0n_rails3_generators_version_yaml" do
34
+ I0n_rails3_generators.module_eval {@version_major = 1; @version_minor = 1; @version_patch = 1 }
35
+ I0n_rails3_generators.expects(:dump_I0n_rails3_generators_version_yaml).once
36
+ I0n_rails3_generators.bump("version_major")
37
+ assert_equal 2, I0n_rails3_generators.version_major
38
+ assert_equal 0, I0n_rails3_generators.version_minor
39
+ assert_equal 0, I0n_rails3_generators.version_patch
40
+ end
41
+
42
+ should "add 1 to @version_minor class instance variable, set @version_patch to 0 and call dump_I0n_rails3_generators_version_yaml" do
43
+ I0n_rails3_generators.module_eval {@version_major = 1; @version_minor = 1; @version_patch = 1 }
44
+ I0n_rails3_generators.expects(:dump_I0n_rails3_generators_version_yaml).once
45
+ I0n_rails3_generators.bump("version_minor")
46
+ assert_equal 1, I0n_rails3_generators.version_major
47
+ assert_equal 2, I0n_rails3_generators.version_minor
48
+ assert_equal 0, I0n_rails3_generators.version_patch
49
+
50
+ end
51
+
52
+ should "add 1 to @version_patch class instance variable and call dump_I0n_rails3_generators_version_yaml" do
53
+ I0n_rails3_generators.module_eval {@version_major = 1; @version_minor = 1; @version_patch = 1 }
54
+ I0n_rails3_generators.expects(:dump_I0n_rails3_generators_version_yaml).once
55
+ I0n_rails3_generators.bump("version_patch")
56
+ assert_equal 1, I0n_rails3_generators.version_major
57
+ assert_equal 1, I0n_rails3_generators.version_minor
58
+ assert_equal 2, I0n_rails3_generators.version_patch
59
+
60
+ end
61
+
62
+ end
63
+
64
+ context "Tests for the I0n_rails3_generators#const_missing class method." do
65
+
66
+ setup do
67
+ I0n_rails3_generators.stubs(:version)
68
+ end
69
+
70
+ should "return the value of I0n_rails3_generators Version if I0n_rails3_generators::VERSION is called" do
71
+ I0n_rails3_generators.expects(:version).once
72
+ I0n_rails3_generators::VERSION
73
+ end
74
+
75
+ should "return to super if an unknown constant is called" do
76
+ assert_raises(NameError) {I0n_rails3_generators::VERSIONS}
77
+ assert_raises(NameError) {I0n_rails3_generators::AVERSION}
78
+ end
79
+
80
+ end
81
+
82
+ context "Tests for the I0n_rails3_generators#method_missing class method." do
83
+
84
+ setup do
85
+ I0n_rails3_generators.stubs(:bump).returns(:result)
86
+ I0n_rails3_generators.stubs(:dump_version_yaml)
87
+ end
88
+
89
+ should "recognise I0n_rails3_generators#bump_version_major class instance method calls and forward them to I0n_rails3_generators#bump to set @version_major." do
90
+ I0n_rails3_generators.expects(:bump).with("version_major").once
91
+ I0n_rails3_generators.bump_version_major
92
+ end
93
+
94
+ should "recognise I0n_rails3_generators#bump_version_minor class instance method calls and forward them to I0n_rails3_generators#bump to set @version_minor." do
95
+ I0n_rails3_generators.expects(:bump).with("version_minor").once
96
+ I0n_rails3_generators.bump_version_minor
97
+ end
98
+
99
+ should "recognise I0n_rails3_generators#bump_version_patch class instance method calls and forward them to I0n_rails3_generators#bump to set @version_patch." do
100
+ I0n_rails3_generators.expects(:bump).with("version_patch").once
101
+ I0n_rails3_generators.bump_version_patch
102
+ end
103
+
104
+ should "return method_missing to super as normal if method name is not recognised." do
105
+ assert_raises(NoMethodError) {I0n_rails3_generators.bump_version_blarg}
106
+ end
107
+
108
+ end
109
+
110
+ end
metadata ADDED
@@ -0,0 +1,115 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: i0n_rails3_generators
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 2
8
+ - 0
9
+ version: 0.2.0
10
+ platform: ruby
11
+ authors:
12
+ - Ian Alexander Wood (i0n)
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-09-07 00:00:00 +01:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: shoulda
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ version: "0"
31
+ type: :development
32
+ version_requirements: *id001
33
+ - !ruby/object:Gem::Dependency
34
+ name: mocha
35
+ prerelease: false
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
43
+ version: "0"
44
+ type: :development
45
+ version_requirements: *id002
46
+ description: ""
47
+ email:
48
+ - ianalexanderwood@gmail.com
49
+ executables: []
50
+
51
+ extensions: []
52
+
53
+ extra_rdoc_files: []
54
+
55
+ files:
56
+ - config/version.yml
57
+ - lib/generators/authlogic/authlogic.rb
58
+ - lib/generators/authlogic/complete/complete_generator.rb
59
+ - lib/generators/authlogic/complete/templates/_application_controller.rb
60
+ - lib/generators/authlogic/complete/templates/_populate.rake
61
+ - lib/generators/authlogic/complete/templates/_routes.rb
62
+ - lib/generators/authlogic/complete/templates/_test_helper_fixture_settings.rb
63
+ - lib/generators/authlogic/complete/templates/_test_helper_require.rb
64
+ - lib/generators/authlogic/complete/templates/_test_helper_setup.rb
65
+ - lib/generators/authlogic/complete/templates/migration_create_users.rb
66
+ - lib/generators/authlogic/complete/templates/user.rb
67
+ - lib/generators/authlogic/complete/templates/user_session.rb
68
+ - lib/generators/authlogic/complete/templates/user_sessions_controller.rb
69
+ - lib/generators/authlogic/complete/templates/user_sessions_controller_test.rb
70
+ - lib/generators/authlogic/complete/templates/user_test.rb
71
+ - lib/generators/authlogic/complete/templates/users.yml
72
+ - lib/generators/authlogic/complete/templates/users_controller.rb
73
+ - lib/generators/authlogic/complete/templates/users_controller_test.rb
74
+ - lib/i0n_rails3_generators.rb
75
+ - test/i0n_rails3_generators/test_base.rb
76
+ - test/test_i0n_rails3_generators.rb
77
+ - LICENSE
78
+ - Rakefile
79
+ - README.rdoc
80
+ has_rdoc: true
81
+ homepage: http://github.com/i0n/i0n_rails3_generators
82
+ licenses: []
83
+
84
+ post_install_message:
85
+ rdoc_options: []
86
+
87
+ require_paths:
88
+ - lib
89
+ required_ruby_version: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ segments:
95
+ - 0
96
+ version: "0"
97
+ required_rubygems_version: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ segments:
103
+ - 1
104
+ - 3
105
+ - 7
106
+ version: 1.3.7
107
+ requirements: []
108
+
109
+ rubyforge_project:
110
+ rubygems_version: 1.3.7
111
+ signing_key:
112
+ specification_version: 3
113
+ summary: ""
114
+ test_files: []
115
+