padrino-admin 0.12.8.1 → 0.12.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 5ebf7fb90fd59004a350073ab07954f13bf921c1
4
- data.tar.gz: d18281cba70b2ce06af1f9858e73fc07d84ef71a
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ YTdlNDEzYzg0NjE3NDNkOTFhOTdlODFiY2I3Y2IwOTMwNGIyMDFhMw==
5
+ data.tar.gz: !binary |-
6
+ MDNjMzgzODk4MmIyN2ZmZTM0MTIyZjU5ZjRiNzk3OTU4ZDY1MTZlOQ==
5
7
  SHA512:
6
- metadata.gz: c0243477488dc8b201e766cca83033bdf87beca9ee4376ca3d9649059d66e4a28852191be2b01fdb3d280075b2e555292c784ee14b4eb6796189f9d16d9528ec
7
- data.tar.gz: 277c12d2da842f751549f4af8568e13a9f04b221ac074163479f1e61d85dc0e46a5602a685db539e3d90bf38fb69378b89c2b406fa06d8195b632c56c52b1ad4
8
+ metadata.gz: !binary |-
9
+ NjM4YzEwMThlNjBhNmFmNzFhNjkwZWRjY2M2ODI5OWI4NDRiZWE5NDk5MWYy
10
+ YzViMjg0YTEyM2U5YWFhZDdjMGUzZGNlMjE2M2U2NjU5NDRhY2U3MWJmOTM5
11
+ ZTBlMmQwMjlhZTZkNjczM2E4MDE1YTc3ZTA3NGZiZmNjODU0NGM=
12
+ data.tar.gz: !binary |-
13
+ YTJhZjkxZDVjMjdjNzMwODZmNjBjN2QyZmZhNmM1NTUwYmY3YmEwNmMwYzYx
14
+ NzAzYjk2MDQzNmJkMzRlZjZkZDYyOTg3Y2MxODE4ZDhlZjdjY2FkNzk4OWE5
15
+ NjdhMDE4MWE4OWVhNWQzY2RkODdjYTQ5NGUzZTI0NmZkNDU3Njg=
data/Rakefile CHANGED
@@ -1,7 +1,3 @@
1
- # coding:utf-8
2
- RAKE_ROOT = __FILE__
3
-
4
- require 'rubygems'
5
1
  require File.expand_path(File.dirname(__FILE__) + '/../gem_rake_helper')
6
2
 
7
3
  namespace :bootstrap do
data/lib/padrino-admin.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'active_support/core_ext/array/conversions'
2
1
  require 'padrino-core'
3
2
  require 'padrino-helpers'
4
3
 
@@ -1,5 +1,3 @@
1
- require 'active_support/core_ext/class/attribute_accessors'
2
-
3
1
  module Padrino
4
2
  module Admin
5
3
  class AccessControlError < StandardError
@@ -19,7 +17,15 @@ module Padrino
19
17
  app.helpers Padrino::Admin::Helpers::AuthenticationHelpers
20
18
  app.helpers Padrino::Admin::Helpers::ViewHelpers
21
19
  app.before { login_required }
22
- app.send(:cattr_accessor, :access_control)
20
+ app.class_eval do
21
+ class << self
22
+ attr_accessor :access_control
23
+ end
24
+ def access_control
25
+ self.class.access_control
26
+ end
27
+ end
28
+
23
29
  app.send(:access_control=, Padrino::Admin::AccessControl::Base.new)
24
30
  end
25
31
  alias :included :registered
@@ -49,7 +49,7 @@ module Padrino
49
49
 
50
50
  tmp_ext = options[:renderer] || fetch_component_choice(:renderer)
51
51
  unless supported_ext.include?(tmp_ext.to_sym)
52
- say "<= Your are using '#{tmp_ext}' and for admin we only support '#{supported_ext.join(', ')}'. Please use -e haml or -e erb or -e slim", :yellow
52
+ say "<= You are using '#{tmp_ext}' and for admin we only support '#{supported_ext.join(', ')}'. Please use #{supported_ext.map { |ext| '-e ' + ext }.join(' or ')}", :yellow
53
53
  raise SystemExit
54
54
  end
55
55
 
@@ -76,7 +76,8 @@ module Padrino
76
76
  template "templates/app.rb.tt", destination_root(@admin_path + "/app.rb")
77
77
  inject_into_file destination_root('config/apps.rb'), "\nPadrino.mount(\"#{@app_name}::#{@admin_name}\", :app_file => Padrino.root('#{@admin_path}/app.rb')).to(\"/#{@admin_path}\")\n", :before => /^Padrino.mount.*\.to\('\/'\)$/
78
78
  unless options[:destroy]
79
- insert_middleware 'ActiveRecord::ConnectionAdapters::ConnectionManagement', @admin_path if [:minirecord, :activerecord].include?(orm)
79
+ insert_middleware 'ConnectionPoolManagement', @admin_path if [:minirecord, :activerecord].include?(orm)
80
+ insert_middleware 'IdentityMap', @admin_path if orm == :datamapper
80
81
  end
81
82
 
