padrino-admin 0.12.8.1 → 0.12.9

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.
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