active_scaffold_sortable 3.6.2 → 3.7.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/README.md +267 -0
- data/app/views/active_scaffold_overrides/_form_association.html.erb +1 -1
- data/frontends/default/active_scaffold_overrides/_list.html.erb +1 -1
- data/lib/active_scaffold/config/sortable.rb +5 -5
- data/lib/active_scaffold_sortable/version.rb +2 -2
- data/lib/active_scaffold_sortable.rb +1 -0
- data/test/attribute_params_test.rb +69 -0
- data/test/auto_models_controller_test.rb +51 -42
- data/test/config_test.rb +44 -37
- data/test/controllers/ancestry_models_controller.rb +8 -0
- data/test/controllers/auto_models_controller.rb +2 -0
- data/test/controllers/models_controller.rb +2 -0
- data/test/controllers/nested_set_models_controller.rb +5 -0
- data/test/controllers/sortable_models_controller.rb +2 -0
- data/test/dummy/app/assets/config/manifest.js +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/-0/-01A5W7YK9kU3BAS800iZYKE1Jjr-mMTZS7fQ87Rx9Y.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/-2/-2oLK5aS0W7YRh6DWw7gleUOPUgPQHe3WA-XlTeeQ6I.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/-3/-3JSgLkvqrbXhc6cV7vAvXuo40s6t9QfDEvko0kGqHY.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/-5/-5b8vqL4AFE9S1wXk_ZysEvjY3K9KSkap5rhGfqbAns.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/-D/-DnuHI88d2RugNRU74FFqmOIb9ctTsdUQh0DlMENCyo.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/-x/-xveB5ZfM-eQ6NKFAdea3lFoN1vnudJ5LvZSRuzKQ_A.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/0B/0BKtmzv1AlH_D8ePKCo6cK758902Yb9LuqMKD1YYRCI.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/0R/0RBP8nKamBasZw5QxqMbxS-0qm_HmB-IrbHuLY5EkAE.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/0o/0oBXAn_gNl9ci2FebzcrXp5muYP0gkwyuICM_2XgZSM.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/1G/1GbJS0MAW1RcmPPFOzvRIWmCWnuRzHFpzYtbrSf9kn0.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/1e/1epYXgb89BkEMcjSsF8ZneNxpnJd7CwQYPoeukBAUPk.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/24/24C1vwwkvwnqO43YwbPnrtooBEgS2hzFxyGb5UIQ_z8.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/2F/2FFeltlt3UB92gSStDW3dCExS323nvlf8jnLx0AQT7U.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/2T/2TEBf82sw5GOia5tXBuC6_qcelFGyl_BiMd5t2mRo3I.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/2X/2XvO4DdiQnv9iimEOceo5KSLzXyIpsH9zJPy0-G-mWw.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/2e/2ejWr7IoRaAvGd2C8f9UZYwIeAFYcrQo97m9SM5XvG0.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/2s/2sGAQ3lUIHy362ttHb99ML7tixBpnZ0gAE_1gjC5QNc.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/38/38pY3RTKFmdKPW92BesHrVZZ5hOgBN2ZOMpg8Pfeq8o.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/3V/3VQHyC_HOI6vTzyOFRqKgqBaibU0LvqY-vHrz2VsLe4.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/4T/4TPtaEh2eMInSYN2oh7Pc5iDR4qR41inNfWu2Z3-4d4.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/4Y/4Yd3Q4u1iCSnYLn28-EcjXomhSB9VJvBrsDuT5feMgE.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/4c/4cYrHjoGTnsvI5Bxiol1DP1Cl17-8kMS0cA9d8QVvl4.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/4c/4cx0kSMnteO1fMuTu1ldK4SK3T4qBMmFqHpYBEJIl1M.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/5F/5FPfSxfXAzfMqbv9MYp_oPqDqCp5Ti42XqV96raVNmY.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/5R/5RmcFexTZX4RML0m9HNAEogOkz6kAUnL1XAycQBQF68.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/5d/5d7byxXxH0tYfzrL1xmvvOK3IWGWYmbIGYVFfFaE9dY.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/5g/5g89-0a4fx7-hBM92_O2WNgdJMrUC5NJEbpBvAleVWU.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/63/633hFkOuEJb_oUSK8cX03s1n2fLSTEb5NdC4cDIwpwA.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/6j/6jKoXrSpfNRDsyNX4Zt6bH298l8LflVJ8bYAKsaHzzE.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/6v/6v3hLMm6-Nd9GuMM_2saYxwsHtPGQIbkupZG2vvqa-c.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/7P/7PY1-QqnAkLe9n-nRR-vrU2Fzd5MdehED9jP8erf8eo.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/7a/7a8xYHOtPE4wTHEMmm6noe1konW7gY0PUSm0IBNTMtI.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/7d/7d4afpWdI5JNwQ5cItnECrWVgm4tCn8n0JvJTD4T3qs.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/8A/8Awct50GB7qO_BjbGb7z6tLppN4-Zkvgw2MOYqw6YZM.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/8G/8GByrSoo2FlXP9v-YtRr3mXAlELF8VORWoHShm6nDdA.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/8c/8c1AnZluzIU5mA6hxvyQIdoKGWB_gGzUtUbmAL-EMi4.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/8v/8vSTgcVfo7zRgOO9tDN887A2SISF1N6LaLE0SwEienU.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/9V/9VuN8VYKTVYvAFQ8Og_aBqpRpiGxuy0Et3roDr_okqk.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/BG/BGKeBGsHVMizN9unVFE6OuxZYBGKG1t6r-cH4MYW3LQ.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/BQ/BQStLknXZiiwpMoPe6YrBxnBD-1wDEEN8k1mYrJ3Uxw.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/BW/BWochnvJlhWYZdwSmq6mz-jEixAT70nDd-v2kKu9vqw.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/C-/C-7R1F-IclQa7n3Hd4qJnLbBAU5Pcu7LxaVCrdCpGm0.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/CK/CKhIMyvEb6CDyLEFjVWINYFKmLJ4PP4loyBb9TSRuMY.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/CP/CPRlIspialBD_8QWdu_BfuiA-0NiaCIAIjENtD1GTVM.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/CV/CV9H0CtTQ90oOjk85ymAap-0weDW8crx2mv9iWwADxs.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Cs/CsQ51viK_aIp-m7ZlSFOnb4sFWpBNWaZblmvpPZAPZM.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/D6/D6Qu6xXoQxwWWu9I8MH06EV_ZCDIdkd1C30t_qGVDNI.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/DN/DNjqY8NAzkt9P2e6Y6nhm_lDGdHAmeYStAwysDr_XI8.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Dv/DvsUO7WNA9YxClJwRzWSEzvC1WbUiIqoELa81jklXnU.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Fa/Fams27IUjgGgDYh4ZebQLOL2ZVlyXeObh0zGm7L7itY.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Fd/FdwcZofVKxaRa1PHEqgrVNOb_NfhW7AkOaQr8Jpd8F8.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Fi/Fix6os7onITNYUoeQXZIZ9ipaPXY8qveVp544iQ2pu0.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Fo/Foxj9g0CYVowTIQC5l3ont29y6kzyjq1tCto_XmD1Y8.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Gm/Gmx2uSucvix2U85bFcJwdUiK4W0_l0ktmUpZYH0kuh8.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/H5/H5jANW5FBiru_dQ2zHyOLCXrUutOhHWVccsPOlHjPlw.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/I8/I8Di5A_iVdMQnWl8i0jR1EDPY-zGKXRsX6FrHOUKY_k.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/IG/IGLiMvn8Ia3obsUVYlf5H2Pc4hMVBXoHVrCh_BbHeos.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/IU/IU3Vj0C_4HJivemzxbufqxLy3uOizcW6mjksAApYonI.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/IV/IVzbuuk4Y8uceJaYEi3eHzZ3L3-X9_RyiKuV2mjuq14.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Im/ImYjTVLdbIdhT9HmAR5592TGiS6do4CU5aTM57NDtF8.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Jo/Joc7W-HUxa_SCuMY1ji3Tb_anGXmH8dXBLEIl7y3qQY.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Kp/Kp1mrZLRWB7EWOtPVpLqGWKv-kIAAM_cHpkoYEASq0k.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Kp/KpOG7KGgj5QGIvXgdmmMNmNLcDzUNj0-HRArprvTc2M.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Kr/KrnWYZN30K4B7kS4tYoFPc2uvUXN4wq4R-zg1s8Pte8.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/LB/LBAH0XPkrk6feDLGh6rjc-oRVjDHWf09jT2s1OF0DGk.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/LK/LKdhU8uwD92K_SdC7Tg_nnk32QEeIHGK5PnSSsQB1GU.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/LX/LXRQyuA2BiXpXNe-2PIOPP_gfu2J9r8ECfinQWs5Pn4.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Lt/LtK_Npm-kOHPrwrpfOkzvivUSMv9C35TO8kccAJFAoE.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/M-/M-zp45dW9TWoC7zAUn3L2BwKG2a6gagSXpG8nSyMg8g.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Mv/MvW2Dl5BoobN-SWNyCaxMP47Ihyd8e8UCEcYVeDkEr4.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Mw/MwZE2PNpy_0-Qa3_iv7j25MuGl-1OZUO2XkDoomSyQc.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/NP/NPs6FRY1WbljwZoGarj2bqozBfutuaWBe3nVfrQ2A-k.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/O7/O7ygnT4NqWCR5SU1qTty3j0909VVtEN7SqVI3exJ1Fs.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Oj/OjnYwM2pcnX18Fnj3AKBYJslH-_oI-eJFr1jKF_bec0.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Om/OmD88cOkZnce7jiIW_uKN5UzecfSk7LPBHUWdr9nuaY.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/P1/P1RCU1-eTX730fxykGCghfCTNXe74fdWitwW7p0lux0.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/P5/P5ifL2bLkG9zc7oNXwYKCzsAZLzKY_bHqBAQf64TnFo.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/PB/PBNeP5ORDO5a3Tn1n5hEA4OS0JTbGgGuyupEljHYK-Q.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/PJ/PJDpkmr3C8KVM9BqbaUPLH4L5f0xWtRDo3wc4vuvtTw.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Pa/Paylg2dvY4FEVeol8QRGXmnlmSxW9iAhrhu8WUIH_2E.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Pc/Pcgbo3Rysr6BlArqxHR4qLirVHsynsi_FRV-fndn8Hg.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Q1/Q1opUEyDInXXYe5UDccDz438AyblZ0oiavmzG2BDFJc.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Q7/Q7La6t5hz_qGvKi59nbxxnhObRb0nHwdofHEDbNLYGI.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Qh/Qhnmild8NLF6AJmiUOCxEq6l4V9WDM46gt3iKNUpfGE.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Ra/Ra8PGm0CtdBdRARR5KsiT2Iv-P3wZNe55vCNqu4qdM8.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Rx/RxmsaxLeIQ5xwIZ14vz5ehoc_6TjP5Rpa3CRny4tWG8.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/SA/SA8b2a-PX1nDgzdCcJaBTW8Y2qQfBeKvrsNd2FHV9kk.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/SO/SOAX-5LQ2QKMVKgYM3-vLvqxZEFV7aXqi6T0nHK8JdE.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/SS/SSg5bDqJBLv8UDn6NjSt-28FTDnXrmr4lm3-qD-gzlg.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Sb/Sb2EeQPQyWe0nb2aId-BRi76gdNMbx-_b7oDXu_--3I.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Sh/ShqS7p9Dz8B0KnsOEeur1lGGb96LoW2Tufapu6vRYQQ.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Sn/SngbFvFTz9jtho3VfcDRkhi5KvV5mNXHtZ3faRj0mq0.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/TJ/TJXSOh8D6dsgfhXh7KlzynHOrYwXy9yi0YKdvZlwS2M.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/TR/TRWPFjvokQ5AmFcLYZk5OlgmDulZ1HeMWnwASg_0tDA.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/UZ/UZkjDOYpoE1pwHlkI402W8lj58qyM9pbBo0Jmqwnh_M.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Ut/UtUl8dEEP8OUFS138GTWLf8TE8FhJYK5c1vaXAmRM_E.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/VR/VRDKUY6-sXjrwpqcbxGHgP9_ONi3gwEVncUA1uzJPV8.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Wl/WlFfd39WfPdb8ecb3P-6msbwc6U1rpZ67MkPGvuwwPI.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Wl/WlNGLojqnKVWTZGT6xG9pS4_52XBnkQaDrxPeLOjfG0.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Wo/Wo7IjVQE59FU0N57DfY8aS_EhOHYTevXt2w-A6GG1OE.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Wp/Wp_HHYHjzz0iw5PQ3uWhju_JwBeuUmjrFE-w9P7TiJI.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Wt/WtsclIiibz_nWtYI4bN1ogz2DouCxLxRhZ4To_veN6c.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/X6/X6rI-YDY0BKCdMA_eQAK3u_bZOrZxe7wtn_t4wjcyGM.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Y2/Y2GMeqGBGgWrYZmI2sZO62LNEPoBGJ1bF9nRF5tHo30.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/YL/YLRMkD5PzC_acvA63jrF8Q_ImDPecqclwDlUHfU6tFk.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/YQ/YQfKqw0LUSliN1R029iBJ-Q5rvPflUcQMcBaQUy9tHI.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/YY/YYt9duEQUzPtfzFEbyThgE8axhVDyynnMHRsJ7ivmfU.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Yb/Yb6WF-FKlg7AX5I1fBtUVFJwGZ9lZng-WBXOWcNKBFI.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Yb/YbSqwPYrjO2_pDN9Gar6NmrSu9uPMQVK6bOg9t6rLQE.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ZD/ZDax1kp2GkGUgRyO0nM0Rrg_AqtpocNI69dbDijDz-o.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/Z_/Z_J_urKomTrgc54gT_yMF77dy5dvTc4o8tP9xBT0Ei4.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/_9/_96XOgK4uLAgBpmlNxMhvpSKR0RACQPa7b8Zs7JvFhM.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/_e/_eGqFuynzxHdBcyQcb39R3gIpkw8pJHIpIb2d3y4Wgw.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/_k/_khcJKAEuVGqYQyMhPgrorWWBci3uioHdU_rRWHor5U.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/aW/aWhzKkJzJA3zSzcyHgvAH6gY0wtH9AvCwrPfGn0yinQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/bf/bfvmq2y8rZqB0uY7rAOUlBowZqo6ufc_5nfG1LYwzBA.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/bw/bwhovo7do9KWTEDh74VaX0SkTZ9rVlapdjDGGsOkYoA.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/dA/dAk68mPJqLTk4teOIIYt_aLVM14EOuIxA9fCCeBrKFE.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/df/df1Eyp3Nlhb2MpTqIOUTNLPF3zLZm8glepkhoAgalaU.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/eH/eHywcNwiONssCBDpivCVg95qXNqh3DG7IW-Gn09y_WI.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/eW/eWSTSytTG9nrCXUXlFyNTT2SnQNavB-7ZHbQJdzRW78.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ea/eaG88T0kV6x-aQgXngib2_5TkPRHcQUsNeRwyBFvTxw.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/fR/fROdNnXbOkrkCX0VjA67bx-85BNOcWA-pr9oNeTX-6U.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/fZ/fZszKxkZvRa-5uIuGwojHFzFDfTBdaghYq0YuSDd0fg.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/h2/h2jllO4xPhzz7DDl4giyfC-M-KE2kBHbFjbKneUaH0s.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/hG/hGOgAdR_N4noGNRRx25KqnZDGCE4OtVHqBvMAxHqVCI.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/iA/iA5sBAvo4LBx2bolG45IV3j3VAir_HgEFaYJSU1CsuI.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/kA/kAE78w1XBkLkUmFIMRQaeSzbVb4I5djjXPgd9rVMQak.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/kS/kS3sp7MRq8LQbBTY9WRRMfWcKyqYZG0V9KSs9JlIDPI.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ka/ka1yaE-uG5A54kvAVKscIBd4DGwDGOnLpCk6EV4NeK8.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/kj/kjHBBL52Qb2LGmXskl7pye9EKuqYX23L_DKk5H-jTCY.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/kt/ktYvvoV5OLXgOJ-0uUmNrJzScE6jrUD1r0VeS7rToRI.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/kw/kwcepSV0CIKivTUVXF3xfeIHW4sLfQta700qqhtx-PA.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/lk/lkd5ZZsrE9KoB6uUBMiHYDIf7nUofIZ0zUzTQhw3q5M.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/m5/m5zl3ZQ9497Ws3dcM25-9xPXK7EHZhM8lN_sGgEkDao.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/nN/nNeCvN6msedBHaJP2LDnQQcMItRJFjRBEoNrxJIJsqA.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/nj/njx8yCFK0rUv9-EODcBOR1dqntXG_qErD4GKmlLVP5U.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/o7/o7uGfsn8XAZCoxgv-xvAx64lNhXKqHROrnQ0eM67ShI.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/oi/oiR9kx7NN7FtqW4tuxAqKuMbTzntnD4h4vtvnEzHJJs.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/om/om6KTDfdJHGdhoscNLPYOkzi9bALNxlUp7Ax_uVS3LY.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/op/opp4OeslOryoI1PDbzk_OMlXuQGqNjp5R-BoWFPinqk.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ox/oxrsONd2_TIlLWaYwbrbwvAoFIr4XYacRKStijLPMhs.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/pC/pCI6lsX8vSY57jAP9xHgpaaxzxIv1qwGBtNzxfbtWL0.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/pD/pDRTkMgfNorje-QH5KBHWyIJr4V7Kk0cektjtCKzsHQ.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/pS/pStecU0QLgBBJhrlftzFIOIny1_1eJQ1wb006wR6hHI.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/pc/pcZ1fITskNzguH0ctYLXa_J-6KYGEwEZim8Zi7HHWuw.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/qC/qCk8n9E10BaN-4MSbOGm-aOocRuvKbUwnEzFSOEnyMk.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/qF/qF4Jxo_QusqFxZlTUufstoSMqM8BwxOeBYeeaUlMQMM.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/rN/rN0TBip7LVkikWIt7pr5pXpebCMu-Vszwr3JtNl85Rg.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/re/reY88CfGWWiGlDTj_aT-R1IQ4HwtgJ8M4x2QSZi3g1k.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/rf/rf9yIxeJnjcgy1j_Z0ZaBP5o1fRWnI4s6RKqXtXnfNY.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/s4/s4H_e7Jtc3bYP6_jcDC1djtCN0zmdIjgfCjszHdyYSU.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/sb/sbZBtfS1lz5ysnVhxOHQ3uQx2vuw0Dml_N69G5SnVSg.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/tM/tMjri0obeX3cWblgB5ANaxvz2r1Un5w-kdAgV2mnBUw.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/tR/tR4pe9KUkOD0dXQr0Rmz49lhvtLaTX2Va99AozZ-_tk.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/tR/tRmf4Ta_ZHZRBt4KuyLVmN-3QgPG4aCqy3nqmLrjTlE.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/u-/u-1XahJaVW5YYTRugzlxdg6JhZoVk2UMhLaJF3O1vg0.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/ub/ubOIJHHBsVau6eMNKfZu9D07kkX2uEsMNChK5vWQoQU.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/uf/ufSwWA73VH7bS7CMeQp_vUlRYsZNh4Hl_SxJORHxBs8.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/vI/vIR0VWobVpWydqbzq29IQ84VRHCYBzdk3YTRh4UbH1w.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/x_/x_AI1EzZWPpRoWC6lFtm6rpp5lycO0l-JeoBiiBsQuU.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/xe/xeBZETuoTTj0K-JS67s72_rtxLpAvc5L731R6Q8CjLw.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/xl/xlv-FINzwAUI9lLqHtM8Ml6TcP0fI1T7_1hASqmh1uw.cache +1 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/xp/xpBi9YqwkljWG2uwGCwVtJFrzwGTNWjKSg_9YqqxsG0.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/yb/ybfHSoG4-2Xqjkk-hkTD4fAGZIBZWkIyHcBlQjIovJI.cache +3 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/yk/ykudLIz9khw9ygFAJSj1FFiZFv8gE8hQqykRNB9gLNI.cache +2 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/yr/yrLtWJQXs4lm9sonGNHNkFRzm8xpmrWQwGZHjIh5qXs.cache +0 -0
- data/test/dummy/tmp/cache/assets/sprockets/v4.0.0/z-/z-PkdiKIZoqXSf6edzu84RnR9qQGGL_iD94rf6GSy-0.cache +1 -0
- data/test/models/ancestry_model.rb +16 -0
- data/test/models/auto_model.rb +3 -1
- data/test/models/model.rb +2 -0
- data/test/models/nested_set_model.rb +39 -0
- data/test/router_test.rb +10 -3
- data/test/schema.rb +9 -6
- data/test/test_helper.rb +47 -36
- data/test/tree_models_controller_test.rb +70 -0
- metadata +357 -10
- data/README.textile +0 -76
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"%��z�7���8�NHM�z�,F���ˮ���G`P
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"%�N��L��5�T �p�D����^�'.��LWI�
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
I"}app/assets/config/manifest.js?type=application/javascript&id=ad83e09cd538ef8add9556148c72a56c24d674845dce5a7faef759fd8222c50a:ET
|
|
Binary file
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
[o:Set:
|
|
2
|
+
@hash}$I"environment-version:ETTI"environment-paths;TTI"rails-env;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"�file-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/config/active_scaffold/manifest.js;TTI"qfile-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/images;TTI"|file-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/images/active_scaffold;TTI"�file-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/images/active_scaffold/add.png;TTI"�file-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/images/active_scaffold/arrow_down.png;TTI"�file-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/images/active_scaffold/arrow_up.png;TTI"�file-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/images/active_scaffold/close.png;TTI"�file-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/images/active_scaffold/close_touch.png;TTI"�file-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/images/active_scaffold/config.png;TTI"�file-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/images/active_scaffold/cross.png;TTI"�file-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/images/active_scaffold/fast-arrow-left.svg;TTI"�file-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/images/active_scaffold/fast-arrow-right.svg;TTI"�file-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/images/active_scaffold/gears.png;TTI"�file-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/images/active_scaffold/indicator-small.gif;TTI"�file-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/images/active_scaffold/indicator.gif;TTI"�file-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/images/active_scaffold/magnifier.png;TTI"�file-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/images/active_scaffold/refresh.png;TTI"vfile-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/javascripts;TTI"�file-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/javascripts/active_scaffold.js.erb;TTI"vfile-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/stylesheets;TTI"�file-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/stylesheets/active_scaffold-ie.scss;TTI"�file-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/stylesheets/active_scaffold.scss;TTI"�file-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/stylesheets/active_scaffold_extensions.css.erb;TTI"�file-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/stylesheets/active_scaffold_images.scss;TTI"�file-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/stylesheets/active_scaffold_jquery_ui.css.erb;TTI"�file-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/stylesheets/active_scaffold_layout.css;TTI"�file-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/stylesheets/blue-theme.css;TTF
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
I"�/home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/config/active_scaffold/manifest.js?type=application/javascript&pipeline=self&id=b9fd4aebde344e8ae45979b9d77f3ccc50e32e2725fd52c29fa49b4e0708ae5d:ET
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"%7�[�B�h�|��ƙ ��3����BC/��8�n
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
[o:Set:
|
|
2
|
+
@hash}I"environment-version:ETTI"environment-paths;TTI"rails-env;TTI"0processors:type=text/css&file_type=text/css;TTI"�file-digest:///home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/stylesheets/blue-theme.css;TTI">processors:type=text/css&file_type=text/css&pipeline=self;TTF
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
I"�/home/sergio/web/active_scaffold_sortable/app/assets/images/active_scaffold/sortable.png?type=image/png&id=62d645e1ca2f65d2b93f0547f138e0f884c16ccb0ac99bf00cd7ca6e581e172c:ET
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"%�J�,��z��]��"�v��G�H�谷ֿp�
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
I"�/home/sergio/.rvm/gems/ruby-3.4.7@active_scaffold/gems/active_scaffold-4.1.1/app/assets/stylesheets/active_scaffold_jquery_ui.css.erb?type=text/css&pipeline=self&id=6065d180b049d867b37b6e13b1b71868cfafe22f358336a4ea73506369a8a41c:ET
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class AncestryModel < Model
|
|
4
|
+
belongs_to :parent, class_name: "AncestryModel", optional: true
|
|
5
|
+
has_many :children, class_name: "AncestryModel", foreign_key: :parent_id
|
|
6
|
+
|
|
7
|
+
scope :roots, -> { where(parent_id: nil) }
|
|
8
|
+
|
|
9
|
+
def self.ancestry_column
|
|
10
|
+
:ancestry
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def is_root?
|
|
14
|
+
parent_id.nil?
|
|
15
|
+
end
|
|
16
|
+
end
|
data/test/models/auto_model.rb
CHANGED
data/test/models/model.rb
CHANGED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# A minimal implementation of the API used by awesome_nested_set. It keeps the
|
|
4
|
+
# test focused on this plugin's integration without duplicating that gem here.
|
|
5
|
+
class NestedSetModel < Model
|
|
6
|
+
scope :roots, -> { where(parent_id: nil) }
|
|
7
|
+
|
|
8
|
+
def nested_set_scope
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def left_column_name
|
|
12
|
+
"position"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def self_and_siblings
|
|
16
|
+
relation = parent_id ? self.class.where(parent_id: parent_id) : self.class.roots
|
|
17
|
+
relation.order(:position).to_a
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def move_left
|
|
21
|
+
move_by(-1)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def move_right
|
|
25
|
+
move_by(1)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
private
|
|
29
|
+
|
|
30
|
+
def move_by(offset)
|
|
31
|
+
siblings = self_and_siblings
|
|
32
|
+
sibling = siblings[siblings.index(self) + offset]
|
|
33
|
+
return unless sibling
|
|
34
|
+
|
|
35
|
+
old_position = position
|
|
36
|
+
update_column(:position, sibling.position)
|
|
37
|
+
sibling.update_column(:position, old_position)
|
|
38
|
+
end
|
|
39
|
+
end
|
data/test/router_test.rb
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
require "test_helper"
|
|
4
|
+
|
|
5
|
+
class RouterTest < ActionDispatch::IntegrationTest
|
|
6
|
+
test "routes reorder requests" do
|
|
7
|
+
assert_routing(
|
|
8
|
+
{ method: :post, path: "/sortable_models/reorder" },
|
|
9
|
+
{ controller: "sortable_models", action: "reorder" }
|
|
10
|
+
)
|
|
11
|
+
end
|
|
5
12
|
end
|
data/test/schema.rb
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
#
|
|
1
|
+
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
ActiveRecord::Schema.define(:
|
|
4
|
-
create_table
|
|
5
|
-
t.string
|
|
6
|
-
t.integer
|
|
3
|
+
ActiveRecord::Schema.define(version: 1) do
|
|
4
|
+
create_table :models, force: true do |t|
|
|
5
|
+
t.string :name
|
|
6
|
+
t.integer :position
|
|
7
|
+
t.integer :parent_id
|
|
8
|
+
t.timestamps
|
|
7
9
|
end
|
|
8
|
-
add_index
|
|
10
|
+
add_index :models, :position
|
|
11
|
+
add_index :models, :parent_id
|
|
9
12
|
end
|
data/test/test_helper.rb
CHANGED
|
@@ -1,40 +1,51 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
ENV["RAILS_ENV"] ||= "test"
|
|
4
|
+
ENV["DATABASE_URL"] ||= "sqlite3::memory:"
|
|
5
|
+
|
|
6
|
+
require "bundler/setup"
|
|
7
|
+
require "minitest/autorun"
|
|
8
|
+
require "rails"
|
|
9
|
+
require "action_controller/railtie"
|
|
10
|
+
require "active_record/railtie"
|
|
11
|
+
require "active_scaffold"
|
|
12
|
+
require "active_scaffold_sortable"
|
|
13
|
+
|
|
14
|
+
class TestApplication < Rails::Application
|
|
15
|
+
config.root = File.expand_path("dummy", __dir__)
|
|
16
|
+
config.eager_load = false
|
|
17
|
+
config.logger = Logger.new(nil)
|
|
18
|
+
config.secret_key_base = "active-scaffold-sortable-test-secret"
|
|
19
|
+
config.hosts.clear
|
|
11
20
|
end
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
21
|
+
|
|
22
|
+
TestApplication.initialize!
|
|
23
|
+
|
|
24
|
+
Rails.application.routes.draw do
|
|
25
|
+
concern :active_scaffold, ActiveScaffold::Routing::Basic.new(association: true)
|
|
26
|
+
resources :sortable_models, concerns: :active_scaffold
|
|
27
|
+
resources :auto_models, concerns: :active_scaffold
|
|
28
|
+
resources :ancestry_models, concerns: :active_scaffold
|
|
29
|
+
resources :nested_set_models, concerns: :active_scaffold
|
|
30
|
+
resources :models, concerns: :active_scaffold
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
|
|
34
|
+
ActiveRecord::Schema.verbose = false
|
|
35
|
+
load File.expand_path("schema.rb", __dir__)
|
|
36
|
+
|
|
37
|
+
require_relative "models/model"
|
|
38
|
+
Dir[File.expand_path("models/*.rb", __dir__)].sort.each { |file| require file }
|
|
39
|
+
Dir[File.expand_path("controllers/*.rb", __dir__)].sort.each { |file| require file }
|
|
40
|
+
|
|
41
|
+
class ActionController::TestCase
|
|
42
|
+
setup do
|
|
43
|
+
@routes = Rails.application.routes
|
|
44
|
+
end
|
|
35
45
|
end
|
|
36
46
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
47
|
+
class ActionDispatch::IntegrationTest
|
|
48
|
+
setup do
|
|
49
|
+
@routes = Rails.application.routes
|
|
50
|
+
end
|
|
40
51
|
end
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "test_helper"
|
|
4
|
+
|
|
5
|
+
class TreeModelsControllerTest < ActionController::TestCase
|
|
6
|
+
setup do
|
|
7
|
+
Model.delete_all
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
test "reorders Ancestry root nodes" do
|
|
11
|
+
@controller = AncestryModelsController.new
|
|
12
|
+
first = AncestryModel.create!(name: "first", position: 1)
|
|
13
|
+
second = AncestryModel.create!(name: "second", position: 2)
|
|
14
|
+
|
|
15
|
+
post :reorder,
|
|
16
|
+
params: { "as_ancestry_models-tbody" => [second.id, first.id] },
|
|
17
|
+
xhr: true
|
|
18
|
+
|
|
19
|
+
assert_response :success
|
|
20
|
+
assert_equal 2, first.reload.position
|
|
21
|
+
assert_equal 1, second.reload.position
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
test "reorders Ancestry children without changing their parent" do
|
|
25
|
+
@controller = AncestryModelsController.new
|
|
26
|
+
parent = AncestryModel.create!(name: "parent", position: 1)
|
|
27
|
+
first = AncestryModel.create!(name: "first", position: 1, parent: parent)
|
|
28
|
+
second = AncestryModel.create!(name: "second", position: 2, parent: parent)
|
|
29
|
+
|
|
30
|
+
post :reorder,
|
|
31
|
+
params: { "as_ancestry_models-tbody" => [second.id, first.id] },
|
|
32
|
+
xhr: true
|
|
33
|
+
|
|
34
|
+
assert_response :success
|
|
35
|
+
assert_equal [parent.id, 2], [first.reload.parent_id, first.position]
|
|
36
|
+
assert_equal [parent.id, 1], [second.reload.parent_id, second.position]
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
test "auto-enables and reorders nested-set API models" do
|
|
40
|
+
@controller = NestedSetModelsController.new
|
|
41
|
+
first = NestedSetModel.create!(name: "first", position: 1)
|
|
42
|
+
second = NestedSetModel.create!(name: "second", position: 2)
|
|
43
|
+
third = NestedSetModel.create!(name: "third", position: 3)
|
|
44
|
+
|
|
45
|
+
assert NestedSetModelsController.active_scaffold_config.actions.include?(:sortable)
|
|
46
|
+
|
|
47
|
+
post :reorder,
|
|
48
|
+
params: { "as_nested_set_models-tbody" => [third.id, first.id, second.id] },
|
|
49
|
+
xhr: true
|
|
50
|
+
|
|
51
|
+
assert_response :success
|
|
52
|
+
assert_equal [third.id, first.id, second.id],
|
|
53
|
+
NestedSetModel.order(:position).pluck(:id)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
test "reorders nested-set children without changing their parent" do
|
|
57
|
+
@controller = NestedSetModelsController.new
|
|
58
|
+
parent = NestedSetModel.create!(name: "parent", position: 1)
|
|
59
|
+
first = NestedSetModel.create!(name: "first", position: 1, parent_id: parent.id)
|
|
60
|
+
second = NestedSetModel.create!(name: "second", position: 2, parent_id: parent.id)
|
|
61
|
+
|
|
62
|
+
post :reorder,
|
|
63
|
+
params: { "as_nested_set_models-tbody" => [second.id, first.id] },
|
|
64
|
+
xhr: true
|
|
65
|
+
|
|
66
|
+
assert_response :success
|
|
67
|
+
assert_equal [parent.id, 2], [first.reload.parent_id, first.position]
|
|
68
|
+
assert_equal [parent.id, 1], [second.reload.parent_id, second.position]
|
|
69
|
+
end
|
|
70
|
+
end
|