active_scaffold 3.4.43 → 3.5.0
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/CHANGELOG +39 -0
- data/{LICENSE → LICENSE.md} +1 -1
- data/README.md +27 -19
- data/app/assets/javascripts/active_scaffold.js.erb +1 -1
- data/app/assets/javascripts/jquery/active_scaffold.js +95 -43
- data/app/assets/javascripts/jquery/tiny_mce_bridge.js +30 -6
- data/app/assets/javascripts/prototype/tiny_mce_bridge.js +11 -1
- data/app/assets/stylesheets/active_scaffold_colors.scss +2 -2
- data/app/assets/stylesheets/active_scaffold_layout.css +36 -28
- data/app/views/active_scaffold_overrides/_base_form.html.erb +2 -3
- data/app/views/active_scaffold_overrides/_field_search.html.erb +8 -7
- data/app/views/active_scaffold_overrides/_form_association.html.erb +9 -9
- data/app/views/active_scaffold_overrides/_form_association_footer.html.erb +6 -6
- data/app/views/active_scaffold_overrides/_form_association_record.html.erb +52 -50
- data/app/views/active_scaffold_overrides/_horizontal_subform.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_horizontal_subform_header.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_human_conditions.html.erb +3 -1
- data/app/views/active_scaffold_overrides/_list_calculations.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_list_column_headings.html.erb +2 -0
- data/app/views/active_scaffold_overrides/_list_messages.html.erb +5 -3
- data/app/views/active_scaffold_overrides/_list_record.html.erb +3 -1
- data/app/views/active_scaffold_overrides/_list_with_header.html.erb +9 -9
- data/app/views/active_scaffold_overrides/_messages.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_refresh_list.js.erb +18 -10
- data/app/views/active_scaffold_overrides/_render_field.js.erb +3 -3
- data/app/views/active_scaffold_overrides/_search.html.erb +7 -6
- data/app/views/active_scaffold_overrides/_show_actions.html.erb +14 -0
- data/app/views/active_scaffold_overrides/_show_association.html.erb +1 -1
- data/app/views/active_scaffold_overrides/_update_actions.html.erb +6 -2
- data/app/views/active_scaffold_overrides/_update_column.js.erb +1 -1
- data/app/views/active_scaffold_overrides/_update_form.html.erb +1 -1
- data/app/views/active_scaffold_overrides/destroy.js.erb +2 -3
- data/app/views/active_scaffold_overrides/edit_associated.js.erb +4 -3
- data/app/views/active_scaffold_overrides/on_action_update.js.erb +5 -3
- data/app/views/active_scaffold_overrides/on_create.js.erb +4 -4
- data/app/views/active_scaffold_overrides/on_update.js.erb +6 -6
- data/app/views/active_scaffold_overrides/show.html.erb +6 -0
- data/app/views/active_scaffold_overrides/update.html.erb +1 -1
- data/app/views/active_scaffold_overrides/update_column.js.erb +1 -1
- data/config/brakeman.ignore +26 -0
- data/config/brakeman.yml +3 -0
- data/config/i18n-tasks.yml +121 -0
- data/config/locales/de.yml +81 -70
- data/config/locales/en.yml +83 -74
- data/config/locales/es.yml +82 -73
- data/config/locales/fr.yml +86 -75
- data/config/locales/hu.yml +81 -70
- data/config/locales/ja.yml +71 -60
- data/config/locales/ru.yml +85 -74
- data/lib/active_scaffold.rb +3 -0
- data/lib/active_scaffold/actions/common_search.rb +11 -7
- data/lib/active_scaffold/actions/core.rb +119 -47
- data/lib/active_scaffold/actions/create.rb +1 -1
- data/lib/active_scaffold/actions/delete.rb +11 -8
- data/lib/active_scaffold/actions/field_search.rb +104 -6
- data/lib/active_scaffold/actions/list.rb +25 -21
- data/lib/active_scaffold/actions/mark.rb +12 -4
- data/lib/active_scaffold/actions/nested.rb +26 -26
- data/lib/active_scaffold/actions/search.rb +2 -2
- data/lib/active_scaffold/actions/show.rb +4 -5
- data/lib/active_scaffold/actions/subform.rb +9 -7
- data/lib/active_scaffold/actions/update.rb +20 -13
- data/lib/active_scaffold/active_record_permissions.rb +24 -5
- data/lib/active_scaffold/attribute_params.rb +68 -49
- data/lib/active_scaffold/bridges.rb +1 -1
- data/lib/active_scaffold/bridges/ancestry/ancestry_bridge.rb +15 -19
- data/lib/active_scaffold/bridges/bitfields.rb +1 -1
- data/lib/active_scaffold/bridges/bitfields/bitfields_bridge.rb +10 -14
- data/lib/active_scaffold/bridges/calendar_date_select.rb +0 -7
- data/lib/active_scaffold/bridges/calendar_date_select/as_cds_bridge.rb +19 -22
- data/lib/active_scaffold/bridges/cancan.rb +4 -3
- data/lib/active_scaffold/bridges/cancan/cancan_bridge.rb +11 -21
- data/lib/active_scaffold/bridges/carrierwave.rb +2 -1
- data/lib/active_scaffold/bridges/carrierwave/carrierwave_bridge.rb +2 -6
- data/lib/active_scaffold/bridges/carrierwave/form_ui.rb +6 -39
- data/lib/active_scaffold/bridges/carrierwave/list_ui.rb +1 -1
- data/lib/active_scaffold/bridges/chosen.rb +4 -1
- data/lib/active_scaffold/bridges/chosen/helpers.rb +3 -2
- data/lib/active_scaffold/bridges/country_select/country_select_bridge_helper.rb +2 -2
- data/lib/active_scaffold/bridges/date_picker.rb +3 -0
- data/lib/active_scaffold/bridges/date_picker/ext.rb +43 -38
- data/lib/active_scaffold/bridges/date_picker/helper.rb +24 -23
- data/lib/active_scaffold/bridges/dragonfly.rb +1 -1
- data/lib/active_scaffold/bridges/dragonfly/dragonfly_bridge.rb +3 -7
- data/lib/active_scaffold/bridges/dragonfly/form_ui.rb +3 -25
- data/lib/active_scaffold/bridges/dragonfly/list_ui.rb +2 -2
- data/lib/active_scaffold/bridges/file_column/as_file_column_bridge.rb +6 -8
- data/lib/active_scaffold/bridges/file_column/file_column_helpers.rb +1 -1
- data/lib/active_scaffold/bridges/file_column/form_ui.rb +0 -2
- data/lib/active_scaffold/bridges/file_column/list_ui.rb +2 -1
- data/lib/active_scaffold/bridges/file_column/test/test_helper.rb +1 -1
- data/lib/active_scaffold/bridges/paper_trail/actions.rb +1 -1
- data/lib/active_scaffold/bridges/paper_trail/helper.rb +1 -2
- data/lib/active_scaffold/bridges/paper_trail/paper_trail_bridge.rb +3 -7
- data/lib/active_scaffold/bridges/paperclip.rb +1 -1
- data/lib/active_scaffold/bridges/paperclip/form_ui.rb +3 -28
- data/lib/active_scaffold/bridges/paperclip/list_ui.rb +1 -1
- data/lib/active_scaffold/bridges/paperclip/paperclip_bridge.rb +3 -7
- data/lib/active_scaffold/bridges/record_select.rb +2 -0
- data/lib/active_scaffold/bridges/record_select/helpers.rb +14 -18
- data/lib/active_scaffold/bridges/semantic_attributes/column.rb +4 -8
- data/lib/active_scaffold/bridges/shared/date_bridge.rb +20 -20
- data/lib/active_scaffold/bridges/tiny_mce/helpers.rb +7 -22
- data/lib/active_scaffold/bridges/usa_state_select/usa_state_select_helper.rb +14 -14
- data/lib/active_scaffold/config/base.rb +9 -6
- data/lib/active_scaffold/config/core.rb +30 -21
- data/lib/active_scaffold/config/create.rb +2 -1
- data/lib/active_scaffold/config/delete.rb +2 -2
- data/lib/active_scaffold/config/field_search.rb +9 -3
- data/lib/active_scaffold/config/form.rb +4 -4
- data/lib/active_scaffold/config/list.rb +27 -23
- data/lib/active_scaffold/config/nested.rb +4 -4
- data/lib/active_scaffold/config/search.rb +6 -6
- data/lib/active_scaffold/config/show.rb +11 -1
- data/lib/active_scaffold/config/subform.rb +1 -1
- data/lib/active_scaffold/config/update.rb +4 -2
- data/lib/active_scaffold/constraints.rb +39 -36
- data/lib/active_scaffold/core.rb +36 -15
- data/lib/active_scaffold/data_structures/action_columns.rb +14 -9
- data/lib/active_scaffold/data_structures/action_link.rb +4 -5
- data/lib/active_scaffold/data_structures/action_links.rb +5 -4
- data/lib/active_scaffold/data_structures/actions.rb +2 -2
- data/lib/active_scaffold/data_structures/association.rb +8 -0
- data/lib/active_scaffold/data_structures/association/abstract.rb +147 -0
- data/lib/active_scaffold/data_structures/association/active_mongoid.rb +42 -0
- data/lib/active_scaffold/data_structures/association/active_record.rb +94 -0
- data/lib/active_scaffold/data_structures/association/mongoid.rb +45 -0
- data/lib/active_scaffold/data_structures/bridge.rb +3 -6
- data/lib/active_scaffold/data_structures/column.rb +100 -82
- data/lib/active_scaffold/data_structures/columns.rb +21 -3
- data/lib/active_scaffold/data_structures/nested_info.rb +22 -37
- data/lib/active_scaffold/data_structures/set.rb +4 -4
- data/lib/active_scaffold/data_structures/sorting.rb +29 -15
- data/lib/active_scaffold/engine.rb +3 -1
- data/lib/active_scaffold/extensions/action_controller_rendering.rb +10 -5
- data/lib/active_scaffold/extensions/action_view_rendering.rb +65 -59
- data/lib/active_scaffold/extensions/left_outer_joins.rb +48 -53
- data/lib/active_scaffold/extensions/localize.rb +3 -4
- data/lib/active_scaffold/extensions/name_option_for_datetime.rb +7 -11
- data/lib/active_scaffold/extensions/paginator_extensions.rb +20 -18
- data/lib/active_scaffold/extensions/routing_mapper.rb +104 -40
- data/lib/active_scaffold/extensions/to_label.rb +1 -1
- data/lib/active_scaffold/extensions/unsaved_associated.rb +4 -13
- data/lib/active_scaffold/extensions/unsaved_record.rb +12 -1
- data/lib/active_scaffold/finder.rb +200 -134
- data/lib/active_scaffold/helpers/action_link_helpers.rb +398 -0
- data/lib/active_scaffold/helpers/association_helpers.rb +12 -30
- data/lib/active_scaffold/helpers/controller_helpers.rb +74 -24
- data/lib/active_scaffold/helpers/form_column_helpers.rb +205 -112
- data/lib/active_scaffold/helpers/human_condition_helpers.rb +21 -11
- data/lib/active_scaffold/helpers/id_helpers.rb +1 -1
- data/lib/active_scaffold/helpers/list_column_helpers.rb +117 -39
- data/lib/active_scaffold/helpers/pagination_helpers.rb +11 -14
- data/lib/active_scaffold/helpers/search_column_helpers.rb +69 -32
- data/lib/active_scaffold/helpers/show_column_helpers.rb +9 -3
- data/lib/active_scaffold/helpers/view_helpers.rb +41 -426
- data/lib/active_scaffold/orm_checks.rb +109 -0
- data/lib/active_scaffold/paginator.rb +1 -1
- data/lib/active_scaffold/responds_to_parent.rb +12 -10
- data/lib/active_scaffold/tableless.rb +81 -43
- data/lib/active_scaffold/version.rb +2 -2
- data/lib/generators/active_scaffold/controller_generator.rb +49 -0
- data/lib/generators/active_scaffold/install_generator.rb +45 -0
- data/lib/generators/active_scaffold/resource_generator.rb +56 -0
- data/lib/generators/{active_scaffold_controller/templates → templates}/controller.rb +0 -0
- data/lib/generators/{active_scaffold_controller/templates → templates}/helper.rb +0 -0
- data/shoulda_macros/macros.rb +3 -3
- data/test/active_scaffold_config_mock.rb +33 -0
- data/test/bridges/bridge_test.rb +9 -9
- data/test/bridges/date_picker_test.rb +3 -1
- data/test/bridges/paper_trail_test.rb +2 -3
- data/test/bridges/paperclip_test.rb +21 -10
- data/test/bridges/tiny_mce_test.rb +20 -21
- data/test/class_with_finder.rb +42 -0
- data/test/company.rb +6 -4
- data/test/config/core_test.rb +1 -1
- data/test/config/create_test.rb +1 -1
- data/test/config/list_test.rb +3 -3
- data/test/config/update_test.rb +3 -3
- data/test/data_structures/action_columns_test.rb +3 -3
- data/test/data_structures/association_column_test.rb +5 -5
- data/test/data_structures/column_test.rb +14 -14
- data/test/data_structures/columns_test.rb +2 -2
- data/test/data_structures/set_test.rb +2 -2
- data/test/data_structures/sorting_test.rb +6 -4
- data/test/extensions/active_record_test.rb +1 -1
- data/test/extensions/routing_mapper_test.rb +64 -13
- data/test/helpers/form_column_helpers_test.rb +6 -6
- data/test/helpers/list_column_helpers_test.rb +9 -5
- data/test/helpers/pagination_helpers_test.rb +1 -0
- data/test/misc/active_record_permissions_test.rb +18 -1
- data/test/misc/attribute_params_test.rb +26 -17
- data/test/misc/calculation_test.rb +8 -31
- data/test/misc/configurable_test.rb +3 -2
- data/test/misc/constraints_test.rb +33 -22
- data/test/misc/convert_numbers_format_test.rb +28 -10
- data/test/misc/finder_test.rb +6 -29
- data/test/misc/parse_datetime_test.rb +160 -0
- data/test/misc/render_test.rb +1 -1
- data/test/misc/tableless_test.rb +24 -0
- data/test/mock_app/app/models/building.rb +2 -1
- data/test/mock_app/config.ru +1 -1
- data/test/mock_app/config/environments/test.rb +1 -1
- data/test/mock_app/config/routes.rb +11 -3
- data/test/model_stub.rb +11 -6
- data/test/run_all.rb +1 -1
- data/test/test_helper.rb +19 -4
- metadata +42 -23
- data/lib/active_scaffold/data_structures/error_message.rb +0 -22
- data/lib/active_scaffold/extensions/reverse_associations.rb +0 -119
- data/lib/generators/active_scaffold/USAGE +0 -29
- data/lib/generators/active_scaffold/active_scaffold_generator.rb +0 -21
- data/lib/generators/active_scaffold_controller/USAGE +0 -19
- data/lib/generators/active_scaffold_controller/active_scaffold_controller_generator.rb +0 -29
- data/test/data_structures/error_message_test.rb +0 -25
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'rails/generators/rails/resource/resource_generator'
|
2
|
+
# require 'generators/active_scaffold_controller/active_scaffold_controller_generator'
|
3
|
+
|
4
|
+
module ActiveScaffold
|
5
|
+
module Generators
|
6
|
+
class ResourceGenerator < Rails::Generators::ResourceGenerator # metagenerator
|
7
|
+
remove_hook_for :resource_controller
|
8
|
+
remove_hook_for :resource_route
|
9
|
+
remove_class_option :actions
|
10
|
+
|
11
|
+
desc <<-DESC.strip_heredoc
|
12
|
+
Description:
|
13
|
+
Scaffolds an entire resource, from model and migration to controller,
|
14
|
+
along with a full test suite and configured to use active_scaffold.
|
15
|
+
The resource is ready to use as a starting point for your RESTful,
|
16
|
+
resource-oriented application.
|
17
|
+
|
18
|
+
Pass the name of the model (in singular form), either CamelCased or
|
19
|
+
under_scored, as the first argument, and an optional list of attribute
|
20
|
+
pairs.
|
21
|
+
|
22
|
+
Attribute pairs are field:type arguments specifying the
|
23
|
+
model's attributes. Timestamps are added by default, so you don't have to
|
24
|
+
specify them by hand as 'created_at:datetime updated_at:datetime'.
|
25
|
+
|
26
|
+
You don't have to think up every attribute up front, but it helps to
|
27
|
+
sketch out a few so you can start working with the resource immediately.
|
28
|
+
|
29
|
+
For example, 'active_scaffold post title:string body:text published:boolean'
|
30
|
+
gives you a model with those three attributes, a controller configured to use active_scaffold,
|
31
|
+
as well as a resources :posts with additional active_scaffold routes
|
32
|
+
declaration in config/routes.rb.
|
33
|
+
|
34
|
+
If you want to remove all the generated files, run
|
35
|
+
'rails destroy active_scaffold ModelName'.
|
36
|
+
|
37
|
+
Examples:
|
38
|
+
`rails generate active_scaffold:resource post`
|
39
|
+
`rails generate active_scaffold:resource post title:string body:text published:boolean`
|
40
|
+
`rails generate active_scaffold:resource purchase order_id:integer amount:decimal`
|
41
|
+
DESC
|
42
|
+
|
43
|
+
def add_resource_route
|
44
|
+
routing_code = class_path.collect { |namespace| "namespace :#{namespace} do " }.join(' ')
|
45
|
+
routing_code << "resources :#{file_name.pluralize}, concerns: :active_scaffold"
|
46
|
+
routing_code << ' end' * class_path.size
|
47
|
+
log :route, routing_code
|
48
|
+
in_root do
|
49
|
+
inject_into_file 'config/routes.rb', " #{routing_code}\n", {after: /^[ ]*concern :active_scaffold,.*\n/, verbose: false, force: true}
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
invoke 'active_scaffold:controller'
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
File without changes
|
File without changes
|
data/shoulda_macros/macros.rb
CHANGED
@@ -61,7 +61,7 @@ class ActiveSupport::TestCase
|
|
61
61
|
def self.should_render_as_form_hidden(column_name)
|
62
62
|
before_block = lambda do
|
63
63
|
@rendered_columns = []
|
64
|
-
@controller.view_context_class.any_instance.expects(:
|
64
|
+
@controller.view_context_class.any_instance.expects(:hidden_field).at_least_once.with do |_, method, _|
|
65
65
|
@rendered_columns << method
|
66
66
|
true
|
67
67
|
end
|
@@ -125,8 +125,8 @@ class ActiveSupport::TestCase
|
|
125
125
|
script = block ? instance_eval(&block) : /.*/
|
126
126
|
script = script.is_a?(Regexp) ? script.source : Regexp.quote(script)
|
127
127
|
script = script.gsub('\n', '\\\\\\n')
|
128
|
-
|
129
|
-
|
128
|
+
.gsub(/['"]/, '\\\\\\\\\&')
|
129
|
+
.gsub('</script>', '</scr"+"ipt>')
|
130
130
|
assert_select 'script[type=text/javascript]', Regexp.new('.*' + Regexp.quote("with(window.parent) { setTimeout(function() { window.eval('") + script + Regexp.quote("'); if (typeof(loc) !== 'undefined') loc.replace('about:blank'); }, 1) };") + '.*')
|
131
131
|
end
|
132
132
|
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module ActiveScaffoldConfigMock
|
2
|
+
module ClassMethods
|
3
|
+
class Config
|
4
|
+
def active_record?
|
5
|
+
@type == :active_record
|
6
|
+
end
|
7
|
+
|
8
|
+
def mongoid?
|
9
|
+
@type == :mongoid
|
10
|
+
end
|
11
|
+
|
12
|
+
def initialize(type = :active_record)
|
13
|
+
@type = type
|
14
|
+
end
|
15
|
+
|
16
|
+
def primary_key
|
17
|
+
mongoid? ? '_id' : 'id'
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def active_scaffold_config
|
22
|
+
@active_scaffold_config ||= Config.new
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.included(klass)
|
27
|
+
klass.extend ClassMethods
|
28
|
+
end
|
29
|
+
|
30
|
+
def active_scaffold_config
|
31
|
+
self.class.active_scaffold_config
|
32
|
+
end
|
33
|
+
end
|
data/test/bridges/bridge_test.rb
CHANGED
@@ -5,22 +5,21 @@ class BridgeTest < MiniTest::Test
|
|
5
5
|
@const_store = {}
|
6
6
|
end
|
7
7
|
|
8
|
-
def teardown
|
9
|
-
end
|
8
|
+
def teardown; end
|
10
9
|
|
11
10
|
def test__shouldnt_throw_errors
|
12
11
|
ActiveScaffold::Bridges.run_all
|
13
12
|
end
|
14
13
|
|
15
14
|
def test__cds_bridge
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
15
|
+
with_js_framework :prototype do
|
16
|
+
ConstMocker.mock('CalendarDateSelect') do |cm|
|
17
|
+
cm.remove
|
18
|
+
assert(!bridge_will_be_installed('CalendarDateSelect'))
|
19
|
+
cm.declare
|
20
|
+
assert(bridge_will_be_installed('CalendarDateSelect'))
|
21
|
+
end
|
22
22
|
end
|
23
|
-
ActiveScaffold.js_framework = js
|
24
23
|
end
|
25
24
|
|
26
25
|
def test__file_column_bridge
|
@@ -54,6 +53,7 @@ class BridgeTest < MiniTest::Test
|
|
54
53
|
end
|
55
54
|
end
|
56
55
|
end
|
56
|
+
ActiveScaffold.js_framework = nil
|
57
57
|
end
|
58
58
|
|
59
59
|
def test__semantic_attributes_bridge
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'test_helper'
|
2
|
+
require 'active_scaffold_config_mock'
|
2
3
|
require File.join(File.dirname(__FILE__), '../../lib/active_scaffold/bridges/date_picker/ext')
|
3
4
|
# require File.join(File.dirname(__FILE__), '../../lib/active_scaffold/bridges/date_picker/helper')
|
4
5
|
|
@@ -9,13 +10,14 @@ class DatePickerTest < ActionView::TestCase
|
|
9
10
|
|
10
11
|
def setup
|
11
12
|
@controller.class.class_eval do
|
13
|
+
include ActiveScaffoldConfigMock
|
12
14
|
include ActiveScaffold::Finder
|
13
15
|
end
|
14
16
|
end
|
15
17
|
|
16
18
|
def test_set_form_ui
|
17
19
|
config = ActiveScaffold::Config::Core.new(:company)
|
18
|
-
|
20
|
+
assert_nil config.columns[:name].form_ui, 'form_ui for name'
|
19
21
|
assert_equal :date_picker, config.columns[:date].form_ui, 'form_ui for date'
|
20
22
|
assert_equal :datetime_picker, config.columns[:datetime].form_ui, 'form_ui for datetime'
|
21
23
|
end
|
@@ -7,9 +7,8 @@ class PaperTrailTest < ActionController::TestCase
|
|
7
7
|
def test_deleted_route
|
8
8
|
with_routing do |map|
|
9
9
|
map.draw do
|
10
|
-
|
11
|
-
|
12
|
-
end
|
10
|
+
concern :active_scaffold, ActiveScaffold::Routing::Basic.new
|
11
|
+
resources :addresses, concerns: :active_scaffold
|
13
12
|
end
|
14
13
|
assert_routing '/addresses/deleted', :controller => 'addresses', :action => 'deleted'
|
15
14
|
end
|
@@ -25,7 +25,7 @@ class PaperclipTest < ActionView::TestCase
|
|
25
25
|
assert config.update.multipart?
|
26
26
|
assert_equal :paperclip, config.columns[:logo].form_ui
|
27
27
|
assert_equal [:delete_logo], config.columns[:logo].params.to_a
|
28
|
-
%w
|
28
|
+
%w[logo_file_name logo_file_size logo_updated_at logo_content_type].each do |attr|
|
29
29
|
refute config.columns._inheritable.include?(attr.to_sym)
|
30
30
|
end
|
31
31
|
assert Company.method_defined?(:delete_logo)
|
@@ -55,16 +55,27 @@ class PaperclipTest < ActionView::TestCase
|
|
55
55
|
end
|
56
56
|
|
57
57
|
def test_form_ui
|
58
|
-
|
59
|
-
|
60
|
-
|
58
|
+
with_js_framework :jquery do
|
59
|
+
config = PaperclipCore.new(:company)
|
60
|
+
@record = Company.new
|
61
61
|
|
62
|
-
|
63
|
-
|
64
|
-
|
62
|
+
@record.stubs(:logo).returns(stub(:file? => true, :original_filename => 'file', :url => '/system/file', :styles => Company.attachment_definitions[:logo]))
|
63
|
+
quote = '''
|
64
|
+
click_js = "jQuery(this).prev().val(#{quote}true#{quote}); jQuery(this).parent().hide().next().show(); return false;"
|
65
|
+
change_js = "jQuery(this).parents(#{quote}div.paperclip_controls#{quote}).find(#{quote}input.remove_file#{quote}).val(#{quote}false#{quote}); return false;"
|
66
|
+
template = [
|
67
|
+
'<div class="paperclip_controls"><div>',
|
68
|
+
'<a href="/system/file" target="_blank">file</a> | ',
|
69
|
+
'<input name="record[delete_logo]" type="hidden" class="remove_file" id="record_delete_logo" value="false" />',
|
70
|
+
%(<a href="#" onclick="#{click_js}">Remove or Replace file</a>),
|
71
|
+
'</div><div style="display: none">',
|
72
|
+
%(<input name="record[logo]" class="text-input" autocomplete="off" type="file" id="record_logo" onchange="#{change_js}" />),
|
73
|
+
'</div></div>'
|
74
|
+
].join
|
75
|
+
assert_dom_equal template, active_scaffold_input_paperclip(config.columns[:logo], :name => 'record[logo]', :id => 'record_logo', :object => @record)
|
65
76
|
|
66
|
-
|
67
|
-
|
68
|
-
|
77
|
+
@record.stubs(:logo).returns(stub(:file? => false))
|
78
|
+
assert_dom_equal '<input name="record[logo]" class="text-input" autocomplete="off" type="file" id="record_logo" />', active_scaffold_input_paperclip(config.columns[:logo], :name => 'record[logo]', :id => 'record_logo', :object => @record)
|
79
|
+
end
|
69
80
|
end
|
70
81
|
end
|
@@ -8,44 +8,43 @@ class TinyMceTest < ActionView::TestCase
|
|
8
8
|
# configuration options from tinymce.yml
|
9
9
|
#
|
10
10
|
# [1]: https://github.com/spohlenz/tinymce-rails/blob/master/lib/tinymce/rails/helper.rb#L37
|
11
|
-
def tinymce_configuration(config
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
11
|
+
def tinymce_configuration(config = :default)
|
12
|
+
case config
|
13
|
+
when :default
|
14
|
+
Class.new do
|
15
|
+
def options
|
16
|
+
{theme: 'modern'}
|
17
|
+
end
|
18
|
+
end.new
|
19
|
+
when :alternate
|
20
|
+
Class.new do
|
21
|
+
def options
|
22
|
+
{theme: 'alternate', toolbar: 'undo redo | format'}
|
23
|
+
end
|
24
|
+
end.new
|
25
|
+
end
|
26
26
|
end
|
27
27
|
|
28
28
|
def test_includes
|
29
29
|
ActiveScaffold::Bridges::TinyMce.expects(:install?).returns(true)
|
30
|
-
|
31
|
-
|
30
|
+
with_js_framework :jquery do
|
31
|
+
assert ActiveScaffold::Bridges.all_javascripts.include?('tinymce-jquery')
|
32
|
+
end
|
32
33
|
end
|
33
34
|
|
34
35
|
def test_form_ui
|
35
36
|
config = ActiveScaffold::Config::Core.new(:company)
|
36
37
|
record = Company.new
|
37
|
-
expects(:request).returns(stub(:xhr? => true))
|
38
38
|
|
39
|
-
assert_dom_equal %
|
39
|
+
assert_dom_equal %(<textarea name=\"record[name]\" class=\"name-input mceEditor\" id=\"record_name\" data-tinymce=\"{"theme":"modern"}\">\n</textarea>), active_scaffold_input_text_editor(config.columns[:name], :name => 'record[name]', :id => 'record_name', :class => 'name-input', :object => record)
|
40
40
|
end
|
41
41
|
|
42
42
|
def test_form_ui_alternate
|
43
43
|
config = ActiveScaffold::Config::Core.new(:company)
|
44
44
|
record = Company.new
|
45
|
-
expects(:request).returns(stub(:xhr? => true))
|
46
45
|
config.columns[:name].options[:tinymce_config] = :alternate
|
47
46
|
|
48
|
-
assert_dom_equal %
|
47
|
+
assert_dom_equal %(<textarea name=\"record[name]\" class=\"name-input mceEditor\" id=\"record_name\" data-tinymce=\"{"theme":"alternate","toolbar":"undo redo | format"}\">\n</textarea>), active_scaffold_input_tinymce(config.columns[:name], :name => 'record[name]', :id => 'record_name', :class => 'name-input', :object => record)
|
49
48
|
end
|
50
49
|
|
51
50
|
protected
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'active_scaffold_config_mock'
|
2
|
+
|
3
|
+
class ClassWithFinder
|
4
|
+
include ActiveScaffoldConfigMock
|
5
|
+
include ActiveScaffold::Finder
|
6
|
+
|
7
|
+
def active_scaffold_config
|
8
|
+
self.class.active_scaffold_config
|
9
|
+
end
|
10
|
+
|
11
|
+
def conditions_for_collection; end
|
12
|
+
|
13
|
+
def conditions_from_params; end
|
14
|
+
|
15
|
+
def conditions_from_constraints; end
|
16
|
+
|
17
|
+
def active_scaffold_embedded_params
|
18
|
+
{}
|
19
|
+
end
|
20
|
+
|
21
|
+
def params_hash(v)
|
22
|
+
v
|
23
|
+
end
|
24
|
+
|
25
|
+
def joins_for_collection; end
|
26
|
+
|
27
|
+
def custom_finder_options
|
28
|
+
{}
|
29
|
+
end
|
30
|
+
|
31
|
+
def beginning_of_chain
|
32
|
+
active_scaffold_config.model
|
33
|
+
end
|
34
|
+
|
35
|
+
def conditional_get_support?; end
|
36
|
+
|
37
|
+
def params; {}; end
|
38
|
+
|
39
|
+
def grouped_search?
|
40
|
+
false
|
41
|
+
end
|
42
|
+
end
|
data/test/company.rb
CHANGED
@@ -9,7 +9,7 @@ class Company < ActiveRecord::Base
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def self.columns_hash
|
12
|
-
{
|
12
|
+
@columns_hash ||= {
|
13
13
|
'name' => ColumnMock.new('name', nil, 'varchar(255)'),
|
14
14
|
'date' => ColumnMock.new('date', nil, 'date'),
|
15
15
|
'datetime' => ColumnMock.new('datetime', nil, 'datetime'),
|
@@ -49,16 +49,18 @@ class Company < ActiveRecord::Base
|
|
49
49
|
end
|
50
50
|
else
|
51
51
|
def self.create_reflection(*args)
|
52
|
-
ActiveRecord::Reflection.create
|
52
|
+
ActiveRecord::Reflection.create(*args)
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
56
|
def self.has_many(association_id, options = {})
|
57
57
|
create_reflection(:has_many, association_id, nil, options, self)
|
58
58
|
end
|
59
|
+
|
59
60
|
def self.has_one(association_id, options = {})
|
60
61
|
create_reflection(:has_one, association_id, nil, options, self)
|
61
62
|
end
|
63
|
+
|
62
64
|
def self.belongs_to(association_id, options = {})
|
63
65
|
create_reflection(:belongs_to, association_id, nil, options, self)
|
64
66
|
end
|
@@ -86,10 +88,10 @@ class Company < ActiveRecord::Base
|
|
86
88
|
def name_came_from_user?; end
|
87
89
|
|
88
90
|
def date
|
89
|
-
|
91
|
+
Time.zone.today
|
90
92
|
end
|
91
93
|
|
92
94
|
def datetime
|
93
|
-
Time.now
|
95
|
+
Time.zone.now
|
94
96
|
end
|
95
97
|
end
|
data/test/config/core_test.rb
CHANGED
@@ -13,7 +13,7 @@ module Config
|
|
13
13
|
def test_default_options
|
14
14
|
refute @config.add_sti_create_links?
|
15
15
|
refute @config.sti_children
|
16
|
-
assert_equal [
|
16
|
+
assert_equal %i[create list search update delete show nested subform], @config.actions.to_a
|
17
17
|
assert_equal :default, @config.frontend
|
18
18
|
assert_equal :default, @config.theme
|
19
19
|
assert_equal 'Model stub', @config.label(:count => 1)
|
data/test/config/create_test.rb
CHANGED
data/test/config/list_test.rb
CHANGED
@@ -21,7 +21,7 @@ module Config
|
|
21
21
|
assert_equal '-', @config.list.empty_field_text
|
22
22
|
assert_equal ', ', @config.list.association_join_text
|
23
23
|
assert_equal true, @config.list.pagination
|
24
|
-
|
24
|
+
assert_nil @config.list.search_partial
|
25
25
|
assert_equal :no_entries, @config.list.no_entries_message
|
26
26
|
assert_equal :filtered, @config.list.filtered_message
|
27
27
|
refute @config.list.always_show_create
|
@@ -127,8 +127,8 @@ module Config
|
|
127
127
|
end
|
128
128
|
|
129
129
|
def test_count_includes
|
130
|
-
@config.list.count_includes = [
|
131
|
-
assert_equal [
|
130
|
+
@config.list.count_includes = %i[assoc_1 assoc_2]
|
131
|
+
assert_equal %i[assoc_1 assoc_2], @config.list.count_includes
|
132
132
|
end
|
133
133
|
end
|
134
134
|
end
|
data/test/config/update_test.rb
CHANGED
@@ -7,11 +7,11 @@ module Config
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def test_copy_columns_from_create
|
10
|
-
@config.create.columns = [
|
11
|
-
assert_equal [
|
10
|
+
@config.create.columns = %i[a c d]
|
11
|
+
assert_equal %i[a d], @config.create.columns.names
|
12
12
|
@config.update.columns = @config.create.columns
|
13
13
|
@config._load_action_columns
|
14
|
-
assert_equal [
|
14
|
+
assert_equal %i[a c d], @config.update.columns.names
|
15
15
|
end
|
16
16
|
|
17
17
|
def test__params_for_columns__returns_all_params
|
@@ -4,7 +4,7 @@ require 'test_helper'
|
|
4
4
|
|
5
5
|
class ActionColumnsTest < MiniTest::Test
|
6
6
|
def setup
|
7
|
-
@columns = ActiveScaffold::DataStructures::ActionColumns.new([
|
7
|
+
@columns = ActiveScaffold::DataStructures::ActionColumns.new(%i[a b])
|
8
8
|
@columns.action = stub(:core => stub(:model_id => 'model_stub'))
|
9
9
|
end
|
10
10
|
|
@@ -35,7 +35,7 @@ class ActionColumnsTest < MiniTest::Test
|
|
35
35
|
def test_exclude_array
|
36
36
|
# exclude with a symbol
|
37
37
|
assert @columns.include?(:b)
|
38
|
-
@columns.exclude [
|
38
|
+
@columns.exclude %i[a b]
|
39
39
|
refute @columns.include?(:b)
|
40
40
|
refute @columns.include?(:a)
|
41
41
|
end
|
@@ -58,7 +58,7 @@ class ActionColumnsTest < MiniTest::Test
|
|
58
58
|
|
59
59
|
# try adding an array of columns
|
60
60
|
refute @columns.include?(:f)
|
61
|
-
@columns.add [
|
61
|
+
@columns.add %i[f g]
|
62
62
|
assert @columns.include?(:f)
|
63
63
|
assert @columns.include?(:g)
|
64
64
|
end
|