active_admin-sortable_tree 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +12 -1
  3. data/lib/active_admin/sortable_tree/version.rb +1 -1
  4. metadata +2 -64
  5. data/.gitignore +0 -11
  6. data/.travis.yml +0 -9
  7. data/Gemfile +0 -10
  8. data/Rakefile +0 -59
  9. data/active_admin-sortable_tree.gemspec +0 -30
  10. data/bin/rails +0 -11
  11. data/gemfiles/3.2.gemfile +0 -7
  12. data/gemfiles/4.0.gemfile +0 -10
  13. data/gemfiles/4.1.gemfile +0 -10
  14. data/script/rails +0 -11
  15. data/spec/dummy/README.rdoc +0 -261
  16. data/spec/dummy/Rakefile +0 -7
  17. data/spec/dummy/app/admin/category.rb +0 -15
  18. data/spec/dummy/app/admin/category_sort_disabled.rb +0 -15
  19. data/spec/dummy/app/admin/category_tree.rb +0 -9
  20. data/spec/dummy/app/admin/dashboard.rb +0 -5
  21. data/spec/dummy/app/assets/javascripts/active_admin.js +0 -2
  22. data/spec/dummy/app/assets/javascripts/application.js +0 -15
  23. data/spec/dummy/app/assets/javascripts/jquery.simulate.js +0 -314
  24. data/spec/dummy/app/assets/stylesheets/active_admin.css.scss +0 -17
  25. data/spec/dummy/app/assets/stylesheets/application.css +0 -13
  26. data/spec/dummy/app/controllers/application_controller.rb +0 -3
  27. data/spec/dummy/app/helpers/application_helper.rb +0 -2
  28. data/spec/dummy/app/mailers/.gitkeep +0 -0
  29. data/spec/dummy/app/models/.gitkeep +0 -0
  30. data/spec/dummy/app/models/admin_user.rb +0 -6
  31. data/spec/dummy/app/models/category.rb +0 -4
  32. data/spec/dummy/app/views/layouts/application.html.erb +0 -14
  33. data/spec/dummy/config.ru +0 -4
  34. data/spec/dummy/config/application.rb +0 -56
  35. data/spec/dummy/config/boot.rb +0 -10
  36. data/spec/dummy/config/database.yml +0 -25
  37. data/spec/dummy/config/environment.rb +0 -5
  38. data/spec/dummy/config/environments/development.rb +0 -28
  39. data/spec/dummy/config/environments/production.rb +0 -64
  40. data/spec/dummy/config/environments/test.rb +0 -32
  41. data/spec/dummy/config/initializers/active_admin.rb +0 -231
  42. data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -7
  43. data/spec/dummy/config/initializers/devise.rb +0 -256
  44. data/spec/dummy/config/initializers/inflections.rb +0 -15
  45. data/spec/dummy/config/initializers/mime_types.rb +0 -5
  46. data/spec/dummy/config/initializers/secret_token.rb +0 -8
  47. data/spec/dummy/config/initializers/session_store.rb +0 -8
  48. data/spec/dummy/config/initializers/wrap_parameters.rb +0 -14
  49. data/spec/dummy/config/locales/devise.en.yml +0 -59
  50. data/spec/dummy/config/locales/en.yml +0 -5
  51. data/spec/dummy/config/routes.rb +0 -61
  52. data/spec/dummy/db/migrate/20140806024135_devise_create_admin_users.rb +0 -48
  53. data/spec/dummy/db/migrate/20140806024139_create_active_admin_comments.rb +0 -19
  54. data/spec/dummy/db/migrate/20140806032156_create_categories.rb +0 -12
  55. data/spec/dummy/db/schema.rb +0 -58
  56. data/spec/dummy/lib/assets/.gitkeep +0 -0
  57. data/spec/dummy/log/.gitkeep +0 -0
  58. data/spec/dummy/public/404.html +0 -26
  59. data/spec/dummy/public/422.html +0 -26
  60. data/spec/dummy/public/500.html +0 -25
  61. data/spec/dummy/public/favicon.ico +0 -0
  62. data/spec/dummy/script/rails +0 -6
  63. data/spec/features/sortable_spec.rb +0 -96
  64. data/spec/rails_helper.rb +0 -65
  65. data/spec/spec_helper.rb +0 -58
  66. data/spec/support/wait_for_ajax.rb +0 -19
