require 'rails_helper' describe Dorsale::SortingHelper, type: :helper do describe "#sortable_column" do let(:params) {{ :controller => "home", :action => "home", }} it "current sort is nil" do link = sortable_column("text", :col) expect(link).to eq %(text) end it "current sort is col" do params.merge!(sort: "col") link = sortable_column("text", :col) expect(link).to eq %(text ↓) end it "current sort is -col" do params.merge!(sort: "-col") link = sortable_column("text", :col) expect(link).to eq %(text ↑) end it "current sort is other" do params.merge!(sort: "other") link = sortable_column("text", :col) expect(link).to eq %(text) end it "current sort is -other" do params.merge!(sort: "-other") link = sortable_column("text", :col) expect(link).to eq %(text) end it "should raise on invalid column type" do # old handles_sortable_columns syntax expect { sortable_column("text", {column: "col"}) }.to raise_error ArgumentError end end # describe "#sortable_column" describe "#sortable_column_order" do attr_reader :params it "should parse asc column" do @params = {sort: "col"} expect(sortable_column_order).to eq ["col", :asc] end it "should parse desc column" do @params = {sort: "-col"} expect(sortable_column_order).to eq ["col", :desc] end it "should parse nil" do @params = {} expect(sortable_column_order).to eq [nil, nil] end it "should accept block" do @params = {sort: "-col"} sortable_column_order do |column, order| expect(column).to eq "col" expect(order).to eq :desc end end end # describe "#sortable_column_order" end