From 47608525c64a5b45db8c7041f0543a3ecd372e47 Mon Sep 17 00:00:00 2001 From: Kristina Lim Date: Fri, 20 Jul 2018 09:27:16 +0800 Subject: [PATCH] Reset reverse when clicking another column to sort --- .../services/sort_options.js.coffee | 2 +- .../services/sort_options_spec.js.coffee | 29 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/admin/index_utils/services/sort_options.js.coffee b/app/assets/javascripts/admin/index_utils/services/sort_options.js.coffee index 770a09ac84..36f1bc4d4d 100644 --- a/app/assets/javascripts/admin/index_utils/services/sort_options.js.coffee +++ b/app/assets/javascripts/admin/index_utils/services/sort_options.js.coffee @@ -4,5 +4,5 @@ angular.module("admin.indexUtils").factory 'SortOptions', -> reverse: true toggle: (predicate) -> + @reverse = (@predicate == predicate) && !@reverse @predicate = predicate - @reverse = !@reverse diff --git a/spec/javascripts/unit/admin/index_utils/services/sort_options_spec.js.coffee b/spec/javascripts/unit/admin/index_utils/services/sort_options_spec.js.coffee index 90fd34cf02..6c4b068bc4 100644 --- a/spec/javascripts/unit/admin/index_utils/services/sort_options_spec.js.coffee +++ b/spec/javascripts/unit/admin/index_utils/services/sort_options_spec.js.coffee @@ -13,3 +13,32 @@ describe "SortOptions service", -> describe "initialising reverse", -> it "sets reverse to true", -> expect(SortOptions.reverse).toBe true + + describe "sorting by a column", -> + describe "when selecting Column A once", -> + it "sorts by Column A", -> + SortOptions.toggle("column.a") + expect(SortOptions.predicate).toEqual "column.a" + expect(SortOptions.reverse).toBe false + + describe "when selecting Column A twice", -> + it "sorts by Column A in reverse order", -> + SortOptions.toggle("column.a") + SortOptions.toggle("column.a") + expect(SortOptions.predicate).toEqual "column.a" + expect(SortOptions.reverse).toBe true + + describe "when selecting Column A once then selecting Column B once", -> + it "sorts by Column B", -> + SortOptions.toggle("column.a") + SortOptions.toggle("column.b") + expect(SortOptions.predicate).toEqual "column.b" + expect(SortOptions.reverse).toBe false + + describe "when selecting Column A twice then selecting Column B once", -> + it "sorts by Column B in reverse order", -> + SortOptions.toggle("column.a") + SortOptions.toggle("column.a") + SortOptions.toggle("column.b") + expect(SortOptions.predicate).toEqual "column.b" + expect(SortOptions.reverse).toBe false