@@ -1,48 +0,0 @@
1
- class DeviseCreateAdminUsers < ActiveRecord::Migration
2
- def migrate(direction)
3
- super
4
- # Create a default user
5
- AdminUser.create!(:email => 'admin@example.com', :password => 'password', :password_confirmation => 'password') if direction == :up
6
- end
7
-
8
- def change
9
- create_table(:admin_users) do |t|
10
- ## Database authenticatable
11
- t.string :email, null: false, default: ""
12
- t.string :encrypted_password, null: false, default: ""
13
-
14
- ## Recoverable
15
- t.string :reset_password_token
16
- t.datetime :reset_password_sent_at
17
-
18
- ## Rememberable
19
- t.datetime :remember_created_at
20
-
21
- ## Trackable
22
- t.integer :sign_in_count, default: 0, null: false
23
- t.datetime :current_sign_in_at
24
- t.datetime :last_sign_in_at
25
- t.string :current_sign_in_ip
26
- t.string :last_sign_in_ip
27
-
28
- ## Confirmable
29
- # t.string :confirmation_token
30
- # t.datetime :confirmed_at
31
- # t.datetime :confirmation_sent_at
32
- # t.string :unconfirmed_email # Only if using reconfirmable
33
-
34
- ## Lockable
35
- # t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
36
- # t.string :unlock_token # Only if unlock strategy is :email or :both
37
- # t.datetime :locked_at
38
-
39
-
40
- t.timestamps
41
- end
42
-
43
- add_index :admin_users, :email, unique: true
44
- add_index :admin_users, :reset_password_token, unique: true
45
- # add_index :admin_users, :confirmation_token, unique: true
46
- # add_index :admin_users, :unlock_token, unique: true
47
- end
48
- end
@@ -1,19 +0,0 @@
1
- class CreateActiveAdminComments < ActiveRecord::Migration
2
- def self.up
3
- create_table :active_admin_comments do |t|
4
- t.string :namespace
5
- t.text :body
6
- t.string :resource_id, :null => false
7
- t.string :resource_type, :null => false
8
- t.references :author, :polymorphic => true
9
- t.timestamps
10
- end
11
- add_index :active_admin_comments, [:namespace]
12
- add_index :active_admin_comments, [:author_type, :author_id]
13
- add_index :active_admin_comments, [:resource_type, :resource_id]
14
- end
15
-
16
- def self.down
17
- drop_table :active_admin_comments
18
- end
19
- end
@@ -1,12 +0,0 @@
1
- class CreateCategories < ActiveRecord::Migration
2
- def change
3
- create_table :categories do |t|
4
- t.string :name
5
- t.string :ancestry
6
- t.string :description
7
- t.integer :position
8
-
9
- t.timestamps
10
- end
11
- end
12
- end
@@ -1,58 +0,0 @@
1
- # encoding: UTF-8
2
- # This file is auto-generated from the current state of the database. Instead
3
- # of editing this file, please use the migrations feature of Active Record to
4
- # incrementally modify your database, and then regenerate this schema definition.
5
- #
6
- # Note that this schema.rb definition is the authoritative source for your
7
- # database schema. If you need to create the application database on another
8
- # system, you should be using db:schema:load, not running all the migrations
9
- # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
- # you'll amass, the slower it'll run and the greater likelihood for issues).
11
- #
12
- # It's strongly recommended to check this file into your version control system.
13
-
14
- ActiveRecord::Schema.define(:version => 20140806032156) do
15
-
16
- create_table "active_admin_comments", :force => true do |t|
17
- t.string "namespace"
18
- t.text "body"
19
- t.string "resource_id", :null => false
20
- t.string "resource_type", :null => false
21
- t.integer "author_id"
22
- t.string "author_type"
23
- t.datetime "created_at", :null => false
24
- t.datetime "updated_at", :null => false
25
- end
26
-
27
- add_index "active_admin_comments", ["author_type", "author_id"], :name => "index_active_admin_comments_on_author_type_and_author_id"
28
- add_index "active_admin_comments", ["namespace"], :name => "index_active_admin_comments_on_namespace"
29
- add_index "active_admin_comments", ["resource_type", "resource_id"], :name => "index_active_admin_comments_on_resource_type_and_resource_id"
30
-
31
- create_table "admin_users", :force => true do |t|
32
- t.string "email", :default => "", :null => false
33
- t.string "encrypted_password", :default => "", :null => false
34
- t.string "reset_password_token"
35
- t.datetime "reset_password_sent_at"
36
- t.datetime "remember_created_at"
37
- t.integer "sign_in_count", :default => 0, :null => false
38
- t.datetime "current_sign_in_at"
39
- t.datetime "last_sign_in_at"
40
- t.string "current_sign_in_ip"
41
- t.string "last_sign_in_ip"
42
- t.datetime "created_at", :null => false
43
- t.datetime "updated_at", :null => false
44
- end
45
-
46
- add_index "admin_users", ["email"], :name => "index_admin_users_on_email", :unique => true
47
- add_index "admin_users", ["reset_password_token"], :name => "index_admin_users_on_reset_password_token", :unique => true
48
-
49
- create_table "categories", :force => true do |t|
50
- t.string "name"
51
- t.string "ancestry"
52
- t.string "description"
53
- t.integer "position"
54
- t.datetime "created_at", :null => false
55
- t.datetime "updated_at", :null => false
56
- end
57
-
58
- end
File without changes
File without changes
@@ -1,26 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>The page you were looking for doesn't exist (404)</title>
5
- <style type="text/css">
6
- body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
- div.dialog {
8
- width: 25em;
9
- padding: 0 4em;
10
- margin: 4em auto 0 auto;
11
- border: 1px solid #ccc;
12
- border-right-color: #999;
13
- border-bottom-color: #999;
14
- }
15
- h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <!-- This file lives in public/404.html -->
21
- <div class="dialog">
22
- <h1>The page you were looking for doesn't exist.</h1>
23
- <p>You may have mistyped the address or the page may have moved.</p>
24
- </div>
25
- </body>
26
- </html>
@@ -1,26 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>The change you wanted was rejected (422)</title>
5
- <style type="text/css">
6
- body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
- div.dialog {
8
- width: 25em;
9
- padding: 0 4em;
10
- margin: 4em auto 0 auto;
11
- border: 1px solid #ccc;
12
- border-right-color: #999;
13
- border-bottom-color: #999;
14
- }
15
- h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <!-- This file lives in public/422.html -->
21
- <div class="dialog">
22
- <h1>The change you wanted was rejected.</h1>
23
- <p>Maybe you tried to change something you didn't have access to.</p>
24
- </div>
25
- </body>
26
- </html>
@@ -1,25 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>We're sorry, but something went wrong (500)</title>
5
- <style type="text/css">
6
- body { background-color: #fff; color: #666; text-align: center; font-family: arial, sans-serif; }
7
- div.dialog {
8
- width: 25em;
9
- padding: 0 4em;
10
- margin: 4em auto 0 auto;
11
- border: 1px solid #ccc;
12
- border-right-color: #999;
13
- border-bottom-color: #999;
14
- }
15
- h1 { font-size: 100%; color: #f00; line-height: 1.5em; }
16
- </style>
17
- </head>
18
-
19
- <body>
20
- <!-- This file lives in public/500.html -->
21
- <div class="dialog">
22
- <h1>We're sorry, but something went wrong.</h1>
23
- </div>
24
- </body>
25
- </html>
File without changes
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
-
4
- APP_PATH = File.expand_path('../../config/application', __FILE__)
5
- require File.expand_path('../../config/boot', __FILE__)
6
- require 'rails/commands'
@@ -1,96 +0,0 @@
1
- require 'rails_helper'
2
-
3
- RSpec.describe "ActiveAdmin::SortableTree", type: :feature do
4
- context "configured as sortable" do
5
- it "sorts by dragging vertically", js: true do
6
- bottom = Category.create! name: "bottom", position: 0
7
- top = Category.create! name: "top", position: 1
8
- middle = Category.create! name: "middle", position: 2
9
-
10
- visit admin_categories_path
11
-
12
- expect(all(".ui-sortable li h3").map(&:text)).to eq(["bottom", "top", "middle"])
13
-
14
- wait_for_ajax { drag_element("#category_#{middle.id} h3", dy: -100) }
15
- wait_for_ajax { drag_element("#category_#{top.id} h3", dy: -100) }
16
-
17
- expect(all(".ui-sortable li h3").map(&:text)).to eq(["top", "middle", "bottom"])
18
- expect(Category.order(:position).map(&:name)).to eq(["top", "middle", "bottom"])
19
- end
20
- end
21
-
22
- context "configured as sortable tree" do
23
- it "sorts by dragging vertically", js: true do
24
- bottom = Category.create! name: "bottom", position: 0
25
- top = Category.create! name: "top", position: 1
26
- middle = Category.create! name: "middle", position: 2
27
-
28
- visit admin_category_trees_path
29
-
30
- expect(all(".ui-sortable li h3").map(&:text)).to eq(["bottom", "top", "middle"])
31
-
32
- wait_for_ajax { drag_element("#category_tree_#{middle.id} h3", dy: -100) }
33
- wait_for_ajax { drag_element("#category_tree_#{top.id} h3", dy: -100) }
34
-
35
- expect(all(".ui-sortable li h3").map(&:text)).to eq(["top", "middle", "bottom"])
36
- expect(Category.order(:position).map(&:name)).to eq(["top", "middle", "bottom"])
37
- end
38
-
39
- it "assigns hierarchy by dragging horizontally", js: true do
40
- top = Category.create! name: "top", position: 0
41
- middle = Category.create! name: "middle", position: 1
42
- bottom = Category.create! name: "bottom", position: 2
43
- expect(top.children).not_to include(middle)
44
-
45
- visit admin_category_trees_path
46
-
47
- wait_for_ajax { drag_element("#category_tree_#{middle.id} h3", dx: 40) }
48
- wait_for_ajax { drag_element("#category_tree_#{bottom.id} h3", dx: 40) }
49
-
50
- expect(top.children).to include(middle, bottom)
51
- end
52
- end
53
-
54
- context "with option `sortable: false`" do
55
- it "disables sorting by excluding sortable data attributes" do
56
- bottom = Category.create! name: "bottom", position: 0
57
- top = Category.create! name: "top", position: 1
58
- middle = Category.create! name: "middle", position: 2
59
-
60
- visit admin_category_disabled_sorts_path
61
-
62
- expect(page).to have_css(".index_as_sortable")
63
- expect(page).not_to have_css("[data-sortable-type]")
64
- expect(page).not_to have_css("[data-sortable-url]")
65
- end
66
-
67
- context "with a proc returning false as sortable option" do
68
- it "disables sorting" do
69
- proc_evaluated_within_controller = false
70
-
71
- sortable_options_for("CategoryDisabledSort")[:sortable] = proc do
72
- proc_evaluated_within_controller = self.is_a?(ActiveAdmin::ResourceController)
73
- false
74
- end
75
-
76
- bottom = Category.create! name: "bottom", position: 0
77
-
78
- visit admin_category_disabled_sorts_path
79
-
80
- expect(page).to have_css(".index_as_sortable")
81
- expect(page).not_to have_css("[data-sortable-type]")
82
- expect(proc_evaluated_within_controller).to be true
83
- end
84
- end
85
- end
86
-
87
- def drag_element(selector, options)
88
- options.reverse_merge! moves: 20
89
- page.execute_script(%Q($("#{selector}").simulate("drag", #{options.to_json} )))
90
- end
91
-
92
- def sortable_options_for(resource)
93
- resource_config = ActiveAdmin.application.namespace(:admin).resource_for(resource)
94
- resource_config.dsl.sortable_options
95
- end
96
- end
@@ -1,65 +0,0 @@
1
- # This file is copied to spec/ when you run 'rails generate rspec:install'
2
- ENV["RAILS_ENV"] ||= 'test'
3
- require 'spec_helper'
4
-
5
- require File.expand_path('../dummy/config/environment', __FILE__)
6
-
7
- require 'rspec/rails'
8
- require 'capybara/rails'
9
- require 'phantomjs/poltergeist'
10
- require 'database_cleaner'
11
-
12
- Capybara.javascript_driver = :poltergeist
13
-
14
- def reload_menus!
15
- ActiveAdmin.application.namespaces.values.each{|n| n.reset_menu! }
16
- end
17
-
18
- def reload_routes!
19
- Rails.application.reload_routes!
20
- end
21
-
22
- # Setup ActiveAdmin
23
- ActiveAdmin.application.load_paths = [File.expand_path("../dummy/app/admin", __FILE__)]
24
- ActiveAdmin.unload!
25
- ActiveAdmin.load!
26
- reload_menus!
27
- reload_routes!
28
-
29
- # Disabling authentication in specs so that we don't have to worry about
30
- # it allover the place
31
- ActiveAdmin.application.authentication_method = false
32
- ActiveAdmin.application.current_user_method = false
33
-
34
- Dir[File.expand_path("../support/**/*.rb", __FILE__)].each { |f| require f }
35
-
36
- RSpec.configure do |config|
37
- # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
38
- config.fixture_path = "#{::Rails.root}/spec/fixtures"
39
-
40
- # If you're not using ActiveRecord, or you'd prefer not to run each of your
41
- # examples within a transaction, remove the following line or assign false
42
- # instead of true.
43
- config.use_transactional_fixtures = false
44
-
45
- config.before(:each) do
46
- DatabaseCleaner.strategy = :transaction
47
- end
48
-
49
- config.before(:each, js: true) do
50
- DatabaseCleaner.strategy = :truncation
51
- end
52
-
53
- config.before(:each) do
54
- DatabaseCleaner.start
55
- end
56
-
57
- config.after(:each) do
58
- DatabaseCleaner.clean
59
- end
60
-
61
- config.infer_spec_type_from_file_location!
62
-
63
- config.include Devise::TestHelpers, type: :controller
64
- config.include WaitForAjax, type: :feature
65
- end
@@ -1,58 +0,0 @@
1
- RSpec.configure do |config|
2
- # These two settings work together to allow you to limit a spec run
3
- # to individual examples or groups you care about by tagging them with
4
- # `:focus` metadata. When nothing is tagged with `:focus`, all examples
5
- # get run.
6
- config.filter_run :focus
7
- config.run_all_when_everything_filtered = true
8
-
9
- # Many RSpec users commonly either run the entire suite or an individual
10
- # file, and it's useful to allow more verbose output when running an
11
- # individual spec file.
12
- if config.files_to_run.one?
13
- # Use the documentation formatter for detailed output,
14
- # unless a formatter has already been configured
15
- # (e.g. via a command-line flag).
16
- config.default_formatter = 'doc'
17
- end
18
-
19
- # Print the 10 slowest examples and example groups at the
20
- # end of the spec run, to help surface which specs are running
21
- # particularly slow.
22
- config.profile_examples = 10
23
-
24
- # Run specs in random order to surface order dependencies. If you find an
25
- # order dependency and want to debug it, you can fix the order by providing
26
- # the seed, which is printed after each run.
27
- # --seed 1234
28
- config.order = :random
29
-
30
- # Seed global randomization in this process using the `--seed` CLI option.
31
- # Setting this allows you to use `--seed` to deterministically reproduce
32
- # test failures related to randomization by passing the same `--seed` value
33
- # as the one that triggered the failure.
34
- Kernel.srand config.seed
35
-
36
- # rspec-expectations config goes here. You can use an alternate
37
- # assertion/expectation library such as wrong or the stdlib/minitest
38
- # assertions if you prefer.
39
- config.expect_with :rspec do |expectations|
40
- # Enable only the newer, non-monkey-patching expect syntax.
41
- # For more details, see:
42
- # - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
43
- expectations.syntax = :expect
44
- end
45
-
46
- # rspec-mocks config goes here. You can use an alternate test double
47
- # library (such as bogus or mocha) by changing the `mock_with` option here.
48
- config.mock_with :rspec do |mocks|
49
- # Enable only the newer, non-monkey-patching expect syntax.
50
- # For more details, see:
51
- # - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
52
- mocks.syntax = :expect
53
-
54
- # Prevents you from mocking or stubbing a method that does not exist on
55
- # a real object. This is generally recommended.
56
- mocks.verify_partial_doubles = true
57
- end
58
- end