adminpanel 2.1.1 → 2.1.2
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 +4 -4
- data/Gemfile +6 -7
- data/Rakefile +8 -7
- data/adminpanel.gemspec +6 -6
- data/app/controllers/adminpanel/application_controller.rb +1 -0
- data/app/controllers/concerns/adminpanel/facebook_actions.rb +1 -1
- data/app/controllers/concerns/adminpanel/sitemap_actions.rb +13 -0
- data/app/models/concerns/adminpanel/base.rb +1 -2
- data/app/models/concerns/adminpanel/facebook.rb +1 -1
- data/app/models/concerns/adminpanel/sitemap.rb +34 -0
- data/lib/adminpanel/version.rb +1 -1
- data/lib/generators/adminpanel/gallery/gallery_generator.rb +26 -28
- data/lib/generators/adminpanel/initialize/initialize_generator.rb +50 -52
- data/lib/generators/adminpanel/resource/resource_generator.rb +190 -193
- data/lib/tasks/adminpanel/adminpanel.rake +4 -4
- data/test/dummy/app/controllers/adminpanel/departments_controller.rb +13 -0
- data/test/dummy/app/models/adminpanel/department.rb +47 -0
- data/test/dummy/app/models/adminpanel/item.rb +38 -0
- data/test/dummy/app/models/adminpanel/mug.rb +1 -1
- data/test/dummy/app/models/adminpanel/salesman.rb +1 -0
- data/test/dummy/config/initializers/adminpanel_setup.rb +1 -0
- data/test/dummy/db/schema.rb +12 -0
- data/test/dummy/test/fixtures/adminpanel/mugs.yml +12 -0
- data/test/dummy/test/fixtures/adminpanel/products.yml +6 -0
- data/test/dummy/test/fixtures/adminpanel/salesmen.yml +12 -0
- data/test/features/shared/action_exclution_test.rb +20 -0
- data/test/features/shared/belongs_to_category_modal_test.rb +35 -0
- data/test/features/shared/belongs_to_non_category_modal_test.rb +41 -0
- data/test/features/shared/edit_test.rb +32 -0
- data/test/features/shared/has_many_through_category_modal_test.rb +35 -0
- data/test/features/shared/has_many_through_non_category_modal_test.rb +37 -0
- data/test/features/shared/index_test.rb +20 -0
- data/test/features/shared/new_test.rb +3 -3
- data/test/features/shared/show_test.rb +20 -0
- data/test/generators/gallery_generator_test.rb +39 -0
- data/test/generators/initialize_generator_test.rb +45 -0
- data/test/generators/resource_generator_test.rb +138 -0
- data/test/tasks/adminpanel_rake_test.rb +32 -0
- data/test/test_helper.rb +16 -23
- metadata +81 -70
- data/app/uploaders/adminpanel/image_uploader.rb +0 -58
- data/spec/features/galleries_pages_spec.rb +0 -110
- data/spec/features/section_pages_spec.rb +0 -36
- data/spec/features/shared_pages/edit_spec.rb +0 -48
- data/spec/features/shared_pages/index_spec.rb +0 -50
- data/spec/features/shared_pages/new_spec.rb +0 -128
- data/spec/features/shared_pages/show_spec.rb +0 -30
- data/spec/generators/gallery_generator_spec.rb +0 -48
- data/spec/generators/initialize_generator_spec.rb +0 -68
- data/spec/generators/resource_generator_spec.rb +0 -169
- data/spec/spec_helper.rb +0 -42
- data/spec/support/capybara_matchers.rb +0 -17
- data/spec/support/factories.rb +0 -52
- data/spec/support/helper_methods.rb +0 -30
- data/spec/support/shared_connection.rb +0 -10
- data/spec/tasks/adminpanel_rake_spec.rb +0 -59
@@ -10,7 +10,7 @@ namespace :adminpanel do
|
|
10
10
|
:has_description => false,
|
11
11
|
:description => "",
|
12
12
|
:key => (args[:name].downcase.tr(' ','_')),
|
13
|
-
:page => args[:section],
|
13
|
+
:page => args[:section].capitalize,
|
14
14
|
:has_image => false
|
15
15
|
)
|
16
16
|
|
@@ -57,7 +57,7 @@ namespace :adminpanel do
|
|
57
57
|
|
58
58
|
task :dump => :environment do |t|
|
59
59
|
puts "Dumping adminpanel_sections and adminpanel_categories into db/seeds.rb"
|
60
|
-
File.open("db
|
60
|
+
File.open("#{Rails.root.join('db', 'seeds.rb')}", "w+") do |f|
|
61
61
|
f << "Adminpanel::Section.delete_all\n"
|
62
62
|
f << "Adminpanel::Category.delete_all\n"
|
63
63
|
Adminpanel::Section.all.each do |section|
|
@@ -71,7 +71,7 @@ namespace :adminpanel do
|
|
71
71
|
|
72
72
|
task :dump_sections => :environment do |t|
|
73
73
|
puts "Dumping adminpanel_sections table into db/seeds.rb"
|
74
|
-
File.open("db
|
74
|
+
File.open("#{Rails.root.join('db', 'seeds.rb')}", "w") do |f|
|
75
75
|
f << "Adminpanel::Section.delete_all\n"
|
76
76
|
Adminpanel::Section.all.each do |section|
|
77
77
|
f << "#{creation_command_section(section)}"
|
@@ -81,7 +81,7 @@ namespace :adminpanel do
|
|
81
81
|
|
82
82
|
task :dump_categories => :environment do |t|
|
83
83
|
puts "Dumping adminpanel_categories table into db/seeds.rb"
|
84
|
-
File.open("db
|
84
|
+
File.open("#{Rails.root.join('db', 'seeds.rb')}", "w") do |f|
|
85
85
|
f << "Adminpanel::Section.delete_all\n"
|
86
86
|
Adminpanel::Section.all.each do |section|
|
87
87
|
f << "#{creation_command_categories(section)}"
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Adminpanel
|
2
|
+
class Department < ActiveRecord::Base
|
3
|
+
include Adminpanel::Base
|
4
|
+
|
5
|
+
belongs_to :category
|
6
|
+
|
7
|
+
has_many :items
|
8
|
+
has_many :product, :through => :items, :dependent => :destroy
|
9
|
+
|
10
|
+
def self.form_attributes
|
11
|
+
[
|
12
|
+
{
|
13
|
+
'category_id' => {
|
14
|
+
'type' => 'belongs_to',
|
15
|
+
'label' => 'category',
|
16
|
+
'placeholder' => 'category',
|
17
|
+
'model' => 'Adminpanel::Category',
|
18
|
+
}
|
19
|
+
},
|
20
|
+
{
|
21
|
+
'product_ids' => {
|
22
|
+
'type' => 'has_many',
|
23
|
+
'label' => 'product',
|
24
|
+
'placeholder' => 'product',
|
25
|
+
'model' => 'Adminpanel::Product',
|
26
|
+
}
|
27
|
+
},
|
28
|
+
{
|
29
|
+
'name' => {
|
30
|
+
'type' => 'text_field',
|
31
|
+
'label' => 'name',
|
32
|
+
'placeholder' => 'name',
|
33
|
+
}
|
34
|
+
},
|
35
|
+
|
36
|
+
]
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.display_name
|
40
|
+
'Departamento' #singular
|
41
|
+
end
|
42
|
+
|
43
|
+
# def self.icon
|
44
|
+
# "truck" # fa-{icon}
|
45
|
+
# end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Adminpanel
|
2
|
+
class Item < ActiveRecord::Base
|
3
|
+
include Adminpanel::Base
|
4
|
+
|
5
|
+
belongs_to :product
|
6
|
+
belongs_to :category
|
7
|
+
|
8
|
+
def self.form_attributes
|
9
|
+
[
|
10
|
+
{
|
11
|
+
'product_id' => {
|
12
|
+
'type' => 'belongs_to',
|
13
|
+
'label' => 'product',
|
14
|
+
'placeholder' => 'product',
|
15
|
+
'model' => 'Adminpanel::Product',
|
16
|
+
}
|
17
|
+
},
|
18
|
+
{
|
19
|
+
'category_id' => {
|
20
|
+
'type' => 'belongs_to',
|
21
|
+
'label' => 'category',
|
22
|
+
'placeholder' => 'category',
|
23
|
+
'model' => 'Adminpanel::Category',
|
24
|
+
}
|
25
|
+
},
|
26
|
+
|
27
|
+
]
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.display_name
|
31
|
+
'Item' #singular
|
32
|
+
end
|
33
|
+
|
34
|
+
# def self.icon
|
35
|
+
# "truck" # fa-{icon}
|
36
|
+
# end
|
37
|
+
end
|
38
|
+
end
|
data/test/dummy/db/schema.rb
CHANGED
@@ -64,6 +64,18 @@ ActiveRecord::Schema.define do
|
|
64
64
|
t.datetime :created_at, :null => false
|
65
65
|
t.datetime :updated_at, :null => false
|
66
66
|
end
|
67
|
+
create_table :adminpanel_items do |t|
|
68
|
+
t.integer :product_id
|
69
|
+
t.integer :deparment_id
|
70
|
+
t.datetime :created_at, :null => false
|
71
|
+
t.datetime :updated_at, :null => false
|
72
|
+
end
|
73
|
+
create_table :adminpanel_departments do |t|
|
74
|
+
t.integer :category_id
|
75
|
+
t.integer :name
|
76
|
+
t.datetime :created_at, :null => false
|
77
|
+
t.datetime :updated_at, :null => false
|
78
|
+
end
|
67
79
|
create_table :adminpanel_groups do |t|
|
68
80
|
t.string :name
|
69
81
|
t.datetime :created_at, :null => false
|
@@ -0,0 +1,12 @@
|
|
1
|
+
first:
|
2
|
+
name: 'Mug 1'
|
3
|
+
created_at: <%= Date.today %>
|
4
|
+
updated_at: <%= Date.today %>
|
5
|
+
second:
|
6
|
+
name: 'Mug 2'
|
7
|
+
created_at: <%= Date.today %>
|
8
|
+
updated_at: <%= Date.today %>
|
9
|
+
third:
|
10
|
+
name: 'Mug 3'
|
11
|
+
created_at: <%= Date.today %>
|
12
|
+
updated_at: <%= Date.today %>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
one:
|
2
|
+
name: 'John Doe'
|
3
|
+
created_at: <%= Date.today %>
|
4
|
+
updated_at: <%= Date.today %>
|
5
|
+
two:
|
6
|
+
name: 'Bar Baz'
|
7
|
+
created_at: <%= Date.today %>
|
8
|
+
updated_at: <%= Date.today %>
|
9
|
+
three:
|
10
|
+
name: 'Katy Lopez'
|
11
|
+
created_at: <%= Date.today %>
|
12
|
+
updated_at: <%= Date.today %>
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class ActionExclutionTest < ViewCase
|
4
|
+
fixtures :all
|
5
|
+
|
6
|
+
setup :sign_in
|
7
|
+
def test_mugs_index_excluding_every_action_but_index
|
8
|
+
visit adminpanel.mugs_path
|
9
|
+
assert_no_link 'Crear Taza'
|
10
|
+
assert_no_selector 'i.fa.fa-pencil'
|
11
|
+
assert_no_selector 'i.fa.fa-search-plus'
|
12
|
+
assert_no_selector 'i.fa.fa-facebook'
|
13
|
+
end
|
14
|
+
|
15
|
+
protected
|
16
|
+
def sign_in
|
17
|
+
visit adminpanel.signin_path
|
18
|
+
login
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'adminpanel/product'
|
3
|
+
require 'adminpanel/category'
|
4
|
+
|
5
|
+
class BelongsToCategoryModalTest < ViewCase
|
6
|
+
|
7
|
+
setup :visit_adminpanel_new_department_path
|
8
|
+
teardown :teardown
|
9
|
+
|
10
|
+
def test_add_remote_category_link_exist
|
11
|
+
assert_link('Agregar Categoria')
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_adding_a_remote_category_with_invalid_information
|
15
|
+
trigger_modal 'Agregar Categoria'
|
16
|
+
assert_equal 'Agregar Categoria', find('#modal-title').text
|
17
|
+
submit_modal 'Agregar Categoria'
|
18
|
+
assert_content( I18n.t('errors', model: 'Categoria', count: 1) )
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_adding_a_remote_category_with_valid_information
|
22
|
+
trigger_modal 'Agregar Categoria'
|
23
|
+
fill_in 'category_name', with: 'remote product'
|
24
|
+
submit_modal 'Agregar Categoria'
|
25
|
+
assert_xpath("//option[contains(text(), 'remote product' )]")
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def visit_adminpanel_new_department_path
|
31
|
+
visit adminpanel.signin_path
|
32
|
+
login
|
33
|
+
visit adminpanel.new_department_path
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'adminpanel/product'
|
3
|
+
require 'adminpanel/category'
|
4
|
+
|
5
|
+
class BelongsToNonCategoryModalTest < ViewCase
|
6
|
+
|
7
|
+
setup :visit_adminpanel_new_salesman_path
|
8
|
+
teardown :teardown
|
9
|
+
|
10
|
+
def test_add_remote_product_link_exist
|
11
|
+
assert_link('Agregar Producto')
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_adding_a_remote_product_with_invalid_information
|
15
|
+
trigger_modal 'Agregar Producto'
|
16
|
+
assert_equal 'Agregar Producto', find('#modal-title').text
|
17
|
+
submit_modal 'Agregar Producto'
|
18
|
+
assert_content( I18n.t('errors', model: 'Producto', count: 3) )
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_adding_a_remote_product_with_valid_information
|
22
|
+
trigger_modal 'Agregar Producto'
|
23
|
+
fill_in 'product_name', with: 'remote product'
|
24
|
+
fill_in 'product_description', with: 'remote description lorem'
|
25
|
+
fill_in 'product_price', with: '12.3'
|
26
|
+
submit_modal 'Agregar Producto'
|
27
|
+
# remote_product = Adminpanel::Product.last
|
28
|
+
# assert_equal 'remote_product', remote_product.name
|
29
|
+
# assert_equal 'remote descrpition lorem', remote_product.description
|
30
|
+
# assert_equal '12.3', remote_product.price
|
31
|
+
assert_xpath("//option[contains(text(), 'remote product' )]")
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def visit_adminpanel_new_salesman_path
|
37
|
+
visit adminpanel.signin_path
|
38
|
+
login
|
39
|
+
visit adminpanel.new_salesman_path
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class EditTest < ViewCase
|
4
|
+
fixtures :all
|
5
|
+
|
6
|
+
setup :visit_adminpanel_new_product_path
|
7
|
+
teardown :teardown
|
8
|
+
|
9
|
+
def test_shared_new_page_messages
|
10
|
+
assert_button('Guardar Producto')
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_submitting_with_same_information
|
14
|
+
click_button('Guardar Producto')
|
15
|
+
assert_content( I18n.t('action.save_success') )
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_submitting_with_invalid_information
|
19
|
+
fill_in 'product_name', :with => ''
|
20
|
+
fill_in 'product_price', :with => ''
|
21
|
+
click_button('Guardar Producto')
|
22
|
+
assert_content('Producto no pudo guardarse debido a 2 errores')
|
23
|
+
saved_product = Adminpanel::Product.last
|
24
|
+
end
|
25
|
+
|
26
|
+
protected
|
27
|
+
def visit_adminpanel_new_product_path
|
28
|
+
visit adminpanel.signin_path
|
29
|
+
login
|
30
|
+
visit adminpanel.edit_product_path(adminpanel_products(:first))
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'adminpanel/product'
|
3
|
+
require 'adminpanel/category'
|
4
|
+
|
5
|
+
class HasManyThroughCategoryModalTest < ViewCase
|
6
|
+
|
7
|
+
setup :visit_adminpanel_new_product_path
|
8
|
+
teardown :teardown
|
9
|
+
|
10
|
+
def test_add_remote_product_link_exist
|
11
|
+
assert_link('Agregar Categoria')
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_adding_a_remote_product_with_invalid_information
|
15
|
+
trigger_modal 'Agregar Categoria'
|
16
|
+
assert_equal 'Agregar Categoria', find('#modal-title').text
|
17
|
+
submit_modal 'Agregar Categoria'
|
18
|
+
assert_content( I18n.t('errors', model: 'Categoria', count: 1) )
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_adding_a_remote_product_with_valid_information
|
22
|
+
trigger_modal 'Agregar Categoria'
|
23
|
+
fill_in 'category_name', with: 'remote option of category'
|
24
|
+
submit_modal 'Agregar Categoria'
|
25
|
+
assert_content('remote option of category')
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def visit_adminpanel_new_product_path
|
31
|
+
visit adminpanel.signin_path
|
32
|
+
login
|
33
|
+
visit adminpanel.new_product_path
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'adminpanel/product'
|
3
|
+
require 'adminpanel/category'
|
4
|
+
class HasManyThroughNonCategoryModalTest < ViewCase
|
5
|
+
|
6
|
+
setup :visit_adminpanel_new_department_path
|
7
|
+
teardown :teardown
|
8
|
+
|
9
|
+
def test_add_remote_product_link_exist
|
10
|
+
assert_link('Agregar Producto')
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_adding_a_remote_product_with_invalid_information
|
14
|
+
trigger_modal 'Agregar Producto'
|
15
|
+
assert_equal 'Agregar Producto', find('#modal-title').text
|
16
|
+
submit_modal 'Agregar Producto'
|
17
|
+
assert_content( I18n.t('errors', model: 'Producto', count: 3) )
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_adding_a_remote_product_with_valid_information
|
21
|
+
trigger_modal 'Agregar Producto'
|
22
|
+
fill_in 'product_name', with: 'remote checkbox of product'
|
23
|
+
fill_in 'product_description', with: 'remote description lorem'
|
24
|
+
fill_in 'product_price', with: '12.3'
|
25
|
+
submit_modal 'Agregar Producto'
|
26
|
+
assert_content('remote checkbox of product')
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def visit_adminpanel_new_department_path
|
33
|
+
visit adminpanel.signin_path
|
34
|
+
login
|
35
|
+
visit adminpanel.new_department_path
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class IndexTest < ViewCase
|
4
|
+
fixtures :all
|
5
|
+
|
6
|
+
setup :sign_in
|
7
|
+
def test_index_buttons_of_resources
|
8
|
+
visit adminpanel.salesmen_path
|
9
|
+
assert_link 'Crear Agente'
|
10
|
+
assert_selector 'i.fa.fa-pencil'
|
11
|
+
assert_selector 'i.fa.fa-search-plus'
|
12
|
+
assert_selector 'i.fa.fa-facebook'
|
13
|
+
end
|
14
|
+
|
15
|
+
protected
|
16
|
+
def sign_in
|
17
|
+
visit adminpanel.signin_path
|
18
|
+
login
|
19
|
+
end
|
20
|
+
end
|