|
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
|