82
83
  params = [
@@ -44,6 +44,11 @@ class <%= @model_name %>
44
44
  ::BCrypt::Password.new(crypted_password) == password
45
45
  end
46
46
 
47
+ def password=(password)
48
+ self.crypted_password = nil if password.present?
49
+ @password = password
50
+ end
51
+
47
52
  private
48
53
 
49
54
  def password_required
@@ -6,21 +6,22 @@
6
6
  # shell.say name
7
7
  #
8
8
  email = shell.ask "Which email do you want use for logging into admin?"
9
- password = shell.ask "Tell me the password to use:"
9
+ password = shell.ask "Tell me the password to use:", :echo => false
10
10
 
11
11
  shell.say ""
12
12
 
13
- account = <%= @model_name %>.create(:email => email, :name => "Foo", :surname => "Bar", :password => password, :password_confirmation => password, :role => "admin")
13
+ account = <%= @model_name %>.new(:email => email, :name => "Foo", :surname => "Bar", :password => password, :password_confirmation => password, :role => "admin")
14
14
 
15
15
  if account.valid?
16
+ account.save
16
17
  shell.say "================================================================="
17
18
  shell.say "<%= @model_name %> has been successfully created, now you can login with:"
18
19
  shell.say "================================================================="
19
20
  shell.say " email: #{email}"
20
- shell.say " password: #{password}"
21
+ shell.say " password: #{?* * password.length}"
21
22
  shell.say "================================================================="
22
23
  else
23
- shell.say "Sorry but some thing went wrong!"
24
+ shell.say "Sorry, but something went wrong!"
24
25
  shell.say ""
25
26
  account.errors.full_messages.each { |m| shell.say " - #{m}" }
26
27
  end
@@ -20,7 +20,7 @@
20
20
  <ul class="nav navbar-nav pull-right">
21
21
  <li class=navbar-edit-account><%%= link_to tag_icon(:user), url(:<%= @model_plural %>, :edit, :id => current_account.id), :title => pat(:profile), :class => 'navbar-nav-link' %></li>
22
22
  <li class=navbar-logout>
23
- <%%= button_to(:logout, url(:sessions, :destroy), :method => :delete, :class => 'navbar-nav-form') { content_tag :button, tag_icon(:'power-off'), :type => :submit, :title => pat(:logout), :class => 'navbar-nav-form-link' } %>
23
+ <%%= button_to(:logout, url(:sessions, :destroy), :method => :delete, :class => 'navbar-nav-form', :submit_options => { :type => :submit, :title => pat(:logout), :class => 'navbar-nav-form-link' }) { tag_icon(:'power-off') } %>
24
24
  </li>
25
25
  </ul>
26
26
 
@@ -12,7 +12,7 @@
12
12
  <%%= tag_icon :magic %> <span class=caret></span>
13
13
  </a>
14
14
  <ul class="list-menu dropdown-menu" role=menu>
15
- <li class=ist-menu-wrapper>
15
+ <li class=list-menu-wrapper>
16
16
  <%%= link_to tag_icon('check-square-o', pat(:select_all)), '#', :id => 'select-all', :class => 'list-menu-link' %>
17
17
  </li>
18
18
  <li class=list-menu-wrapper.list-menu-wrapper-disabled>
@@ -66,7 +66,7 @@
66
66
  <div class=arrow> </div>
67
67
  <h3 class=popover-title><%%= pat(:delete, :model => "<%= @orm.name_singular %>") %></h3>
68
68
  <div class=popover-content>
69
- <%%- form_tag url(:<%= @orm.name_plural %>, :destroy, :id => <%= @orm.name_singular %>.id), :method => :delete do %>
69
+ <%% form_tag url(:<%= @orm.name_plural %>, :destroy, :id => <%= @orm.name_singular %>.id), :method => :delete do %>
70
70
  <%%= submit_tag pat(:delete), :class =>'list-row-action-popover-delete-one-btn btn btn-danger btn-small' %>
71
71
  <div class="btn btn-default btn-small cancel"><%%= pat(:cancel) %></div>
72
72
  <%% end %>
@@ -20,8 +20,8 @@
20
20
  %ul.nav.navbar-nav.pull-right
21
21
  %li.navbar-edit-account=link_to tag_icon(:user), url(:accounts, :edit, :id => current_account.id), :title => pat(:profile), :class => 'navbar-nav-link'
22
22
  %li.navbar-logout
23
- =button_to :logout, url(:sessions, :destroy), :method => :delete, :class => 'navbar-nav-form' do
24
- =content_tag :button, tag_icon('power-off'), :type => :submit, :title => pat(:logout), :class => 'navbar-nav-form-link'
23
+ = button_to :logout, url(:sessions, :destroy), :method => :delete, :class => 'navbar-nav-form', :submit_options => { :type => :submit, :title => pat(:logout), :class => 'navbar-nav-form-link' } do
24
+ = tag_icon('power-off')
25
25
 
26
26
  %ul.nav.navbar-nav.pull-left
27
27
  - project_modules.each do |project_module|
@@ -85,7 +85,7 @@
85
85
  <% else %>
86
86
  if <%= @orm.multiple_destroy(@orm.name_plural) %>
87
87
  <% end %>
88
- flash[:success] = pat(:destroy_many_success, :model => '<%= @orm.name_plural.capitalize %>', :ids => "#{ids.to_sentence}")
88
+ flash[:success] = pat(:destroy_many_success, :model => '<%= @orm.name_plural.capitalize %>', :ids => "#{ids.join(', ')}")
89
89
  end
90
90
  redirect url(:<%= @orm.name_plural %>, :index)
91
91
  end
@@ -20,8 +20,9 @@ html lang='en'
20
20
 
21
21
  ul class='nav navbar-nav pull-right'
22
22
  li class='navbar-edit-account' = link_to tag_icon(:user), url(:<%= @model_plural %>, :edit, :id => current_account.id), :title => pat(:profile), :class => 'navbar-nav-link'
23
- li class='navbar-logout' = button_to(pat(:logout), url(:sessions, :destroy), :method => :delete, :class => 'navbar-nav-form') do
24
- = content_tag :button, tag_icon(:'power-off'), :type => :submit, :title => pat(:logout), :class => 'navbar-nav-form-link'
23
+ li class='navbar-logout'
24
+ = button_to pat(:logout), url(:sessions, :destroy), :method => :delete, :class => 'navbar-nav-form', :submit_options => { :type => :submit, :title => pat(:logout), :class => 'navbar-nav-form-link' } do
25
+ = tag_icon(:'power-off')
25
26
 
26
27
  ul class='nav navbar-nav pull-left'
27
28
  - project_modules.each do |project_module|
@@ -0,0 +1,89 @@
1
+ require 'digest/sha1'
2
+ require 'sequel'
3
+ require 'sequel/extensions/migration'
4
+
5
+ Sequel::Model.db =
6
+ if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
7
+ require 'jdbc/sqlite3'
8
+ Sequel.connect("jdbc:sqlite::memory:")
9
+ else
10
+ require 'sqlite3'
11
+ Sequel.sqlite(":memory:")
12
+ end
13
+
14
+ migration = Sequel.migration do
15
+ up do
16
+ create_table :accounts do
17
+ primary_key :id
18
+ String :name
19
+ String :surname
20
+ String :email
21
+ String :crypted_password
22
+ String :role
23
+ end
24
+
25
+ create_table :sections do
26
+ primary_key :id
27
+ foreign_key :account_id
28
+ String :name
29
+ end
30
+
31
+ create_table :friends do
32
+ primary_key :id
33
+ String :name
34
+ String :age
35
+ String :email
36
+ end
37
+
38
+ create_table :pages do
39
+ primary_key :id
40
+ String :name
41
+ String :body
42
+ end
43
+ end
44
+
45
+ down do
46
+ drop_table :accounts
47
+ end
48
+ end
49
+
50
+ migration.apply(Sequel::Model.db, :up)
51
+
52
+ class Friend < Sequel::Model
53
+ end
54
+
55
+ class Page < Sequel::Model
56
+ end
57
+
58
+ # Fake Section Model
59
+ class Section < Sequel::Model
60
+ many_to_one :account
61
+ end
62
+
63
+ # Fake Account Model
64
+ class Account < Sequel::Model
65
+ attr_accessor :password, :password_confirmation
66
+
67
+ one_to_many :sections
68
+
69
+ def self.admin; first(:role => "admin"); end
70
+ def self.editor; first(:role => "editor"); end
71
+
72
+ ##
73
+ # Replace ActiveRecord method.
74
+ #
75
+ def self.find_by_id(id)
76
+ self[id] rescue nil
77
+ end
78
+ end
79
+
80
+ # We build some fake accounts
81
+ admin = Account.create(:name => "DAddYE", :role => "admin", :email => "d.dagostino@lipsiasoft.com",
82
+ :password => "some", :password_confirmation => "some")
83
+ editor = Account.create(:name => "Dexter", :role => "editor", :email => "editor@lipsiasoft.com",
84
+ :password => "some", :password_confirmation => "some")
85
+
86
+ %w(News Press HowTo).each do |c|
87
+ admin.add_section(:name => c)
88
+ editor.add_section(:name => c)
89
+ end
@@ -12,7 +12,7 @@ describe "AccountModelGenerator" do
12
12
 
13
13
  describe 'activerecord' do
14
14
  before do
15
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=activerecord') }
15
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=activerecord') }
16
16
  capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
17
17
  @model = "#{@apptmp}/sample_project/models/account.rb"
18
18
  end
@@ -24,7 +24,7 @@ describe "AccountModelGenerator" do
24
24
 
25
25
  describe 'minirecord' do
26
26
  before do
27
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=minirecord') }
27
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=minirecord') }
28
28
  capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
29
29
  @model = "#{@apptmp}/sample_project/models/account.rb"
30
30
  end
@@ -36,7 +36,7 @@ describe "AccountModelGenerator" do
36
36
 
37
37
  describe 'datamapper' do
38
38
  before do
39
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=datamapper') }
39
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=datamapper') }
40
40
  capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
41
41
  @model = "#{@apptmp}/sample_project/models/account.rb"
42
42
  end
@@ -48,7 +48,7 @@ describe "AccountModelGenerator" do
48
48
 
49
49
  describe 'mongoid' do
50
50
  before do
51
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=mongoid') }
51
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=mongoid') }
52
52
  capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
53
53
  @model = "#{@apptmp}/sample_project/models/account.rb"
54
54
  end
@@ -60,7 +60,7 @@ describe "AccountModelGenerator" do
60
60
 
61
61
  describe 'mongomapper' do
62
62
  before do
63
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=mongomapper') }
63
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=mongomapper') }
64
64
  capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
65
65
  @model = "#{@apptmp}/sample_project/models/account.rb"
66
66
  end
@@ -72,7 +72,7 @@ describe "AccountModelGenerator" do
72
72
 
73
73
  describe 'ohm' do
74
74
  before do
75
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=ohm') }
75
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=ohm') }
76
76
  capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
77
77
  @model = "#{@apptmp}/sample_project/models/account.rb"
78
78
  end
@@ -84,7 +84,7 @@ describe "AccountModelGenerator" do
84
84
 
85
85
  describe 'sequel' do
86
86
  before do
87
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=sequel') }
87
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=sequel') }
88
88
  capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
89
89
  @model = "#{@apptmp}/sample_project/models/account.rb"
90
90
  end
@@ -96,7 +96,7 @@ describe "AccountModelGenerator" do
96
96
 
97
97
  describe 'couchrest' do
98
98
  before do
99
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=couchrest') }
99
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=couchrest') }
100
100
  capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
101
101
  @model = "#{@apptmp}/sample_project/models/account.rb"
102
102
  end
@@ -24,28 +24,28 @@ describe "AdminAppGenerator" do
24
24
  end
25
25
 
26
26
  it "should fail if we don't specify an orm on the project" do
27
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-e=haml') }
27
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-e=haml') }
28
28
  assert_raises(SystemExit) { @out, @err = capture_io { generate(:admin_app, "-r=#{@apptmp}/sample_project") } }
29
29
  end
30
30
 
31
31
  it "should store and apply session_secret" do
32
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=datamapper','-e=haml') }
32
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=datamapper','-e=haml') }
33
33
  assert_match_in_file(/set :session_secret, '[0-9A-z]*'/, "#{@apptmp}/sample_project/config/apps.rb")
34
34
  end
35
35
 
36
36
  it "should generate the admin app" do
37
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=activerecord') }
37
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=activerecord') }
38
38
  capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
39
- assert_file_exists("#{@apptmp}/sample_project")
40
- assert_file_exists("#{@apptmp}/sample_project/admin")
39
+ assert_dir_exists("#{@apptmp}/sample_project")
40
+ assert_dir_exists("#{@apptmp}/sample_project/admin")
41
41
  assert_file_exists("#{@apptmp}/sample_project/admin/app.rb")
42
- assert_file_exists("#{@apptmp}/sample_project/admin/controllers")
42
+ assert_dir_exists("#{@apptmp}/sample_project/admin/controllers")
43
43
  assert_file_exists("#{@apptmp}/sample_project/admin/controllers/accounts.rb")
44
44
  assert_file_exists("#{@apptmp}/sample_project/admin/controllers/base.rb")
45
45
  assert_file_exists("#{@apptmp}/sample_project/admin/controllers/sessions.rb")
46
- assert_file_exists("#{@apptmp}/sample_project/admin/views")
47
- assert_file_exists("#{@apptmp}/sample_project/public/admin")
48
- assert_file_exists("#{@apptmp}/sample_project/public/admin/stylesheets")
46
+ assert_dir_exists("#{@apptmp}/sample_project/admin/views")
47
+ assert_dir_exists("#{@apptmp}/sample_project/public/admin")
48
+ assert_dir_exists("#{@apptmp}/sample_project/public/admin/stylesheets")
49
49
  assert_file_exists("#{@apptmp}/sample_project/public/admin/stylesheets/application.css")
50
50
  assert_file_exists("#{@apptmp}/sample_project/public/admin/stylesheets/bootstrap.css")
51
51
  assert_file_exists("#{@apptmp}/sample_project/public/admin/javascripts/application.js")
@@ -60,14 +60,14 @@ describe "AdminAppGenerator" do
60
60
  end
61
61
 
62
62
  it "should generate the master app" do
63
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=activerecord') }
63
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=activerecord') }
64
64
  capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project", '--admin-name=master') }
65
65
  assert_file_exists("#{@apptmp}/sample_project/master/app.rb")
66
66
  end
67
67
 
68
68
  # users can override certain templates from a generators/templates folder in the destination_root
69
69
  it "should use custom generator templates from the project root, if they exist" do
70
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=activerecord') }
70
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=activerecord') }
71
71
  custom_template_path = "#{@apptmp}/sample_project/generators/templates/slim/app/layouts/"
72
72
  `mkdir -p #{custom_template_path} && echo "h1 = 'Hello, custom generator' " > #{custom_template_path}application.slim.tt`
73
73
  capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
@@ -81,9 +81,9 @@ describe "AdminAppGenerator" do
81
81
 
82
82
  describe "renderers" do
83
83
  it 'should correctly generate a new padrino admin application with haml renderer (default)' do
84
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=activerecord', '-e=haml') }
84
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=activerecord', '-e=haml') }
85
85
  capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
86
- assert_file_exists("#{@apptmp}/sample_project/admin/views")
86
+ assert_dir_exists("#{@apptmp}/sample_project/admin/views")
87
87
  assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/_form.haml")
88
88
  assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/edit.haml")
89
89
  assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/index.haml")
@@ -96,9 +96,9 @@ describe "AdminAppGenerator" do
96
96
  end
97
97
 
98
98
  it 'should correctly generate a new padrino admin application with erb renderer' do
99
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=activerecord', '-e=erb') }
99
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=activerecord', '-e=erb') }
100
100
  capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
101
- assert_file_exists("#{@apptmp}/sample_project/admin/views")
101
+ assert_dir_exists("#{@apptmp}/sample_project/admin/views")
102
102
  assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/_form.erb")
103
103
  assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/edit.erb")
104
104
  assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/index.erb")
@@ -111,9 +111,9 @@ describe "AdminAppGenerator" do
111
111
  end
112
112
 
113
113
  it 'should correctly generate a new padrino admin application with slim renderer' do
114
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=activerecord', '-e=slim') }
114
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=activerecord', '-e=slim') }
115
115
  capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
116
- assert_file_exists("#{@apptmp}/sample_project/admin/views")
116
+ assert_dir_exists("#{@apptmp}/sample_project/admin/views")
117
117
  assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/_form.slim")
118
118
  assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/edit.slim")
119
119
  assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/index.slim")
@@ -127,7 +127,7 @@ describe "AdminAppGenerator" do
127
127
  end
128
128
 
129
129
  it 'should correctly generate a new padrino admin application with a custom model' do
130
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=activerecord', '-e=slim') }
130
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=activerecord', '-e=slim') }
131
131
  capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project", '-m=User') }
132
132
  assert_no_match_in_file(/[^_]account/i, "#{@apptmp}/sample_project/admin/controllers/users.rb")
133
133
  assert_match_in_file(/[^_]user/i, "#{@apptmp}/sample_project/admin/controllers/users.rb")
@@ -151,16 +151,16 @@ describe "AdminAppGenerator" do
151
151
  # Remember that --root/-r in the admin_app generator refers to the project's location, not the admin's location
152
152
  # inside it. See https://github.com/padrino/padrino-framework/issues/854#issuecomment-14749356
153
153
  skip
154
- # capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=activerecord', '-e=haml') }
154
+ # capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=activerecord', '-e=haml') }
155
155
  # capture_io { generate(:admin_app,"-a=/admin", "--root=#{@apptmp}/sample_project") }
156
- # assert_file_exists("#{@apptmp}/sample_project")
157
- # assert_file_exists("#{@apptmp}/sample_project/admin")
156
+ # assert_dir_exists("#{@apptmp}/sample_project")
157
+ # assert_dir_exists("#{@apptmp}/sample_project/admin")
158
158
  # assert_file_exists("#{@apptmp}/sample_project/admin/app.rb")
159
159
  # assert_file_exists("#{@apptmp}/sample_project/admin/controllers")
160
160
  # assert_file_exists("#{@apptmp}/sample_project/admin/controllers/accounts.rb")
161
161
  # assert_file_exists("#{@apptmp}/sample_project/admin/controllers/base.rb")
162
162
  # assert_file_exists("#{@apptmp}/sample_project/admin/controllers/sessions.rb")
163
- # assert_file_exists("#{@apptmp}/sample_project/admin/views")
163
+ # assert_dir_exists("#{@apptmp}/sample_project/admin/views")
164
164
  # assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/_form.haml")
165
165
  # assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/edit.haml")
166
166
  # assert_file_exists("#{@apptmp}/sample_project/admin/views/accounts/index.haml")
@@ -170,8 +170,8 @@ describe "AdminAppGenerator" do
170
170
  # assert_file_exists("#{@apptmp}/sample_project/admin/views/base/index.haml")
171
171
  # assert_file_exists("#{@apptmp}/sample_project/admin/views/layouts/application.haml")
172
172
  # assert_file_exists("#{@apptmp}/sample_project/admin/views/sessions/new.haml")
173
- # assert_file_exists("#{@apptmp}/sample_project/public/admin")
174
- # assert_file_exists("#{@apptmp}/sample_project/public/admin/stylesheets")
173
+ # assert_dir_exists("#{@apptmp}/sample_project/public/admin")
174
+ # assert_dir_exists("#{@apptmp}/sample_project/public/admin/stylesheets")
175
175
  # assert_file_exists("#{@apptmp}/sample_project/models/account.rb")
176
176
  # assert_no_file_exists("#{@apptmp}/sample_project/models/account.rb")
177
177
  # assert_file_exists("#{@apptmp}/sample_project/db/seeds.rb")
@@ -181,26 +181,40 @@ describe "AdminAppGenerator" do
181
181
 
182
182
  describe "activerecord middleware" do
183
183
  it 'should add it for #activerecord' do
184
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=activerecord', '-e=haml') }
184
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=activerecord', '-e=haml') }
185
185
  capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
186
- assert_match_in_file(/ use ActiveRecord::ConnectionAdapters::ConnectionManagemen/m, "#{@apptmp}/sample_project/admin/app.rb")
186
+ assert_match_in_file(/ use ConnectionPoolManagement/m, "#{@apptmp}/sample_project/admin/app.rb")
187
187
  end
188
188
 
189
189
  it 'should add it #minirecord' do
190
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=minirecord', '-e=haml') }
190
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=minirecord', '-e=haml') }
191
191
  capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
192
- assert_match_in_file(/ use ActiveRecord::ConnectionAdapters::ConnectionManagemen/m, "#{@apptmp}/sample_project/admin/app.rb")
192
+ assert_match_in_file(/ use ConnectionPoolManagement/m, "#{@apptmp}/sample_project/admin/app.rb")
193
193
  end
194
194
 
195
195
  it 'should not add it for #datamapper' do
196
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=datamapper', '-e=haml') }
196
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=datamapper', '-e=haml') }
197
197
  capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
198
- assert_no_match_in_file(/ use ActiveRecord::ConnectionAdapters::ConnectionManagemen/m, "#{@apptmp}/sample_project/admin/app.rb")
198
+ assert_no_match_in_file(/ use ConnectionPoolManagement/m, "#{@apptmp}/sample_project/admin/app.rb")
199
+ end
200
+ end
201
+
202
+ describe "datamapper middleware" do
203
+ it 'should add it for #datamapper' do
204
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=datamapper', '-e=haml') }
205
+ capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
206
+ assert_match_in_file(/ use IdentityMap/m, "#{@apptmp}/sample_project/admin/app.rb")
207
+ end
208
+
209
+ it 'should not add it for #activerecord' do
210
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=activerecord', '-e=haml') }
211
+ capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
212
+ assert_no_match_in_file(/ use IdentityMap/m, "#{@apptmp}/sample_project/admin/app.rb")
199
213
  end
200
214
  end
201
215
 
202
216
  it 'should not conflict with existing seeds file' do
203
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=activerecord', '-e=erb') }
217
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=activerecord', '-e=erb') }
204
218
 
205
219
  # Add seeds file
206
220
  FileUtils.mkdir_p @apptmp + '/sample_project/db' unless File.exist?(@apptmp + '/sample_project/db')
@@ -212,7 +226,7 @@ describe "AdminAppGenerator" do
212
226
  refute_match /Overwrite\s.*?\/db\/seeds.rb/, out
213
227
 
214
228
  assert_file_exists "#{@apptmp}/sample_project/db/seeds.old"
215
- assert_match_in_file 'Account.create(', "#{@apptmp}/sample_project/db/seeds.rb"
229
+ assert_match_in_file 'Account.new(', "#{@apptmp}/sample_project/db/seeds.rb"
216
230
  end
217
231
  end
218
232
  end
@@ -1,16 +1,5 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/../helper')
2
-
3
- class Person
4
- def self.properties
5
- [:id, :name, :age, :email].map { |c| OpenStruct.new(:name => c) }
6
- end
7
- end
8
-
9
- class Page
10
- def self.properties
11
- [:id, :name, :body].map { |c| OpenStruct.new(:name => c) }
12
- end
13
- end
2
+ require File.join(File.dirname(__FILE__), '../fixtures/sequel')
14
3
 
15
4
  describe "AdminPageGenerator" do
16
5
  before do
@@ -30,100 +19,100 @@ describe "AdminPageGenerator" do
30
19
  end
31
20
 
32
21
  it 'should fail without an existent model' do
33
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=activerecord') }
22
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=activerecord') }
34
23
  capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
35
24
  assert_raises(Padrino::Admin::Generators::OrmError) { generate(:admin_page, 'foo', "-r=#{@apptmp}/sample_project") }
36
25
  end
37
26
 
38
27
  it 'should correctly generate a new page' do
39
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=datamapper','-e=haml') }
28
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=sequel','-e=haml') }
40
29
  capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
41
- capture_io { generate(:model, 'person', "name:string", "age:integer", "email:string", "--root=#{@apptmp}/sample_project") }
42
- capture_io { generate(:admin_page, 'person', "--root=#{@apptmp}/sample_project") }
43
- assert_file_exists "#{@apptmp}/sample_project/admin/controllers/people.rb"
44
- assert_match_in_file "SampleProject::Admin.controllers :people do", "#{@apptmp}/sample_project/admin/controllers/people.rb"
45
- assert_match_in_file "role.project_module :people, '/people'", "#{@apptmp}/sample_project/admin/app.rb"
30
+ capture_io { generate(:model, 'friend', "name:string", "age:integer", "email:string", "--root=#{@apptmp}/sample_project") }
31
+ capture_io { generate(:admin_page, 'friend', "--root=#{@apptmp}/sample_project") }
32
+ assert_file_exists "#{@apptmp}/sample_project/admin/controllers/friends.rb"
33
+ assert_match_in_file "SampleProject::Admin.controllers :friends do", "#{@apptmp}/sample_project/admin/controllers/friends.rb"
34
+ assert_match_in_file "role.project_module :friends, '/friends'", "#{@apptmp}/sample_project/admin/app.rb"
46
35
  assert_match_in_file "elsif Padrino.env == :development && params[:bypass]", "#{@apptmp}/sample_project/admin/controllers/sessions.rb"
47
36
  end
48
37
 
49
38
  # users can override certain templates from a generators/templates folder in the destination_root
50
39
  it "should use custom generator templates from the project root, if they exist" do
51
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=datamapper','-e=haml') }
40
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=sequel','-e=haml') }
52
41
  custom_template_path = "#{@apptmp}/sample_project/generators/templates/haml/page/"
53
42
  `mkdir -p #{custom_template_path} && echo "%h1= 'Hello, custom generator' " > #{custom_template_path}index.haml.tt`
54
43
  capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
55
- capture_io { generate(:model, 'person', "name:string", "age:integer", "email:string", "--root=#{@apptmp}/sample_project") }
56
- capture_io { generate(:admin_page, 'person', "--root=#{@apptmp}/sample_project") }
57
- assert_match_in_file(/Hello, custom generator/, "#{@apptmp}/sample_project/admin/views/people/index.haml")
44
+ capture_io { generate(:model, 'friend', "name:string", "age:integer", "email:string", "--root=#{@apptmp}/sample_project") }
45
+ capture_io { generate(:admin_page, 'friend', "--root=#{@apptmp}/sample_project") }
46
+ assert_match_in_file(/Hello, custom generator/, "#{@apptmp}/sample_project/admin/views/friends/index.haml")
58
47
  end
59
48
 
60
49
  describe "renderers" do
61
50
  it 'should correctly generate a new page with haml' do
62
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=datamapper','-e=haml') }
51
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=sequel','-e=haml') }
63
52
  capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
64
- capture_io { generate(:model, 'person', "name:string", "age:integer", "email:string", "--root=#{@apptmp}/sample_project") }
65
- capture_io { generate(:admin_page, 'person', "--root=#{@apptmp}/sample_project") }
66
- assert_file_exists "#{@apptmp}/sample_project/admin/views/people/_form.haml"
67
- assert_file_exists "#{@apptmp}/sample_project/admin/views/people/edit.haml"
68
- assert_file_exists "#{@apptmp}/sample_project/admin/views/people/index.haml"
69
- assert_file_exists "#{@apptmp}/sample_project/admin/views/people/new.haml"
53
+ capture_io { generate(:model, 'friend', "name:string", "age:integer", "email:string", "--root=#{@apptmp}/sample_project") }
54
+ capture_io { generate(:admin_page, 'friend', "--root=#{@apptmp}/sample_project") }
55
+ assert_file_exists "#{@apptmp}/sample_project/admin/views/friends/_form.haml"
56
+ assert_file_exists "#{@apptmp}/sample_project/admin/views/friends/edit.haml"
57
+ assert_file_exists "#{@apptmp}/sample_project/admin/views/friends/index.haml"
58
+ assert_file_exists "#{@apptmp}/sample_project/admin/views/friends/new.haml"
70
59
  %w(name age email).each do |field|
71
- assert_match_in_file "label :#{field}", "#{@apptmp}/sample_project/admin/views/people/_form.haml"
72
- assert_match_in_file "text_field :#{field}", "#{@apptmp}/sample_project/admin/views/people/_form.haml"
60
+ assert_match_in_file "label :#{field}", "#{@apptmp}/sample_project/admin/views/friends/_form.haml"
61
+ assert_match_in_file "text_field :#{field}", "#{@apptmp}/sample_project/admin/views/friends/_form.haml"
73
62
  end
74
63
  assert_match_in_file "check_box_tag :bypass", "#{@apptmp}/sample_project/admin/views/sessions/new.haml"
75
64
  end
76
65
 
77
66
  it 'should correctly generate a new page with erb' do
78
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=datamapper','-e=erb') }
67
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=sequel','-e=erb') }
79
68
  capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
80
- capture_io { generate(:model, 'person', "name:string", "age:integer", "email:string", "--root=#{@apptmp}/sample_project") }
81
- capture_io { generate(:admin_page, 'person', "--root=#{@apptmp}/sample_project") }
82
- assert_file_exists "#{@apptmp}/sample_project/admin/views/people/_form.erb"
83
- assert_file_exists "#{@apptmp}/sample_project/admin/views/people/edit.erb"
84
- assert_file_exists "#{@apptmp}/sample_project/admin/views/people/index.erb"
85
- assert_file_exists "#{@apptmp}/sample_project/admin/views/people/new.erb"
69
+ capture_io { generate(:model, 'friend', "name:string", "age:integer", "email:string", "--root=#{@apptmp}/sample_project") }
70
+ capture_io { generate(:admin_page, 'friend', "--root=#{@apptmp}/sample_project") }
71
+ assert_file_exists "#{@apptmp}/sample_project/admin/views/friends/_form.erb"
72
+ assert_file_exists "#{@apptmp}/sample_project/admin/views/friends/edit.erb"
73
+ assert_file_exists "#{@apptmp}/sample_project/admin/views/friends/index.erb"
74
+ assert_file_exists "#{@apptmp}/sample_project/admin/views/friends/new.erb"
86
75
  %w(name age email).each do |field|
87
- assert_match_in_file "label :#{field}", "#{@apptmp}/sample_project/admin/views/people/_form.erb"
88
- assert_match_in_file "text_field :#{field}", "#{@apptmp}/sample_project/admin/views/people/_form.erb"
76
+ assert_match_in_file "label :#{field}", "#{@apptmp}/sample_project/admin/views/friends/_form.erb"
77
+ assert_match_in_file "text_field :#{field}", "#{@apptmp}/sample_project/admin/views/friends/_form.erb"
89
78
  end
90
79
  assert_match_in_file "check_box_tag :bypass", "#{@apptmp}/sample_project/admin/views/sessions/new.erb"
91
80
  end
92
81
 
93
82
  it 'should correctly generate a new page with slim' do
94
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=datamapper','-e=slim') }
83
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=sequel','-e=slim') }
95
84
  capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
96
- capture_io { generate(:model, 'person', "name:string", "age:integer", "email:string", "--root=#{@apptmp}/sample_project") }
97
- capture_io { generate(:admin_page, 'person', "--root=#{@apptmp}/sample_project") }
98
- assert_file_exists "#{@apptmp}/sample_project/admin/views/people/_form.slim"
99
- assert_file_exists "#{@apptmp}/sample_project/admin/views/people/edit.slim"
100
- assert_file_exists "#{@apptmp}/sample_project/admin/views/people/index.slim"
101
- assert_file_exists "#{@apptmp}/sample_project/admin/views/people/new.slim"
85
+ capture_io { generate(:model, 'friend', "name:string", "age:integer", "email:string", "--root=#{@apptmp}/sample_project") }
86
+ capture_io { generate(:admin_page, 'friend', "--root=#{@apptmp}/sample_project") }
87
+ assert_file_exists "#{@apptmp}/sample_project/admin/views/friends/_form.slim"
88
+ assert_file_exists "#{@apptmp}/sample_project/admin/views/friends/edit.slim"
89
+ assert_file_exists "#{@apptmp}/sample_project/admin/views/friends/index.slim"
90
+ assert_file_exists "#{@apptmp}/sample_project/admin/views/friends/new.slim"
102
91
  %w(name age email).each do |field|
103
- assert_match_in_file "label :#{field}", "#{@apptmp}/sample_project/admin/views/people/_form.slim"
104
- assert_match_in_file "text_field :#{field}", "#{@apptmp}/sample_project/admin/views/people/_form.slim"
92
+ assert_match_in_file "label :#{field}", "#{@apptmp}/sample_project/admin/views/friends/_form.slim"
93
+ assert_match_in_file "text_field :#{field}", "#{@apptmp}/sample_project/admin/views/friends/_form.slim"
105
94
  end
106
95
  assert_match_in_file "check_box_tag :bypass", "#{@apptmp}/sample_project/admin/views/sessions/new.slim"
107
96
  end
108
97
  end
109
98
 
110
99
  it 'should correctly generate a new padrino admin application with multiple models at the same time' do
111
- capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=datamapper','-e=haml') }
100
+ capture_io { generate(:project, 'sample_project', '-e=slim', "--root=#{@apptmp}", '-d=sequel','-e=haml') }
112
101
  capture_io { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
113
- capture_io { generate(:model, 'person', "name:string", "age:integer", "email:string", "-root=#{@apptmp}/sample_project") }
102
+ capture_io { generate(:model, 'friend', "name:string", "age:integer", "email:string", "-root=#{@apptmp}/sample_project") }
114
103
  capture_io { generate(:model, 'page', "name:string", "body:string", "-root=#{@apptmp}/sample_project") }
115
- capture_io { generate(:admin_page, 'person', 'page', "--root=#{@apptmp}/sample_project") }
116
- # For Person
117
- assert_file_exists "#{@apptmp}/sample_project/admin/controllers/people.rb"
118
- assert_file_exists "#{@apptmp}/sample_project/admin/views/people/_form.haml"
119
- assert_file_exists "#{@apptmp}/sample_project/admin/views/people/edit.haml"
120
- assert_file_exists "#{@apptmp}/sample_project/admin/views/people/index.haml"
121
- assert_file_exists "#{@apptmp}/sample_project/admin/views/people/new.haml"
104
+ capture_io { generate(:admin_page, 'friend', 'page', "--root=#{@apptmp}/sample_project") }
105
+ # For Friend
106
+ assert_file_exists "#{@apptmp}/sample_project/admin/controllers/friends.rb"
107
+ assert_file_exists "#{@apptmp}/sample_project/admin/views/friends/_form.haml"
108
+ assert_file_exists "#{@apptmp}/sample_project/admin/views/friends/edit.haml"
109
+ assert_file_exists "#{@apptmp}/sample_project/admin/views/friends/index.haml"
110
+ assert_file_exists "#{@apptmp}/sample_project/admin/views/friends/new.haml"
122
111
  %w(name age email).each do |field|
123
- assert_match_in_file "label :#{field}", "#{@apptmp}/sample_project/admin/views/people/_form.haml"
124
- assert_match_in_file "text_field :#{field}", "#{@apptmp}/sample_project/admin/views/people/_form.haml"
112
+ assert_match_in_file "label :#{field}", "#{@apptmp}/sample_project/admin/views/friends/_form.haml"
113
+ assert_match_in_file "text_field :#{field}", "#{@apptmp}/sample_project/admin/views/friends/_form.haml"
125
114
  end
126
- assert_match_in_file "role.project_module :people, '/people'", "#{@apptmp}/sample_project/admin/app.rb"
115
+ assert_match_in_file "role.project_module :friends, '/friends'", "#{@apptmp}/sample_project/admin/app.rb"
127
116
  # For Page
128
117
  assert_file_exists "#{@apptmp}/sample_project/admin/controllers/pages.rb"
129
118
  assert_file_exists "#{@apptmp}/sample_project/admin/views/pages/_form.haml"
data/test/helper.rb CHANGED
@@ -1,18 +1,16 @@
1
1
  ENV['RACK_ENV'] = 'test'
2
2
  PADRINO_ROOT = File.dirname(__FILE__) unless defined? PADRINO_ROOT
3
3
 
4
- require File.expand_path('../../../load_paths', __FILE__)
5
4
  require 'minitest/autorun'
6
5
  require 'minitest/pride'
7
6
  require 'mocha/setup'
8
7
  require 'rack/test'
9
- require 'rack'
10
8
  require 'thor/group'
9
+ require 'sequel/model'
11
10
  require 'padrino-admin'
12
- require 'dm-core'
13
- require 'dm-migrations'
14
- require 'dm-validations'
15
- require 'dm-aggregates'
11
+
12
+ require 'ext/minitest-spec'
13
+ require 'ext/rack-test-methods'
16
14
 
17
15
  Padrino::Generators.load_components!
18
16
 
@@ -32,8 +30,10 @@ class MiniTest::Spec
32
30
  # given. Used in setup or individual spec methods to establish
33
31
  # the application.
34
32
  def mock_app(base=Padrino::Application, &block)
35
- @app = Sinatra.new(base, &block)
36
- @app.register Padrino::Helpers
33
+ @app = Sinatra.new base do
34
+ register Padrino::Helpers
35
+ instance_eval &block
36
+ end
37
37
  end
38
38
 
39
39
  def app
@@ -44,34 +44,4 @@ class MiniTest::Spec
44
44
  def generate(name, *params)
45
45
  "Padrino::Generators::#{name.to_s.camelize}".constantize.start(params)
46
46
  end
47
-
48
- # Assert_file_exists('/tmp/app')
49
- def assert_file_exists(file_path)
50
- assert File.exist?(file_path), "File at path '#{file_path}' does not exist!"
51
- end
52
-
53
- # Assert_no_file_exists('/tmp/app')
54
- def assert_no_file_exists(file_path)
55
- assert !File.exist?(file_path), "File should not exist at path '#{file_path}' but was found!"
56
- end
57
-
58
- # Asserts that a file matches the pattern
59
- def assert_match_in_file(pattern, file)
60
- File.exist?(file) ? assert_match(pattern, File.read(file)) : assert_file_exists(file)
61
- end
62
-
63
- def assert_no_match_in_file(pattern, file)
64
- File.exist?(file) ? refute_match(pattern, File.read(file)) : assert_file_exists(file)
65
- end
66
-
67
- # Delegate other missing methods to response.
68
- def method_missing(name, *args, &block)
69
- if response && response.respond_to?(name)
70
- response.send(name, *args, &block)
71
- else
72
- super(name, *args, &block)
73
- end
74
- end
75
-
76
- alias :response :last_response
77
47
  end
@@ -3,7 +3,7 @@ require File.expand_path(File.dirname(__FILE__) + '/helper')
3
3
  describe "AdminApplication" do
4
4
 
5
5
  def setup
6
- load_fixture 'data_mapper'
6
+ load_fixture 'sequel'
7
7
  end
8
8
 
9
9
  describe "session id setting" do
@@ -268,4 +268,21 @@ describe "AdminApplication" do
268
268
  get "/modules"
269
269
  assert_equal "admin => /admin", body
270
270
  end
271
+
272
+ it 'should use different access control for different apps' do
273
+ app1 = Sinatra.new Padrino::Application do
274
+ register Padrino::Admin::AccessControl
275
+ access_control.roles_for :any do |role|
276
+ role.project_module :foo, "/foo"
277
+ end
278
+ end
279
+ app2 = Sinatra.new Padrino::Application do
280
+ register Padrino::Admin::AccessControl
281
+ access_control.roles_for :any do |role|
282
+ role.project_module :bar, "/bar"
283
+ end
284
+ end
285
+ assert_equal '/foo', app1.access_control.project_modules(:any).first.path
286
+ assert_equal '/bar', app2.access_control.project_modules(:any).first.path
287
+ end
271
288
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: padrino-admin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.8.1
4
+ version: 0.12.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Padrino Team
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2016-09-06 00:00:00.000000000 Z
14
+ date: 2018-02-23 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: padrino-core
@@ -19,54 +19,54 @@ dependencies:
19
19
  requirements:
20
20
  - - '='
21
21
  - !ruby/object:Gem::Version
22
- version: 0.12.8.1
22
+ version: 0.12.9
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - '='
28
28
  - !ruby/object:Gem::Version
29
- version: 0.12.8.1
29
+ version: 0.12.9
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: padrino-helpers
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  requirements:
34
34
  - - '='
35
35
  - !ruby/object:Gem::Version
36
- version: 0.12.8.1
36
+ version: 0.12.9
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
41
  - - '='
42
42
  - !ruby/object:Gem::Version
43
- version: 0.12.8.1
43
+ version: 0.12.9
44
44
  - !ruby/object:Gem::Dependency
45
45
  name: therubyracer
46
46
  requirement: !ruby/object:Gem::Requirement
47
47
  requirements:
48
- - - "~>"
48
+ - - ~>
49
49
  - !ruby/object:Gem::Version
50
50
  version: 0.11.1
51
51
  type: :development
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
- - - "~>"
55
+ - - ~>
56
56
  - !ruby/object:Gem::Version
57
57
  version: 0.11.1
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: less
60
60
  requirement: !ruby/object:Gem::Requirement
61
61
  requirements:
62
- - - "~>"
62
+ - - ~>
63
63
  - !ruby/object:Gem::Version
64
64
  version: 2.2.2
65
65
  type: :development
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
68
68
  requirements:
69
- - - "~>"
69
+ - - ~>
70
70
  - !ruby/object:Gem::Version
71
71
  version: 2.2.2
72
72
  description: Admin View for Padrino applications
@@ -76,9 +76,9 @@ extensions: []
76
76
  extra_rdoc_files:
77
77
  - README.rdoc
78
78
  files:
79
- - ".document"
80
- - ".gitignore"
81
- - ".yardopts"
79
+ - .document
80
+ - .gitignore
81
+ - .yardopts
82
82
  - LICENSE.txt
83
83
  - README.rdoc
84
84
  - Rakefile
@@ -263,7 +263,7 @@ files:
263
263
  - lib/padrino-admin/locale/orm/zh_cn.yml
264
264
  - lib/padrino-admin/locale/orm/zh_tw.yml
265
265
  - padrino-admin.gemspec
266
- - test/fixtures/data_mapper.rb
266
+ - test/fixtures/sequel.rb
267
267
  - test/generators/test_account_model_generator.rb
268
268
  - test/generators/test_admin_app_generator.rb
269
269
  - test/generators/test_admin_page_generator.rb
@@ -276,22 +276,22 @@ licenses:
276
276
  metadata: {}
277
277
  post_install_message:
278
278
  rdoc_options:
279
- - "--charset=UTF-8"
279
+ - --charset=UTF-8
280
280
  require_paths:
281
281
  - lib
282
282
  required_ruby_version: !ruby/object:Gem::Requirement
283
283
  requirements:
284
- - - ">="
284
+ - - ! '>='
285
285
  - !ruby/object:Gem::Version
286
286
  version: '0'
287
287
  required_rubygems_version: !ruby/object:Gem::Requirement
288
288
  requirements:
289
- - - ">="
289
+ - - ! '>='
290
290
  - !ruby/object:Gem::Version
291
291
  version: 1.3.6
292
292
  requirements: []
293
293
  rubyforge_project: padrino-admin
294
- rubygems_version: 2.5.1
294
+ rubygems_version: 2.6.14
295
295
  signing_key:
296
296
  specification_version: 4
297
297
  summary: Admin Dashboard for Padrino
@@ -1,52 +0,0 @@
1
- require 'jdbc/sqlite3' if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
2
- require 'digest/sha1'
3
-
4
- DataMapper.setup(:default, 'sqlite3::memory:')
5
-
6
- # Fake Category Model
7
- class Category
8
- include DataMapper::Resource
9
- property :id, Serial
10
- property :name, String
11
- belongs_to :account
12
- end
13
-
14
- # Fake Account Model
15
- class Account
16
- include DataMapper::Resource
17
- include DataMapper::Validate
18
- attr_accessor :password, :password_confirmation
19
-
20
- # Properties
21
- property :id, Serial
22
- property :name, String
23
- property :surname, String
24
- property :email, String
25
- property :crypted_password, String
26
- property :salt, String
27
- property :role, String
28
-
29
- has n, :categories
30
- def self.admin; first(:role => "admin"); end
31
- def self.editor; first(:role => "editor"); end
32
-
33
- ##
34
- # This method is used from AuthenticationHelper
35
- #
36
- def self.find_by_id(id)
37
- get(id)
38
- end
39
- end
40
-
41
- DataMapper.auto_migrate!
42
-
43
- # We build some fake accounts
44
- admin = Account.create(:name => "DAddYE", :role => "admin", :email => "d.dagostino@lipsiasoft.com",
45
- :password => "some", :password_confirmation => "some")
46
- editor = Account.create(:name => "Dexter", :role => "editor", :email => "editor@lipsiasoft.com",
47
- :password => "some", :password_confirmation => "some")
48
-
49
- %w(News Press HowTo).each do |c|
50
- admin.categories.create(:name => c)
51
- editor.categories.create(:name => c)
52
- end