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 +13 -5
- data/Rakefile +0 -4
- data/lib/padrino-admin.rb +0 -1
- data/lib/padrino-admin/access_control.rb +9 -3
- data/lib/padrino-admin/generators/admin_app.rb +3 -2
- data/lib/padrino-admin/generators/templates/account/datamapper.rb.tt +5 -0
- data/lib/padrino-admin/generators/templates/account/seeds.rb.tt +5 -4
- data/lib/padrino-admin/generators/templates/erb/app/layouts/application.erb.tt +1 -1
- data/lib/padrino-admin/generators/templates/erb/page/index.erb.tt +2 -2
- data/lib/padrino-admin/generators/templates/haml/app/layouts/application.haml.tt +2 -2
- data/lib/padrino-admin/generators/templates/page/controller.rb.tt +1 -1
- data/lib/padrino-admin/generators/templates/slim/app/layouts/application.slim.tt +3 -2
- data/test/fixtures/sequel.rb +89 -0
- data/test/generators/test_account_model_generator.rb +8 -8
- data/test/generators/test_admin_app_generator.rb +46 -32
- data/test/generators/test_admin_page_generator.rb +51 -62
- data/test/helper.rb +8 -38
- data/test/test_admin_application.rb +18 -1
- metadata +18 -18
- data/test/fixtures/data_mapper.rb +0 -52
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
YTdlNDEzYzg0NjE3NDNkOTFhOTdlODFiY2I3Y2IwOTMwNGIyMDFhMw==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MDNjMzgzODk4MmIyN2ZmZTM0MTIyZjU5ZjRiNzk3OTU4ZDY1MTZlOQ==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
NjM4YzEwMThlNjBhNmFmNzFhNjkwZWRjY2M2ODI5OWI4NDRiZWE5NDk5MWYy
|
10
|
+
YzViMjg0YTEyM2U5YWFhZDdjMGUzZGNlMjE2M2U2NjU5NDRhY2U3MWJmOTM5
|
11
|
+
ZTBlMmQwMjlhZTZkNjczM2E4MDE1YTc3ZTA3NGZiZmNjODU0NGM=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
YTJhZjkxZDVjMjdjNzMwODZmNjBjN2QyZmZhNmM1NTUwYmY3YmEwNmMwYzYx
|
14
|
+
NzAzYjk2MDQzNmJkMzRlZjZkZDYyOTg3Y2MxODE4ZDhlZjdjY2FkNzk4OWE5
|
15
|
+
NjdhMDE4MWE4OWVhNWQzY2RkODdjYTQ5NGUzZTI0NmZkNDU3Njg=
|
data/Rakefile
CHANGED
data/lib/padrino-admin.rb
CHANGED
@@ -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.
|
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 "<=
|
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 '
|
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 = [
|
@@ -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 %>.
|
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
|
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'
|
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=
|
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
|
-
|
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
|
-
=
|
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.
|
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'
|
24
|
-
=
|
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
|
-
|
40
|
-
|
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
|
-
|
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
|
-
|
47
|
-
|
48
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
#
|
157
|
-
#
|
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
|
-
#
|
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
|
-
#
|
174
|
-
#
|
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
|
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
|
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
|
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.
|
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=
|
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, '
|
42
|
-
capture_io { generate(:admin_page, '
|
43
|
-
assert_file_exists "#{@apptmp}/sample_project/admin/controllers/
|
44
|
-
assert_match_in_file "SampleProject::Admin.controllers :
|
45
|
-
assert_match_in_file "role.project_module :
|
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=
|
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, '
|
56
|
-
capture_io { generate(:admin_page, '
|
57
|
-
assert_match_in_file(/Hello, custom generator/, "#{@apptmp}/sample_project/admin/views/
|
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=
|
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, '
|
65
|
-
capture_io { generate(:admin_page, '
|
66
|
-
assert_file_exists "#{@apptmp}/sample_project/admin/views/
|
67
|
-
assert_file_exists "#{@apptmp}/sample_project/admin/views/
|
68
|
-
assert_file_exists "#{@apptmp}/sample_project/admin/views/
|
69
|
-
assert_file_exists "#{@apptmp}/sample_project/admin/views/
|
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/
|
72
|
-
assert_match_in_file "text_field :#{field}", "#{@apptmp}/sample_project/admin/views/
|
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=
|
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, '
|
81
|
-
capture_io { generate(:admin_page, '
|
82
|
-
assert_file_exists "#{@apptmp}/sample_project/admin/views/
|
83
|
-
assert_file_exists "#{@apptmp}/sample_project/admin/views/
|
84
|
-
assert_file_exists "#{@apptmp}/sample_project/admin/views/
|
85
|
-
assert_file_exists "#{@apptmp}/sample_project/admin/views/
|
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/
|
88
|
-
assert_match_in_file "text_field :#{field}", "#{@apptmp}/sample_project/admin/views/
|
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=
|
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, '
|
97
|
-
capture_io { generate(:admin_page, '
|
98
|
-
assert_file_exists "#{@apptmp}/sample_project/admin/views/
|
99
|
-
assert_file_exists "#{@apptmp}/sample_project/admin/views/
|
100
|
-
assert_file_exists "#{@apptmp}/sample_project/admin/views/
|
101
|
-
assert_file_exists "#{@apptmp}/sample_project/admin/views/
|
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/
|
104
|
-
assert_match_in_file "text_field :#{field}", "#{@apptmp}/sample_project/admin/views/
|
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=
|
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, '
|
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, '
|
116
|
-
# For
|
117
|
-
assert_file_exists "#{@apptmp}/sample_project/admin/controllers/
|
118
|
-
assert_file_exists "#{@apptmp}/sample_project/admin/views/
|
119
|
-
assert_file_exists "#{@apptmp}/sample_project/admin/views/
|
120
|
-
assert_file_exists "#{@apptmp}/sample_project/admin/views/
|
121
|
-
assert_file_exists "#{@apptmp}/sample_project/admin/views/
|
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/
|
124
|
-
assert_match_in_file "text_field :#{field}", "#{@apptmp}/sample_project/admin/views/
|
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 :
|
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
|
-
|
13
|
-
require '
|
14
|
-
require '
|
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
|
36
|
-
|
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 '
|
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.
|
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:
|
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.
|
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.
|
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.
|
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.
|
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
|
-
-
|
80
|
-
-
|
81
|
-
-
|
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/
|
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
|
-
-
|
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.
|
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
|