我正在为我的Rails应用程序的一些规格工作,涉及重新排序数据库中的模型。由于模型标识未提前知道,因此我不想对“模型标识列表应该是[1,2,3]”进行硬编码,所以我只是将它们收集到一个数组中作为一个数组,我创建它们,例如从其他阵列的红宝石切片阵列
(1..3).each
ids << Model.create().id
Model.find(:all, order: position).should == ids
不管怎样,我想测试需要订购ID列表我重新排序逻辑:
Model.reorder([3,1,2]) # will change position in db
让事情干了,我只是做:
reordered_ids = [ids[3], ids[1], ids[2]]
Model.reorder(reordered_ids)
Model.find(...).should == reordered_ids
我很好奇,如果有一个更优雅的方式去做
reordered_ids = [ids[3], ids[1], ids[2]]
这工作,但似乎并不更好:
[3,1,2].collect{|i| ids[i] }
任何想法?
有一些低序概率的混洗阵列将被排序,因此不测试任何东西。我认为对于一个规范来说,它应该是明确的 –