@@ -71,6 +71,12 @@ class ZeroBasedMixin < ActiveRecord::Base
7171 def self . table_name ( ) "mixins" end
7272end
7373
74+ class DefaultScopedMixin < ActiveRecord ::Base
75+ set_table_name 'mixins'
76+ acts_as_list :column => "pos"
77+ default_scope order ( 'pos ASC' )
78+ end
79+
7480class ZeroBasedTest < Test ::Unit ::TestCase
7581 def setup
7682 setup_db
@@ -1248,3 +1254,89 @@ def test_remove_before_destroy_does_not_shift_lower_items_twice
12481254 end
12491255
12501256end
1257+
1258+ class DefaultScopedTest < Test ::Unit ::TestCase
1259+ def setup
1260+ setup_db
1261+ ( 1 ..4 ) . each { |counter | DefaultScopedMixin . create! :pos => counter }
1262+ end
1263+
1264+ def teardown
1265+ teardown_db
1266+ end
1267+
1268+ def test_insert
1269+ new = DefaultScopedMixin . create
1270+ assert_equal 5 , new . pos
1271+ assert !new . first?
1272+ assert new . last?
1273+
1274+ new = DefaultScopedMixin . create
1275+ assert_equal 6 , new . pos
1276+ assert !new . first?
1277+ assert new . last?
1278+
1279+ new = DefaultScopedMixin . create
1280+ assert_equal 7 , new . pos
1281+ assert !new . first?
1282+ assert new . last?
1283+ end
1284+
1285+ def test_reordering
1286+ assert_equal [ 1 , 2 , 3 , 4 ] , DefaultScopedMixin . find ( :all ) . map ( &:id )
1287+
1288+ DefaultScopedMixin . find ( 2 ) . move_lower
1289+ assert_equal [ 1 , 3 , 2 , 4 ] , DefaultScopedMixin . find ( :all ) . map ( &:id )
1290+
1291+ DefaultScopedMixin . find ( 2 ) . move_higher
1292+ assert_equal [ 1 , 2 , 3 , 4 ] , DefaultScopedMixin . find ( :all ) . map ( &:id )
1293+
1294+ DefaultScopedMixin . find ( 1 ) . move_to_bottom
1295+ assert_equal [ 2 , 3 , 4 , 1 ] , DefaultScopedMixin . find ( :all ) . map ( &:id )
1296+
1297+ DefaultScopedMixin . find ( 1 ) . move_to_top
1298+ assert_equal [ 1 , 2 , 3 , 4 ] , DefaultScopedMixin . find ( :all ) . map ( &:id )
1299+
1300+ DefaultScopedMixin . find ( 2 ) . move_to_bottom
1301+ assert_equal [ 1 , 3 , 4 , 2 ] , DefaultScopedMixin . find ( :all ) . map ( &:id )
1302+
1303+ DefaultScopedMixin . find ( 4 ) . move_to_top
1304+ assert_equal [ 4 , 1 , 3 , 2 ] , DefaultScopedMixin . find ( :all ) . map ( &:id )
1305+ end
1306+
1307+ def test_insert_at
1308+ new = DefaultScopedMixin . create
1309+ assert_equal 5 , new . pos
1310+
1311+ new = DefaultScopedMixin . create
1312+ assert_equal 6 , new . pos
1313+
1314+ new = DefaultScopedMixin . create
1315+ assert_equal 7 , new . pos
1316+
1317+ new4 = DefaultScopedMixin . create
1318+ assert_equal 8 , new4 . pos
1319+
1320+ new4 . insert_at ( 2 )
1321+ assert_equal 2 , new4 . pos
1322+
1323+ new . reload
1324+ assert_equal 8 , new . pos
1325+
1326+ new . insert_at ( 2 )
1327+ assert_equal 2 , new . pos
1328+
1329+ new4 . reload
1330+ assert_equal 3 , new4 . pos
1331+
1332+ new5 = DefaultScopedMixin . create
1333+ assert_equal 9 , new5 . pos
1334+
1335+ new5 . insert_at ( 1 )
1336+ assert_equal 1 , new5 . pos
1337+
1338+ new4 . reload
1339+ assert_equal 4 , new4 . pos
1340+ end
1341+
1342+ end
0 commit comments