activeadmin 0.4.4 → 0.5.0.pre
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of activeadmin might be problematic. Click here for more details.
- data/.gitignore +3 -0
- data/.travis.yml +5 -0
- data/CHANGELOG.md +50 -0
- data/CONTRIBUTING.md +2 -4
- data/Gemfile +10 -4
- data/Guardfile +0 -1
- data/LICENSE +1 -1
- data/README.rdoc +19 -8
- data/Rakefile +10 -1
- data/activeadmin.gemspec +2 -1
- data/app/assets/javascripts/active_admin/application.js +3 -9
- data/app/assets/javascripts/active_admin/base.js +1 -0
- data/app/assets/javascripts/active_admin/components/jquery.aa.checkbox-toggler.js.coffee +64 -0
- data/app/assets/javascripts/active_admin/components/jquery.aa.dropdown-menu.js.coffee +107 -0
- data/app/assets/javascripts/active_admin/components/jquery.aa.popover.js.coffee +100 -0
- data/app/assets/javascripts/active_admin/components/jquery.aa.table-checkbox-toggler.js.coffee +27 -0
- data/app/assets/javascripts/active_admin/lib/namespace.js.coffee +3 -0
- data/app/assets/javascripts/active_admin/pages/application.js.coffee +13 -0
- data/app/assets/javascripts/active_admin/pages/batch_actions.js.coffee +26 -0
- data/app/assets/stylesheets/active_admin/_base.css.scss +32 -26
- data/app/assets/stylesheets/active_admin/_forms.css.scss +12 -5
- data/app/assets/stylesheets/active_admin/_header.css.scss +1 -2
- data/app/assets/stylesheets/active_admin/_typography.css.scss +1 -1
- data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +11 -0
- data/app/assets/stylesheets/active_admin/components/_buttons.scss +1 -2
- data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +151 -0
- data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +3 -3
- data/app/assets/stylesheets/active_admin/components/_popovers.css.scss +123 -0
- data/app/assets/stylesheets/active_admin/components/_status_tags.scss +1 -1
- data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +20 -27
- data/app/assets/stylesheets/active_admin/components/_tables.css.scss +1 -0
- data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +38 -36
- data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +5 -5
- data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +7 -3
- data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +19 -17
- data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +2 -2
- data/app/assets/stylesheets/active_admin/print.css.scss +290 -0
- data/app/views/active_admin/dashboard/index.html.arb +1 -1
- data/app/views/active_admin/devise/passwords/edit.html.erb +17 -14
- data/app/views/active_admin/devise/passwords/new.html.erb +4 -4
- data/app/views/active_admin/devise/sessions/new.html.erb +6 -6
- data/app/views/active_admin/devise/shared/_links.erb +6 -6
- data/app/views/active_admin/page/index.html.arb +1 -1
- data/app/views/active_admin/resource/edit.html.arb +1 -1
- data/app/views/active_admin/resource/index.csv.erb +1 -1
- data/app/views/active_admin/resource/index.html.arb +1 -1
- data/app/views/active_admin/resource/new.html.arb +1 -1
- data/app/views/active_admin/resource/show.html.arb +1 -1
- data/app/views/layouts/active_admin.html.arb +1 -1
- data/app/views/layouts/active_admin_logged_out.html.erb +2 -2
- data/cucumber.yml +1 -1
- data/docs/0-installation.md +10 -1
- data/docs/{9-custom-pages.md → 10-custom-pages.md} +0 -0
- data/docs/2-resource-customization.md +19 -1
- data/docs/3-index-pages.md +31 -0
- data/docs/4-csv-format.md +9 -0
- data/docs/6-show-screens.md +1 -1
- data/docs/9-batch-actions.md +161 -0
- data/features/dashboard.feature +31 -8
- data/features/development_reloading.feature +1 -1
- data/features/edit_page.feature +3 -3
- data/features/i18n.feature +35 -0
- data/features/index/batch_actions.feature +98 -0
- data/features/index/filters.feature +26 -0
- data/features/index/format_as_csv.feature +35 -0
- data/features/index/index_as_table.feature +30 -2
- data/features/index/index_blank_slate.feature +8 -3
- data/features/index/index_scopes.feature +130 -24
- data/features/index/page_title.feature +12 -0
- data/features/new_page.feature +3 -3
- data/features/registering_pages.feature +61 -0
- data/features/root_to.feature +17 -0
- data/features/show/default_content.feature +1 -1
- data/features/show/page_title.feature +14 -0
- data/features/sidebar_sections.feature +26 -0
- data/features/site_title.feature +1 -1
- data/features/specifying_actions.feature +7 -6
- data/features/step_definitions/action_link_steps.rb +1 -1
- data/features/step_definitions/additional_web_steps.rb +7 -1
- data/features/step_definitions/batch_action_steps.rb +94 -0
- data/features/step_definitions/configuration_steps.rb +30 -8
- data/features/step_definitions/factory_steps.rb +12 -0
- data/features/step_definitions/format_steps.rb +6 -2
- data/features/step_definitions/i18n_steps.rb +3 -0
- data/features/step_definitions/table_steps.rb +114 -0
- data/features/step_definitions/user_steps.rb +30 -4
- data/features/support/env.rb +54 -15
- data/features/support/paths.rb +2 -0
- data/features/users/logging_in.feature +1 -1
- data/features/users/logging_out.feature +2 -1
- data/features/users/resetting_password.feature +34 -0
- data/lib/active_admin.rb +46 -7
- data/lib/active_admin/application.rb +30 -15
- data/lib/active_admin/base_controller/menu.rb +3 -3
- data/lib/active_admin/batch_actions.rb +17 -0
- data/lib/active_admin/batch_actions/controller.rb +25 -0
- data/lib/active_admin/batch_actions/resource_extension.rb +126 -0
- data/lib/active_admin/batch_actions/views/batch_action_form.rb +35 -0
- data/lib/active_admin/batch_actions/views/batch_action_popover.rb +28 -0
- data/lib/active_admin/batch_actions/views/batch_action_selector.rb +63 -0
- data/lib/active_admin/batch_actions/views/selection_cells.rb +37 -0
- data/lib/active_admin/comments.rb +5 -2
- data/lib/active_admin/comments/comment.rb +4 -3
- data/lib/active_admin/comments/views/active_admin_comments.rb +5 -5
- data/lib/active_admin/component.rb +1 -18
- data/lib/active_admin/csv_builder.rb +8 -3
- data/lib/active_admin/dashboards.rb +21 -4
- data/lib/active_admin/dashboards/dashboard_controller.rb +1 -5
- data/lib/active_admin/dependency_checker.rb +1 -1
- data/lib/active_admin/dsl.rb +61 -4
- data/lib/active_admin/engine.rb +1 -1
- data/lib/active_admin/filters.rb +8 -0
- data/lib/active_admin/filters/dsl.rb +12 -0
- data/lib/active_admin/filters/forms.rb +93 -0
- data/lib/active_admin/filters/resource_extension.rb +92 -0
- data/lib/active_admin/form_builder.rb +88 -33
- data/lib/active_admin/helpers/collection.rb +23 -0
- data/lib/active_admin/helpers/optional_display.rb +1 -1
- data/lib/active_admin/inputs/filter_select_input.rb +1 -1
- data/lib/active_admin/locales/bg.yml +37 -1
- data/lib/active_admin/locales/ca.yml +36 -0
- data/lib/active_admin/locales/cs.yml +36 -0
- data/lib/active_admin/locales/da.yml +36 -0
- data/lib/active_admin/locales/de.yml +42 -0
- data/lib/active_admin/locales/en.yml +27 -2
- data/lib/active_admin/locales/es.yml +45 -4
- data/lib/active_admin/locales/fr.yml +22 -0
- data/lib/active_admin/locales/{he_il.yml → he.yml} +37 -2
- data/lib/active_admin/locales/hr.yml +49 -5
- data/lib/active_admin/locales/hu.yml +21 -0
- data/lib/active_admin/locales/it.yml +36 -1
- data/lib/active_admin/locales/ja.yml +36 -0
- data/lib/active_admin/locales/ko.yml +36 -1
- data/lib/active_admin/locales/lv.yml +28 -2
- data/lib/active_admin/locales/nl.yml +42 -1
- data/lib/active_admin/locales/no-NB.yml +15 -0
- data/lib/active_admin/locales/pl.yml +45 -1
- data/lib/active_admin/locales/pt-BR.yml +36 -1
- data/lib/active_admin/locales/ro.yml +67 -0
- data/lib/active_admin/locales/ru.yml +43 -3
- data/lib/active_admin/locales/sv-SE.yml +41 -1
- data/lib/active_admin/locales/tr.yml +80 -0
- data/lib/active_admin/locales/vi.yml +80 -0
- data/lib/active_admin/locales/{zh_cn.yml → zh-CN.yml} +42 -2
- data/lib/active_admin/locales/zh-TW.yml +36 -1
- data/lib/active_admin/menu.rb +55 -30
- data/lib/active_admin/menu_builder.rb +65 -0
- data/lib/active_admin/menu_item.rb +55 -14
- data/lib/active_admin/namespace.rb +25 -55
- data/lib/active_admin/page.rb +15 -10
- data/lib/active_admin/resource.rb +9 -0
- data/lib/active_admin/resource/action_items.rb +4 -4
- data/lib/active_admin/resource/controllers.rb +1 -1
- data/lib/active_admin/resource/menu.rb +19 -21
- data/lib/active_admin/resource/naming.rb +55 -45
- data/lib/active_admin/resource/sidebars.rb +0 -13
- data/lib/active_admin/resource_collection.rb +10 -10
- data/lib/active_admin/resource_controller.rb +5 -5
- data/lib/active_admin/resource_controller/actions.rb +2 -0
- data/lib/active_admin/resource_controller/collection.rb +13 -4
- data/lib/active_admin/resource_dsl.rb +12 -6
- data/lib/active_admin/router.rb +27 -8
- data/lib/active_admin/scope.rb +1 -0
- data/lib/active_admin/sidebar_section.rb +2 -6
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_factory.rb +18 -13
- data/lib/active_admin/view_helpers.rb +0 -2
- data/lib/active_admin/view_helpers/auto_link_helper.rb +2 -1
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +24 -25
- data/lib/active_admin/view_helpers/display_helper.rb +1 -1
- data/lib/active_admin/view_helpers/fields_for.rb +44 -0
- data/lib/active_admin/view_helpers/form_helper.rb +6 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +1 -1
- data/lib/active_admin/views/components/action_list_popover.rb +29 -0
- data/lib/active_admin/views/components/attributes_table.rb +6 -2
- data/lib/active_admin/views/components/dropdown_menu.rb +73 -0
- data/lib/active_admin/views/components/paginated_collection.rb +13 -14
- data/lib/active_admin/views/components/popover.rb +27 -0
- data/lib/active_admin/views/components/scopes.rb +8 -13
- data/lib/active_admin/views/components/sidebar_section.rb +1 -1
- data/lib/active_admin/views/components/site_title.rb +55 -0
- data/lib/active_admin/views/components/status_tag.rb +4 -4
- data/lib/active_admin/views/components/table_for.rb +18 -18
- data/lib/active_admin/views/dashboard_section_renderer.rb +1 -1
- data/lib/active_admin/views/footer.rb +18 -0
- data/lib/active_admin/views/header.rb +31 -0
- data/lib/active_admin/views/index_as_block.rb +3 -0
- data/lib/active_admin/views/index_as_blog.rb +4 -0
- data/lib/active_admin/views/index_as_grid.rb +2 -0
- data/lib/active_admin/views/index_as_table.rb +19 -6
- data/lib/active_admin/views/pages/base.rb +14 -48
- data/lib/active_admin/views/pages/form.rb +3 -3
- data/lib/active_admin/views/pages/index.rb +56 -24
- data/lib/active_admin/views/pages/layout.rb +2 -2
- data/lib/active_admin/views/pages/page.rb +10 -4
- data/lib/active_admin/views/pages/show.rb +11 -8
- data/lib/active_admin/views/tabbed_navigation.rb +3 -3
- data/lib/active_admin/views/title_bar.rb +50 -0
- data/lib/active_admin/views/utility_nav.rb +41 -0
- data/lib/generators/active_admin/assets/assets_generator.rb +1 -1
- data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +1 -0
- data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +26 -3
- data/lib/generators/active_admin/devise/devise_generator.rb +2 -2
- data/lib/generators/active_admin/install/install_generator.rb +10 -10
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +21 -1
- data/lib/generators/active_admin/install/templates/admin_user.rb.erb +20 -0
- data/lib/generators/active_admin/install/templates/dashboard.rb +33 -0
- data/lib/generators/active_admin/resource/templates/admin.rb +1 -1
- data/spec/integration/memory_spec.rb +1 -11
- data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +50 -0
- data/spec/javascripts/coffeescripts/jquery.aa.popover-spec.js.coffee +82 -0
- data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +34 -0
- data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +60 -0
- data/spec/javascripts/compiled/jquery.aa.popover-spec.js +106 -0
- data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +37 -0
- data/spec/javascripts/fixtures/checkboxes.html +9 -0
- data/spec/javascripts/fixtures/table_checkboxes.html +17 -0
- data/spec/javascripts/helpers/SpecHelper.js +3 -0
- data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +108 -0
- data/spec/javascripts/helpers/vendor/jasmine-jquery.js +288 -0
- data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +2915 -0
- data/spec/javascripts/support/jasmine.yml +74 -0
- data/spec/javascripts/support/jasmine_config.rb +23 -0
- data/spec/javascripts/support/jasmine_runner.rb +32 -0
- data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +34 -0
- data/spec/javascripts/support/jquery.min.js +4 -0
- data/spec/spec_helper.rb +13 -13
- data/spec/spec_helper_without_rails.rb +2 -3
- data/spec/support/detect_rails_version.rb +16 -10
- data/spec/support/rails_template.rb +13 -1
- data/spec/support/templates/admin/stores.rb +1 -0
- data/spec/support/templates/en.yml +6 -0
- data/spec/unit/action_builder_spec.rb +38 -0
- data/spec/unit/application_spec.rb +12 -16
- data/spec/unit/base_controller_shared_examples.rb +3 -6
- data/spec/unit/batch_actions/resource_spec.rb +91 -0
- data/spec/unit/batch_actions/settings_spec.rb +61 -0
- data/spec/unit/breadcrumbs_spec.rb +33 -0
- data/spec/unit/comments_spec.rb +6 -0
- data/spec/unit/config_shared_examples.rb +17 -64
- data/spec/unit/csv_builder_spec.rb +12 -2
- data/spec/unit/dashboard_controller_spec.rb +11 -5
- data/spec/unit/dsl_include_spec.rb +20 -0
- data/spec/unit/{filter_form_builder_spec.rb → filters/filter_form_builder_spec.rb} +10 -7
- data/spec/unit/filters/resource_spec.rb +60 -0
- data/spec/unit/form_builder_spec.rb +180 -28
- data/spec/unit/helpers/collection_spec.rb +65 -0
- data/spec/unit/menu_item_spec.rb +48 -53
- data/spec/unit/menu_spec.rb +46 -32
- data/spec/unit/namespace/register_page_spec.rb +0 -6
- data/spec/unit/namespace/register_resource_spec.rb +1 -8
- data/spec/unit/namespace_spec.rb +8 -2
- data/spec/unit/page_spec.rb +20 -8
- data/spec/unit/resource/naming_spec.rb +27 -26
- data/spec/unit/resource/sidebars_spec.rb +0 -7
- data/spec/unit/resource_collection_spec.rb +11 -11
- data/spec/unit/resource_controller/collection_spec.rb +23 -1
- data/spec/unit/resource_controller/sidebars_spec.rb +46 -0
- data/spec/unit/resource_controller_spec.rb +43 -0
- data/spec/unit/resource_registration_spec.rb +2 -13
- data/spec/unit/resource_spec.rb +0 -42
- data/spec/unit/routing_spec.rb +60 -14
- data/spec/unit/scope_spec.rb +7 -0
- data/spec/unit/view_factory_spec.rb +9 -6
- data/spec/unit/view_helpers/fields_for_spec.rb +41 -0
- data/spec/unit/view_helpers/form_helper_spec.rb +18 -0
- data/spec/unit/views/components/action_list_popover_spec.rb +30 -0
- data/spec/unit/views/components/attributes_table_spec.rb +32 -20
- data/spec/unit/views/components/batch_action_popover_spec.rb +33 -0
- data/spec/unit/views/components/blank_slate_spec.rb +5 -3
- data/spec/unit/views/components/columns_spec.rb +32 -22
- data/spec/unit/views/components/paginated_collection_spec.rb +54 -12
- data/spec/unit/views/components/panel_spec.rb +11 -6
- data/spec/unit/views/components/popover_spec.rb +33 -0
- data/spec/unit/views/components/sidebar_section_spec.rb +6 -6
- data/spec/unit/views/components/site_title_spec.rb +78 -0
- data/spec/unit/views/components/status_tag_spec.rb +17 -10
- data/spec/unit/views/components/table_for_spec.rb +37 -17
- data/spec/unit/views/pages/layout_spec.rb +51 -10
- data/spec/unit/views/tabbed_navigation_spec.rb +44 -23
- data/tasks/js.rake +32 -0
- data/tasks/test.rake +1 -1
- metadata +233 -200
- data/lib/active_admin/arbre.rb +0 -22
- data/lib/active_admin/arbre/builder.rb +0 -125
- data/lib/active_admin/arbre/context.rb +0 -45
- data/lib/active_admin/arbre/html/attributes.rb +0 -20
- data/lib/active_admin/arbre/html/class_list.rb +0 -24
- data/lib/active_admin/arbre/html/collection.rb +0 -27
- data/lib/active_admin/arbre/html/document.rb +0 -42
- data/lib/active_admin/arbre/html/element.rb +0 -161
- data/lib/active_admin/arbre/html/html5_elements.rb +0 -47
- data/lib/active_admin/arbre/html/tag.rb +0 -145
- data/lib/active_admin/arbre/html/text_node.rb +0 -35
- data/lib/active_admin/filter_form_builder.rb +0 -53
- data/lib/active_admin/renderer.rb +0 -87
- data/lib/active_admin/resource_controller/filters.rb +0 -58
- data/lib/active_admin/stylesheets/active_admin/mixins/_utilities.scss +0 -0
- data/lib/active_admin/view_helpers/filter_form_helper.rb +0 -36
- data/lib/active_admin/view_helpers/renderer_helper.rb +0 -29
- data/lib/active_admin/views/header_renderer.rb +0 -82
- data/lib/generators/active_admin/assets/templates/dashboards.rb +0 -36
- data/lib/generators/active_admin/install/templates/dashboards.rb +0 -44
- data/spec/unit/arbre/context_spec.rb +0 -35
- data/spec/unit/arbre/html/element_finder_methods_spec.rb +0 -110
- data/spec/unit/arbre/html/element_spec.rb +0 -236
- data/spec/unit/arbre/html/tag_attributes_spec.rb +0 -61
- data/spec/unit/arbre/html/tag_spec.rb +0 -63
- data/spec/unit/arbre/html_spec.rb +0 -228
- data/spec/unit/renderer_spec.rb +0 -126
@@ -1,61 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Arbre::HTML::Tag, "Attributes" do
|
4
|
-
|
5
|
-
setup_arbre_context!
|
6
|
-
|
7
|
-
let(:tag){ Arbre::HTML::Tag.new }
|
8
|
-
|
9
|
-
describe "attributes" do
|
10
|
-
before { tag.build :id => "my_id" }
|
11
|
-
|
12
|
-
it "should have an attributes hash" do
|
13
|
-
tag.attributes.should == {:id => "my_id"}
|
14
|
-
end
|
15
|
-
|
16
|
-
it "should render the attributes to html" do
|
17
|
-
tag.to_s.should == <<-HTML
|
18
|
-
<tag id="my_id"></tag>
|
19
|
-
HTML
|
20
|
-
end
|
21
|
-
|
22
|
-
it "should get an attribute value" do
|
23
|
-
tag.attr(:id).should == "my_id"
|
24
|
-
end
|
25
|
-
|
26
|
-
describe "#has_attribute?" do
|
27
|
-
context "when the attribute exists" do
|
28
|
-
it "should return true" do
|
29
|
-
tag.has_attribute?(:id).should == true
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
context "when the attribute does not exist" do
|
34
|
-
it "should return false" do
|
35
|
-
tag.has_attribute?(:class).should == false
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
it "should remove an attribute" do
|
41
|
-
tag.attributes.should == {:id => "my_id"}
|
42
|
-
tag.remove_attribute(:id).should == "my_id"
|
43
|
-
tag.attributes.should == {}
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
describe "rendering attributes" do
|
48
|
-
it "should html safe the attribute values" do
|
49
|
-
tag.set_attribute(:class, "\">bad things!")
|
50
|
-
tag.to_s.should == <<-HTML
|
51
|
-
<tag class="">bad things!"></tag>
|
52
|
-
HTML
|
53
|
-
end
|
54
|
-
it "should should escape the attribute names" do
|
55
|
-
tag.set_attribute(">bad", "things")
|
56
|
-
tag.to_s.should == <<-HTML
|
57
|
-
<tag >bad="things"></tag>
|
58
|
-
HTML
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
@@ -1,63 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Arbre::HTML::Tag do
|
4
|
-
|
5
|
-
setup_arbre_context!
|
6
|
-
|
7
|
-
let(:tag){ Arbre::HTML::Tag.new }
|
8
|
-
|
9
|
-
describe "building a new tag" do
|
10
|
-
before { tag.build "Hello World", :id => "my_id" }
|
11
|
-
|
12
|
-
it "should set the contents to a string" do
|
13
|
-
tag.content.should == "Hello World"
|
14
|
-
end
|
15
|
-
|
16
|
-
it "should set the hash of options to the attributes" do
|
17
|
-
tag.attributes.should == { :id => "my_id" }
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
describe "creating a tag 'for' an object" do
|
22
|
-
let(:model_name){ mock(:singular => "resource_class", :param_key => 'resource_class')}
|
23
|
-
let(:resource_class){ mock(:model_name => model_name) }
|
24
|
-
let(:resource){ mock(:class => resource_class, :to_key => ['5'])}
|
25
|
-
|
26
|
-
before do
|
27
|
-
tag.build :for => resource
|
28
|
-
end
|
29
|
-
it "should set the id to the type and id" do
|
30
|
-
tag.id.should == "resource_class_5"
|
31
|
-
end
|
32
|
-
it "should add a class name" do
|
33
|
-
tag.class_list.should include("resource_class")
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
describe "css class names" do
|
38
|
-
it "should add a class" do
|
39
|
-
tag.add_class "hello_world"
|
40
|
-
tag.class_names.should == "hello_world"
|
41
|
-
end
|
42
|
-
|
43
|
-
it "should remove_class" do
|
44
|
-
tag.add_class "hello_world"
|
45
|
-
tag.class_names.should == "hello_world"
|
46
|
-
tag.remove_class "hello_world"
|
47
|
-
tag.class_names.should == ""
|
48
|
-
end
|
49
|
-
|
50
|
-
it "should not add a class if it already exists" do
|
51
|
-
tag.add_class "hello_world"
|
52
|
-
tag.add_class "hello_world"
|
53
|
-
tag.class_names.should == "hello_world"
|
54
|
-
end
|
55
|
-
|
56
|
-
it "should seperate classes with space" do
|
57
|
-
tag.add_class "hello world"
|
58
|
-
tag.class_list.size.should == 2
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
|
63
|
-
end
|
@@ -1,228 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Arbre do
|
4
|
-
|
5
|
-
setup_arbre_context!
|
6
|
-
|
7
|
-
it "should render a single element" do
|
8
|
-
content = span("Hello World")
|
9
|
-
content.to_s.should == <<-HTML
|
10
|
-
<span>Hello World</span>
|
11
|
-
HTML
|
12
|
-
end
|
13
|
-
|
14
|
-
it "should render a child element" do
|
15
|
-
content = span do
|
16
|
-
span "Hello World"
|
17
|
-
end
|
18
|
-
content.to_s.should == <<-HTML
|
19
|
-
<span>
|
20
|
-
<span>Hello World</span>
|
21
|
-
</span>
|
22
|
-
HTML
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should render an unordered list" do
|
26
|
-
content = ul do
|
27
|
-
li "First"
|
28
|
-
li "Second"
|
29
|
-
li "Third"
|
30
|
-
end
|
31
|
-
content.to_s.should == <<-HTML
|
32
|
-
<ul>
|
33
|
-
<li>First</li>
|
34
|
-
<li>Second</li>
|
35
|
-
<li>Third</li>
|
36
|
-
</ul>
|
37
|
-
HTML
|
38
|
-
end
|
39
|
-
|
40
|
-
it "should return the correct object" do
|
41
|
-
list_1 = ul
|
42
|
-
list_2 = li
|
43
|
-
list_1.should be_instance_of(Arbre::HTML::Ul)
|
44
|
-
list_2.should be_instance_of(Arbre::HTML::Li)
|
45
|
-
end
|
46
|
-
|
47
|
-
it "should allow local variables inside the tags" do
|
48
|
-
first = "First"
|
49
|
-
second = "Second"
|
50
|
-
content = ul do
|
51
|
-
li first
|
52
|
-
li second
|
53
|
-
end
|
54
|
-
content.to_s.should == <<-EOS
|
55
|
-
<ul>
|
56
|
-
<li>First</li>
|
57
|
-
<li>Second</li>
|
58
|
-
</ul>
|
59
|
-
EOS
|
60
|
-
end
|
61
|
-
|
62
|
-
it "should add children and nested" do
|
63
|
-
content = div do
|
64
|
-
ul
|
65
|
-
li do
|
66
|
-
li
|
67
|
-
end
|
68
|
-
end
|
69
|
-
content.to_s.should == <<-HTML
|
70
|
-
<div>
|
71
|
-
<ul></ul>
|
72
|
-
<li>
|
73
|
-
<li></li>
|
74
|
-
</li>
|
75
|
-
</div>
|
76
|
-
HTML
|
77
|
-
end
|
78
|
-
|
79
|
-
it "should pass the element in to the block if asked for" do
|
80
|
-
content = div do |d|
|
81
|
-
d.ul do
|
82
|
-
li
|
83
|
-
end
|
84
|
-
end
|
85
|
-
content.to_s.should == <<-HTML
|
86
|
-
<div>
|
87
|
-
<ul>
|
88
|
-
<li></li>
|
89
|
-
</ul>
|
90
|
-
</div>
|
91
|
-
HTML
|
92
|
-
end
|
93
|
-
|
94
|
-
it "should move content tags between parents" do
|
95
|
-
content = div do
|
96
|
-
span(ul(li))
|
97
|
-
end
|
98
|
-
content.to_s.should == <<-HTML
|
99
|
-
<div>
|
100
|
-
<span>
|
101
|
-
<ul>
|
102
|
-
<li></li>
|
103
|
-
</ul>
|
104
|
-
</span>
|
105
|
-
</div>
|
106
|
-
HTML
|
107
|
-
end
|
108
|
-
|
109
|
-
it "should add content to the parent if the element is passed into block" do
|
110
|
-
content = div do |d|
|
111
|
-
d.id = "my-tag"
|
112
|
-
ul do
|
113
|
-
li
|
114
|
-
end
|
115
|
-
end
|
116
|
-
content.to_s.should == <<-HTML
|
117
|
-
<div id="my-tag">
|
118
|
-
<ul>
|
119
|
-
<li></li>
|
120
|
-
</ul>
|
121
|
-
</div>
|
122
|
-
HTML
|
123
|
-
end
|
124
|
-
|
125
|
-
it "should have the parent set on it" do
|
126
|
-
item = nil
|
127
|
-
list = ul do
|
128
|
-
li "Hello"
|
129
|
-
item = li "World"
|
130
|
-
end
|
131
|
-
item.parent.should == list
|
132
|
-
end
|
133
|
-
|
134
|
-
|
135
|
-
["Hello World", 1, 1.5].each do |value|
|
136
|
-
it "should append the return value of '#{value}' when no other children added to the DOM" do
|
137
|
-
li do
|
138
|
-
value
|
139
|
-
end.to_s.should == "<li>#{value}</li>\n"
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
["Hello World", 1, 1.5].each do |value|
|
144
|
-
it "should not append the return value of '#{value}' when children have been added to the DOM" do
|
145
|
-
li do
|
146
|
-
text_node("Already Added")
|
147
|
-
value
|
148
|
-
end.to_s.should == "<li>Already Added</li>\n"
|
149
|
-
end
|
150
|
-
end
|
151
|
-
|
152
|
-
describe "text nodes" do
|
153
|
-
it "should turn strings into text nodes" do
|
154
|
-
li do
|
155
|
-
"Hello World"
|
156
|
-
end.children.first.should be_instance_of(Arbre::HTML::TextNode)
|
157
|
-
end
|
158
|
-
end
|
159
|
-
|
160
|
-
describe "self-closing nodes" do
|
161
|
-
it "should not self-close script tags" do
|
162
|
-
tag = script :type => 'text/javascript'
|
163
|
-
tag.to_s.should == <<-HTML
|
164
|
-
<script type="text/javascript"></script>
|
165
|
-
HTML
|
166
|
-
end
|
167
|
-
it "should self-close meta tags" do
|
168
|
-
tag = meta :content => "text/html; charset=utf-8"
|
169
|
-
tag.to_s.should == <<-HTML
|
170
|
-
<meta content="text/html; charset=utf-8\"/>
|
171
|
-
HTML
|
172
|
-
end
|
173
|
-
it "should self-close link tags" do
|
174
|
-
tag = link :rel => "stylesheet"
|
175
|
-
tag.to_s.should == <<-HTML
|
176
|
-
<link rel="stylesheet"/>
|
177
|
-
HTML
|
178
|
-
end
|
179
|
-
end
|
180
|
-
|
181
|
-
describe "html safe" do
|
182
|
-
it "should escape the contents" do
|
183
|
-
span("<br />").to_s.should == <<-HTML
|
184
|
-
<span><br /></span>
|
185
|
-
HTML
|
186
|
-
end
|
187
|
-
|
188
|
-
it "should return html safe strings" do
|
189
|
-
span("<br />").to_s.should be_html_safe
|
190
|
-
end
|
191
|
-
|
192
|
-
it "should not escape html passed in" do
|
193
|
-
span(span("<br />")).to_s.should == <<-HTML
|
194
|
-
<span>
|
195
|
-
<span><br /></span>
|
196
|
-
</span>
|
197
|
-
HTML
|
198
|
-
end
|
199
|
-
|
200
|
-
it "should escape string contents when passed in block" do
|
201
|
-
span {
|
202
|
-
span {
|
203
|
-
"<br />"
|
204
|
-
}
|
205
|
-
}.to_s.should == <<-HTML
|
206
|
-
<span>
|
207
|
-
<span><br /></span>
|
208
|
-
</span>
|
209
|
-
HTML
|
210
|
-
end
|
211
|
-
|
212
|
-
it "should escape the contents of attributes" do
|
213
|
-
span(:class => "<br />").to_s.should == <<-HTML
|
214
|
-
<span class="<br />"></span>
|
215
|
-
HTML
|
216
|
-
end
|
217
|
-
end
|
218
|
-
|
219
|
-
it "should not render blank nodes" do
|
220
|
-
tbody = tbody do
|
221
|
-
[]
|
222
|
-
end
|
223
|
-
tbody.to_s.should == <<-HTML
|
224
|
-
<tbody></tbody>
|
225
|
-
HTML
|
226
|
-
end
|
227
|
-
|
228
|
-
end
|
data/spec/unit/renderer_spec.rb
DELETED
@@ -1,126 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
include ActiveAdmin
|
4
|
-
|
5
|
-
describe ActiveAdmin::Renderer do
|
6
|
-
|
7
|
-
context "when initiailizing from a view" do
|
8
|
-
it "should have a view" do
|
9
|
-
view = action_view
|
10
|
-
renderer = Renderer.new(view)
|
11
|
-
renderer.view.should == view
|
12
|
-
end
|
13
|
-
|
14
|
-
it "should assign all local variables from the view" do
|
15
|
-
Renderer.new(action_view(:foo => "bar")).send(:instance_variable_get, "@foo").should == "bar"
|
16
|
-
end
|
17
|
-
|
18
|
-
it "should assing an instance variable to the view" do
|
19
|
-
view = action_view
|
20
|
-
renderer = Renderer.new(view)
|
21
|
-
renderer.send :set_ivar_on_view, "@my_ivar", 'Hello World'
|
22
|
-
view.instance_variable_get("@my_ivar").should == 'Hello World'
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
context "when initializing from another renderer" do
|
27
|
-
it "should have the view" do
|
28
|
-
view = action_view
|
29
|
-
renderer = Renderer.new(Renderer.new(view))
|
30
|
-
renderer.view.should == view
|
31
|
-
end
|
32
|
-
|
33
|
-
it "should assign local variables from the renderer" do
|
34
|
-
view = action_view(:foo => 'bar')
|
35
|
-
renderer = Renderer.new(Renderer.new(view))
|
36
|
-
renderer.send(:instance_variable_get, "@foo").should == 'bar'
|
37
|
-
end
|
38
|
-
|
39
|
-
it "should assing an instance variable to the view" do
|
40
|
-
view = action_view
|
41
|
-
renderer = Renderer.new(Renderer.new(view))
|
42
|
-
renderer.send :set_ivar_on_view, "@my_ivar", 'Hello World'
|
43
|
-
view.instance_variable_get("@my_ivar").should == 'Hello World'
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
context "when initializing from some other object" do
|
48
|
-
it "should initialize successfully" do
|
49
|
-
lambda {
|
50
|
-
Renderer.new "Hello World"
|
51
|
-
}.should_not raise_exception
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
describe "rendering HAML" do
|
56
|
-
before do
|
57
|
-
@haml_renderer = Class.new(Renderer)
|
58
|
-
@haml_renderer.class_eval do
|
59
|
-
def hello_world
|
60
|
-
"Hello World"
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
it "should render haml within the context of the renderer" do
|
65
|
-
@haml_renderer.class_eval do
|
66
|
-
def to_html
|
67
|
-
haml <<-HAML
|
68
|
-
%p
|
69
|
-
=hello_world
|
70
|
-
HAML
|
71
|
-
end
|
72
|
-
end
|
73
|
-
@renderer = @haml_renderer.new(action_view)
|
74
|
-
@renderer.to_html.should == "<p>\n Hello World\n</p>\n"
|
75
|
-
end
|
76
|
-
|
77
|
-
it "should allow for indentation at the start of the template" do
|
78
|
-
@haml_renderer.class_eval do
|
79
|
-
def to_html
|
80
|
-
haml <<-HAML
|
81
|
-
%p
|
82
|
-
=hello_world
|
83
|
-
HAML
|
84
|
-
end
|
85
|
-
end
|
86
|
-
@renderer = @haml_renderer.new(action_view)
|
87
|
-
@renderer.to_html.should == "<p>\n Hello World\n</p>\n"
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
describe "#call_method_or_proc_on" do
|
92
|
-
let(:renderer){ Renderer.new(action_view) }
|
93
|
-
let(:obj){ "Hello World" }
|
94
|
-
it "should return nil if no symbol or proc given" do
|
95
|
-
renderer.send(:call_method_or_proc_on, obj, 1).should == nil
|
96
|
-
end
|
97
|
-
it "should call the method if a symbol is given" do
|
98
|
-
renderer.send(:call_method_or_proc_on, obj, :size).should == obj.size
|
99
|
-
end
|
100
|
-
it "should call the method if a string is given" do
|
101
|
-
renderer.send(:call_method_or_proc_on, obj, "size").should == obj.size
|
102
|
-
end
|
103
|
-
it "should call the proc with the object if a proc is given" do
|
104
|
-
p = Proc.new{|string| string.size }
|
105
|
-
renderer.send(:call_method_or_proc_on, obj, p).should == obj.size
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
describe "#render_or_call_method_or_proc_on" do
|
110
|
-
let(:renderer){ Renderer.new(action_view) }
|
111
|
-
let(:obj){ "Hello World" }
|
112
|
-
it "should return nil if no symbol or proc given" do
|
113
|
-
renderer.send(:render_or_call_method_or_proc_on, obj, 1).should == nil
|
114
|
-
end
|
115
|
-
it "should return the string if a string is given" do
|
116
|
-
renderer.send(:render_or_call_method_or_proc_on, obj, "Hello!").should == "Hello!"
|
117
|
-
end
|
118
|
-
it "should call the method if a symbol is given" do
|
119
|
-
renderer.send(:render_or_call_method_or_proc_on, obj, :size).should == obj.size
|
120
|
-
end
|
121
|
-
it "should call the proc with the object if a proc is given" do
|
122
|
-
p = Proc.new{|string| string.size }
|
123
|
-
renderer.send(:render_or_call_method_or_proc_on, obj, p).should == obj.size
|
124
|
-
end
|
125
|
-
end
|
126
|
-
end
|