adminpanel 2.1.0 → 2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +0 -3
- data/Gemfile +7 -7
- data/Rakefile +20 -4
- data/adminpanel.gemspec +7 -7
- data/app/controllers/adminpanel/categories_controller.rb +1 -5
- data/app/controllers/adminpanel/galleries_controller.rb +13 -18
- data/app/controllers/concerns/adminpanel/facebook_actions.rb +26 -18
- data/app/controllers/concerns/adminpanel/rest_actions.rb +8 -3
- data/app/helpers/adminpanel/router_helper.rb +4 -0
- data/app/models/adminpanel/section.rb +4 -4
- data/app/views/adminpanel/sessions/new.html.erb +1 -1
- data/app/views/layouts/_top_bar.html.erb +24 -2
- data/app/views/layouts/admin-login.html.erb +1 -2
- data/app/views/shared/fb_choose_page.html.erb +3 -3
- data/app/views/shared/new.html.erb +24 -23
- data/config/locales/es.yml +8 -3
- data/config/routes.rb +8 -3
- data/lib/adminpanel/version.rb +1 -1
- data/lib/generators/adminpanel/gallery/templates/gallery_migration.rb +1 -1
- data/lib/generators/adminpanel/resource/resource_generator.rb +2 -2
- data/{spec → test}/dummy/.gitignore +0 -1
- data/{spec → test}/dummy/README.rdoc +0 -0
- data/{spec → test}/dummy/Rakefile +0 -0
- data/{spec → test}/dummy/app/assets/images/hipster.jpg +0 -0
- data/{spec → test}/dummy/app/assets/images/test.jpg +0 -0
- data/{spec → test}/dummy/app/assets/javascripts/application.js +0 -0
- data/{spec → test}/dummy/app/assets/stylesheets/application.css +0 -0
- data/{spec → test}/dummy/app/controllers/adminpanel/.gitkeep +0 -0
- data/{spec → test}/dummy/app/controllers/adminpanel/mugs_controller.rb +0 -0
- data/{spec → test}/dummy/app/controllers/adminpanel/products_controller.rb +0 -0
- data/{spec → test}/dummy/app/controllers/adminpanel/salesmen_controller.rb +0 -0
- data/{spec → test}/dummy/app/controllers/application_controller.rb +0 -0
- data/{spec → test}/dummy/app/helpers/application_helper.rb +0 -0
- data/{spec → test}/dummy/app/mailers/.gitkeep +0 -0
- data/{spec → test}/dummy/app/models/.gitkeep +0 -0
- data/{spec → test}/dummy/app/models/ability.rb +0 -0
- data/{spec → test}/dummy/app/models/adminpanel/categorization.rb +0 -0
- data/{spec → test}/dummy/app/models/adminpanel/category.rb +0 -0
- data/{spec → test}/dummy/app/models/adminpanel/mug.rb +0 -0
- data/{spec → test}/dummy/app/models/adminpanel/photo.rb +0 -0
- data/{spec → test}/dummy/app/models/adminpanel/product.rb +0 -0
- data/{spec → test}/dummy/app/models/adminpanel/salesman.rb +0 -0
- data/{spec → test}/dummy/app/uploader/adminpanel/photo_uploader.rb +0 -0
- data/{spec → test}/dummy/app/uploader/adminpanel/section_uploader.rb +0 -0
- data/{spec → test}/dummy/app/views/layouts/application.html.erb +0 -0
- data/{spec → test}/dummy/config.ru +0 -0
- data/{spec → test}/dummy/config/application.rb +0 -0
- data/{spec → test}/dummy/config/boot.rb +0 -0
- data/{spec/dummy/config/carrierwve.rb → test/dummy/config/carrierwave.rb} +1 -1
- data/{spec → test}/dummy/config/database.yml +0 -0
- data/{spec → test}/dummy/config/environment.rb +0 -0
- data/{spec → test}/dummy/config/environments/development.rb +0 -0
- data/{spec → test}/dummy/config/environments/production.rb +0 -0
- data/{spec → test}/dummy/config/environments/test.rb +2 -2
- data/{spec → test}/dummy/config/initializers/adminpanel_setup.rb +0 -0
- data/{spec → test}/dummy/config/initializers/backtrace_silencers.rb +0 -0
- data/{spec → test}/dummy/config/initializers/mime_types.rb +0 -0
- data/{spec → test}/dummy/config/initializers/session_store.rb +0 -0
- data/{spec → test}/dummy/config/initializers/wrap_parameters.rb +0 -0
- data/{spec → test}/dummy/config/locales/.keep +0 -0
- data/{spec → test}/dummy/config/routes.rb +0 -0
- data/test/dummy/config/secrets.yml +2 -0
- data/{spec → test}/dummy/db/schema.rb +0 -0
- data/{spec → test}/dummy/lib/assets/.gitkeep +0 -0
- data/{spec → test}/dummy/public/404.html +0 -0
- data/{spec → test}/dummy/public/422.html +0 -0
- data/{spec → test}/dummy/public/500.html +0 -0
- data/{spec → test}/dummy/public/favicon.ico +0 -0
- data/{spec → test}/dummy/script/rails +0 -0
- data/test/dummy/test/fixtures/adminpanel/galleries.yml +15 -0
- data/test/dummy/test/fixtures/adminpanel/groups.yml +4 -0
- data/test/dummy/test/fixtures/adminpanel/users.yml +8 -0
- data/test/features/session/login_test.rb +33 -0
- data/test/features/shared/new_test.rb +39 -0
- data/test/models/adminpanel/gallery_test.rb +37 -0
- data/test/models/adminpanel/section_test.rb +53 -0
- data/test/models/adminpanel/user_test.rb +51 -0
- data/test/test_helper.rb +71 -0
- data/test/unit/gallery_unit_test.rb +21 -0
- metadata +212 -246
- data/spec/features/authentication_pages_spec.rb +0 -45
- data/spec/models/gallery_spec.rb +0 -24
- data/spec/models/section_spec.rb +0 -61
- data/spec/models/user_spec.rb +0 -94
data/config/routes.rb
CHANGED
@@ -34,11 +34,16 @@ Adminpanel::Engine.routes.draw do
|
|
34
34
|
end
|
35
35
|
|
36
36
|
# normal resource
|
37
|
+
resources resource, resources_parameters(resource).merge(rest_path_names)
|
38
|
+
|
39
|
+
# if resource is going to be shared on facebook
|
37
40
|
resources resource, resources_parameters(resource).merge(rest_path_names) do
|
38
41
|
member do
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
+
if has_fb_share?(resource)
|
43
|
+
get :fb_choose_page, as: 'fb_choose_page', path: 'publicar-a-pagina-en-fb'
|
44
|
+
post :fb_save_token, as: 'fb_save_token', path: 'guardar-token'
|
45
|
+
post 'fb_publish/:configuration_id', to: "#{resource}#fb_publish", as: 'fb_publish', path: 'publicar-a-facebook'
|
46
|
+
end
|
42
47
|
end
|
43
48
|
end
|
44
49
|
end
|
data/lib/adminpanel/version.rb
CHANGED
@@ -41,13 +41,13 @@ module Adminpanel
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def generate_gallery
|
44
|
-
if has_gallery?
|
44
|
+
if has_gallery? && is_a_resource?
|
45
45
|
invoke 'adminpanel:gallery', [lower_singularized_name]
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
49
|
def add_resource_to_config
|
50
|
-
if setup_is_found?
|
50
|
+
if setup_is_found? && is_a_resource?
|
51
51
|
inject_into_file 'config/initializers/adminpanel_setup.rb',
|
52
52
|
after: 'config.displayable_resources = [' do
|
53
53
|
indent "\n:#{pluralized_name},", 4
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -23,8 +23,8 @@ Dummy::Application.configure do
|
|
23
23
|
# Raise exceptions instead of rendering exception templates.
|
24
24
|
config.action_dispatch.show_exceptions = false
|
25
25
|
|
26
|
-
#
|
27
|
-
config.action_controller.allow_forgery_protection =
|
26
|
+
# Enable request forgery protection in test environment.
|
27
|
+
config.action_controller.allow_forgery_protection = true
|
28
28
|
|
29
29
|
# Tell Action Mailer not to deliver emails to the real world.
|
30
30
|
# The :test delivery method accumulates sent emails in the
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,15 @@
|
|
1
|
+
one:
|
2
|
+
file: hipster.jpg
|
3
|
+
position: 1
|
4
|
+
created_at: <%= Date.today %>
|
5
|
+
updated_at: <%= Date.today %>
|
6
|
+
two:
|
7
|
+
file: hipster.jpg
|
8
|
+
position: 2
|
9
|
+
created_at: <%= Date.today %>
|
10
|
+
updated_at: <%= Date.today %>
|
11
|
+
three:
|
12
|
+
file: hipster.jpg
|
13
|
+
position: 3
|
14
|
+
created_at: <%= Date.today %>
|
15
|
+
updated_at: <%= Date.today %>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
valid:
|
2
|
+
name: Example User
|
3
|
+
email: user@example.com
|
4
|
+
password_digest: <%= BCrypt::Password.create('foobar') %>
|
5
|
+
remember_token: <%= Digest::SHA1.hexdigest("adminSat Feb 25 17:14:00 GMT 20060.236961325863376") %>
|
6
|
+
group_id: <%= ActiveRecord::FixtureSet.identify(:Admin) %>
|
7
|
+
created_at: <%= Date.today %>
|
8
|
+
updated_at: <%= Date.today %>
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class LoginTest < ViewCase
|
4
|
+
fixtures :all
|
5
|
+
|
6
|
+
setup :visiting_signin
|
7
|
+
|
8
|
+
def test_login_messages
|
9
|
+
assert_content I18n.t('authentication.welcome')
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_logging_in_with_valid_information
|
13
|
+
login
|
14
|
+
assert_content I18n.t('authentication.signin_success')
|
15
|
+
assert_content I18n.t('authentication.logout')
|
16
|
+
signout
|
17
|
+
assert_content I18n.t('authentication.welcome')
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_logging_in_with_invalid_information
|
21
|
+
login('foobaz') #pass is foobar
|
22
|
+
assert_content I18n.t('authentication.signin_error')
|
23
|
+
end
|
24
|
+
|
25
|
+
protected
|
26
|
+
def visiting_signin
|
27
|
+
visit adminpanel.signin_path
|
28
|
+
end
|
29
|
+
|
30
|
+
def signout
|
31
|
+
click_link 'signout-button'
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class NewTest < ViewCase
|
4
|
+
|
5
|
+
setup :visit_new_product
|
6
|
+
# teardown :teardown
|
7
|
+
|
8
|
+
def test_shared_new_page_messages
|
9
|
+
assert_button("#{I18n.t('action.add')} #{Adminpanel::Product.display_name}")
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_submitting_with_invalid_information
|
13
|
+
click_button('Agregar Producto')
|
14
|
+
assert_content('Producto no pudo guardarse debido a 3 errores')
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_submitting_with_valid_information
|
18
|
+
fill_in 'product_name', :with => 'product name'
|
19
|
+
fill_in 'product_price', :with => '855.5'
|
20
|
+
page.execute_script(
|
21
|
+
%Q(
|
22
|
+
$('#product_description').data('wysihtml5').editor.setValue('que pepsi');
|
23
|
+
)
|
24
|
+
) # to fill the wysiwyg editor
|
25
|
+
click_button('Agregar Producto')
|
26
|
+
assert_content(I18n.t('action.save_success'))
|
27
|
+
saved_product = Adminpanel::Product.last
|
28
|
+
assert_equal 'product name', saved_product.name
|
29
|
+
assert_equal '855.5', saved_product.price
|
30
|
+
assert_equal 'que pepsi', saved_product.description
|
31
|
+
end
|
32
|
+
|
33
|
+
protected
|
34
|
+
def visit_new_product
|
35
|
+
visit adminpanel.signin_path
|
36
|
+
login
|
37
|
+
visit adminpanel.new_product_path
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
module Adminpanel
|
3
|
+
class GalleryTest < ActiveSupport::TestCase
|
4
|
+
|
5
|
+
# set_fixture_class 'adminpanel/galleries' => Adminpanel::Gallery
|
6
|
+
|
7
|
+
def test_moving_up_with_the_best_position
|
8
|
+
gallery_1 = adminpanel_galleries(:one)
|
9
|
+
gallery_1.move_to_better_position
|
10
|
+
assert_equal 1, gallery_1.position
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_moving_down_with_the_worst_position
|
14
|
+
gallery_3 = adminpanel_galleries(:three)
|
15
|
+
gallery_3.move_to_worst_position
|
16
|
+
assert_equal 3, gallery_3.position
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_moving_up_with_intermediate_position
|
20
|
+
gallery_2 = adminpanel_galleries(:two)
|
21
|
+
gallery_2.move_to_better_position
|
22
|
+
assert_equal 1, gallery_2.position
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_moving_down_with_intermediate_position
|
26
|
+
gallery_2 = adminpanel_galleries(:two)
|
27
|
+
gallery_2.move_to_worst_position
|
28
|
+
assert_equal 3, gallery_2.position
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_file_presence
|
32
|
+
g = Adminpanel::Gallery.new
|
33
|
+
assert_not g.save
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Adminpanel
|
4
|
+
class SectionTest < ActiveSupport::TestCase
|
5
|
+
|
6
|
+
def test_telephone_validations
|
7
|
+
set_telephone
|
8
|
+
assert @telephone.valid?
|
9
|
+
|
10
|
+
@telephone.update_attribute(:description, '1' * 9)
|
11
|
+
assert @telephone.invalid?
|
12
|
+
|
13
|
+
@telephone.update_attribute(:description, '1' * 11)
|
14
|
+
assert @telephone.invalid?
|
15
|
+
|
16
|
+
@telephone.update_attribute(:description, '01-2-3-4-5')
|
17
|
+
assert @telephone.invalid?
|
18
|
+
|
19
|
+
@telephone.update_attribute(:description, '')
|
20
|
+
assert @telephone.valid?
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_default_scope
|
24
|
+
assert_equal(
|
25
|
+
Adminpanel::Section.all.to_sql,
|
26
|
+
Adminpanel::Section.reorder('').order('page ASC').to_sql
|
27
|
+
)
|
28
|
+
end
|
29
|
+
|
30
|
+
protected
|
31
|
+
def set_telephone
|
32
|
+
@telephone = Adminpanel::Section.new(
|
33
|
+
name: 'Telefono',
|
34
|
+
key: 'phone',
|
35
|
+
has_description: false,
|
36
|
+
description: '1234567890',
|
37
|
+
page: 'home',
|
38
|
+
has_image: false
|
39
|
+
)
|
40
|
+
end
|
41
|
+
|
42
|
+
def set_description
|
43
|
+
@description = Adminpanel::Section.new(
|
44
|
+
name: 'Inicio',
|
45
|
+
key: 'greeting',
|
46
|
+
has_description: true,
|
47
|
+
description: 'lorem ipsum dolor sit amec',
|
48
|
+
page: 'home',
|
49
|
+
has_image: false
|
50
|
+
)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Adminpanel
|
4
|
+
class UserTest < ActiveSupport::TestCase
|
5
|
+
setup :assign_user
|
6
|
+
|
7
|
+
def test_is_valid_user
|
8
|
+
assert @test_user.save
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_name_validation
|
12
|
+
@test_user.name = ""
|
13
|
+
assert_not @test_user.valid?
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_email_validation
|
17
|
+
@test_user.email = "foo@"
|
18
|
+
assert_not @test_user.valid?
|
19
|
+
|
20
|
+
@test_user.email = "foo@bar"
|
21
|
+
assert_not @test_user.valid?
|
22
|
+
|
23
|
+
@test_user.email = "@bar.baz"
|
24
|
+
assert_not @test_user.valid?
|
25
|
+
|
26
|
+
@test_user.email = "foo.baz"
|
27
|
+
assert_not @test_user.valid?
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_password_validation
|
31
|
+
@test_user.password_confirmation = "foobaz"
|
32
|
+
assert_not @test_user.valid?
|
33
|
+
|
34
|
+
@test_user.password_confirmation = "foo"
|
35
|
+
@test_user.password = "foo"
|
36
|
+
assert_not @test_user.valid?
|
37
|
+
end
|
38
|
+
|
39
|
+
protected
|
40
|
+
def assign_user
|
41
|
+
@test_user = Adminpanel::User.new(
|
42
|
+
name: "Example User",
|
43
|
+
email: "foo@bar.com",
|
44
|
+
password: "foobar",
|
45
|
+
password_confirmation: "foobar",
|
46
|
+
group_id: adminpanel_groups(:Admin).id
|
47
|
+
)
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
ENV['RAILS_ENV'] ||= 'test'
|
2
|
+
require 'rails'
|
3
|
+
require File.expand_path('../dummy/config/environment', __FILE__)
|
4
|
+
require 'rails/test_help'
|
5
|
+
require 'minitest/autorun'
|
6
|
+
require 'minitest/emoji' #emoji output
|
7
|
+
require 'capybara/rails'
|
8
|
+
require 'minitest/unit'
|
9
|
+
require 'mocha/mini_test'
|
10
|
+
require 'capybara/poltergeist'
|
11
|
+
# require 'minitest/debugger' if ENV['DEBUG'] # for deubgging
|
12
|
+
|
13
|
+
|
14
|
+
Capybara.current_driver = :poltergeist
|
15
|
+
|
16
|
+
load Rails.root.join('db', 'schema.rb')
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
class ActiveRecord::Base
|
22
|
+
mattr_accessor :shared_connection
|
23
|
+
@@shared_connection = nil
|
24
|
+
|
25
|
+
def self.connection
|
26
|
+
@@shared_connection || retrieve_connection
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# Forces all threads to share the same connection. This works on
|
31
|
+
# Capybara because it starts the web server in a thread.
|
32
|
+
ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection
|
33
|
+
|
34
|
+
|
35
|
+
class ActiveSupport::TestCase
|
36
|
+
|
37
|
+
#fixtures live inside the dummy app
|
38
|
+
fixtures :all
|
39
|
+
|
40
|
+
# Add more helper methods to be used by all tests here...
|
41
|
+
end
|
42
|
+
class ViewCase < ActionView::TestCase
|
43
|
+
include Capybara::DSL
|
44
|
+
include Capybara::Assertions
|
45
|
+
include Rails.application.routes.url_helpers
|
46
|
+
|
47
|
+
def teardown
|
48
|
+
Capybara.reset_session!
|
49
|
+
end
|
50
|
+
|
51
|
+
protected
|
52
|
+
def login(password = 'foobar')
|
53
|
+
fill_in 'inputEmail', with: adminpanel_users(:valid).email
|
54
|
+
fill_in 'inputPassword', with: password #pass is foobar
|
55
|
+
click_button I18n.t('authentication.new-session')
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# class SharedTestCase < ViewCase
|
60
|
+
# # include Capybara::DSL
|
61
|
+
# # include Capybara::Assertions
|
62
|
+
# # include Rails.application.routes.url_helpers
|
63
|
+
# def before_setup
|
64
|
+
# sign_in
|
65
|
+
# end
|
66
|
+
# protected
|
67
|
+
# def sign_in
|
68
|
+
# visit adminpanel.signin_path
|
69
|
+
# login
|
70
|
+
# end
|
71
|
+
# end
|