1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- require 'rails_helper'
- describe SortableTable do
- class SortableTestController
- attr_accessor :params
- def self.helper(foo)
- end
- include SortableTable
- public :set_table_sort
- public :table_sort
- end
- describe "#set_table_sort" do
- let(:controller) { SortableTestController.new }
- let(:default) { { column2: :asc }}
- let(:options) { { sorts: %w[column1 column2], default: default } }
- it "uses a default when no sort is given" do
- controller.params = {}
- controller.set_table_sort options
- expect(controller.table_sort).to eq(default)
- end
- it "applies the given sort when one is passed in" do
- controller.params = { sort: "column1.desc" }
- controller.set_table_sort options
- expect(controller.table_sort).to eq({ column1: :desc })
- controller.params = { sort: "column1.asc" }
- controller.set_table_sort options
- expect(controller.table_sort).to eq({ column1: :asc })
- controller.params = { sort: "column2.desc" }
- controller.set_table_sort options
- expect(controller.table_sort).to eq({ column2: :desc })
- end
- it "ignores unknown directions" do
- controller.params = { sort: "column1.foo" }
- controller.set_table_sort options
- expect(controller.table_sort).to eq({ column1: :asc })
- controller.params = { sort: "column1.foo drop tables" }
- controller.set_table_sort options
- expect(controller.table_sort).to eq({ column1: :asc })
- end
- it "ignores unknown columns" do
- controller.params = { sort: "foo.asc" }
- controller.set_table_sort options
- expect(controller.table_sort).to eq(default)
- controller.params = { sort: ";drop table;.asc" }
- controller.set_table_sort options
- expect(controller.table_sort).to eq(default)
- end
- end
- end
|