Skip to content

Commit

Permalink
Specs passing
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelroudnitski committed Feb 1, 2024
1 parent 11b4d83 commit 4c8ba1f
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 47 deletions.
2 changes: 1 addition & 1 deletion spec/factories/filterables.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
favorite_number { Faker::Number.unique.between(from: 0, to: 100_000) }
end

factory :sort_with_explicit_reversed_filterable_test_model do
factory :sort_reversed_filterable_test do
name { Faker::Name.unique.name }
favorite_number { Faker::Number.unique.between(from: 0, to: 100_000) }
end
Expand Down
14 changes: 7 additions & 7 deletions spec/models/concerns/filterable_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,7 @@
end

context "with an explicitly declared reversed sort" do
with_model :SortWithExplicitReversedFilterableTestModel, scope: :all do
with_model :SortReversedFilterableTest, scope: :all do
table do |t|
t.string :name
t.integer :favorite_number
Expand All @@ -309,7 +309,7 @@
model do
include SnFilterable::Filterable

SortWithExplicitReversedFilterableTestModel::SORT_SCOPE_MAPPINGS = { # rubocop:disable RSpec/LeakyConstantDeclaration
SortReversedFilterableTest::SORT_SCOPE_MAPPINGS = { # rubocop:disable RSpec/LeakyConstantDeclaration
"name": :sort_by_name
}.freeze

Expand All @@ -319,21 +319,21 @@
end

before do
create_list(:sort_with_explicit_reversed_filterable_test_model, 10)
create_list(:sort_reversed_filterable_test, 10)
end

it "can sort" do
expected_items = SortWithExplicitReversedFilterableTestModel.order("name ASC").map(&:name)
expected_items = SortReversedFilterableTest.order("name ASC").map(&:name)

filtered = SortWithExplicitReversedFilterableTestModel.filter(params: ActionController::Parameters.new({ sort: "name", order: "asc" }))
filtered = SortReversedFilterableTest.filter(params: ActionController::Parameters.new({ sort: "name", order: "asc" }))

expect(filtered.items.map(&:name)).to eq(expected_items)
end

it "can reverse sort" do
expected_items = SortWithExplicitReversedFilterableTestModel.order("favorite_number ASC").map(&:favorite_number)
expected_items = SortReversedFilterableTest.order("favorite_number ASC").map(&:favorite_number)

filtered = SortWithExplicitReversedFilterableTestModel.filter(params: ActionController::Parameters.new({ sort: "name", order: "desc" }))
filtered = SortReversedFilterableTest.filter(params: ActionController::Parameters.new({ sort: "name", order: "desc" }))

expect(filtered.items.map(&:favorite_number)).to eq(expected_items)
end
Expand Down
78 changes: 39 additions & 39 deletions spec/models/filtered_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -46,61 +46,61 @@

describe "#set_filter_url" do
it "creates a valid url when it has no parameters" do
expected_url = "/?filter[name]=test"
expected_url = "/?filter%5Bname%5D=test"
actual_url = filtered.set_filter_url("/", "name", "test")

expect(actual_url).to eq(expected_url)
end

it "creates a valid url when there is a conflicting filter" do
expected_url = "/?filter[name]=test"
actual_url = filtered.set_filter_url("/?filter[name]=123", "name", "test")
expected_url = "/?filter%5Bname%5D=test"
actual_url = filtered.set_filter_url("/?filter%5Bname%5D=123", "name", "test")

expect(actual_url).to eq(expected_url)
end

it "creates a valid url when there is one filter" do
expected_url = "/?filter[name]=test"
actual_url = filtered.set_filter_url("/?filter[favorite_number]=123", "name", "test")
expected_url = "/?filter%5Bname%5D=test"
actual_url = filtered.set_filter_url("/?filter%5Bfavorite_number%5D=123", "name", "test")

expect(actual_url).to eq(expected_url)
end

it "creates a valid url when there are multiple filters" do
expected_url = "/?filter[name]=test"
actual_url = filtered.set_filter_url("/?filter[favorite_number]=123&filter[created_at]=897", "name", "test")
expected_url = "/?filter%5Bname%5D=test"
actual_url = filtered.set_filter_url("/?filter%5Bfavorite_number%5D=123&filter%5Bcreated_at%5D=897", "name", "test")

expect(actual_url).to eq(expected_url)
end
end

describe "#add_filter_url" do
it "creates a valid url when there are no filters" do
expected_url = "/?filter[name]=test"
expected_url = "/?filter%5Bname%5D=test"
actual_url = filtered.add_filter_url("/", "name", "test")

expect(actual_url).to eq(expected_url)
end

it "creates a valid url when there is a conflicting filter" do
actual_url = filtered.add_filter_url("/?filter[name]=123", "name", "test")
actual_url = filtered.add_filter_url("/?filter%5Bname%5D=123", "name", "test")

expect(actual_url).to include("filter[name]=test")
expect(actual_url).to include("filter%5Bname%5D=test")
end

it "creates a valid url when there is one filter" do # rubocop:disable RSpec/MultipleExpectations
actual_url = filtered.add_filter_url("/?filter[favorite_number]=123", "name", "test")
actual_url = filtered.add_filter_url("/?filter%5Bfavorite_number%5D=123", "name", "test")

expect(actual_url).to include("filter[favorite_number]=123")
expect(actual_url).to include("filter[name]=test")
expect(actual_url).to include("filter%5Bfavorite_number%5D=123")
expect(actual_url).to include("filter%5Bname%5D=test")
end

it "creates a valid url when there are multiple filters" do # rubocop:disable RSpec/MultipleExpectations
actual_url = filtered.add_filter_url("/?filter[favorite_number]=123&filter[created_at]=897", "name", "test")
actual_url = filtered.add_filter_url("/?filter%5Bfavorite_number%5D=123&filter%5Bcreated_at%5D=897", "name", "test")

expect(actual_url).to include("filter[favorite_number]=123")
expect(actual_url).to include("filter[created_at]=897")
expect(actual_url).to include("filter[name]=test")
expect(actual_url).to include("filter%5Bfavorite_number%5D=123")
expect(actual_url).to include("filter%5Bcreated_at%5D=897")
expect(actual_url).to include("filter%5Bname%5D=test")
end
end

Expand All @@ -114,24 +114,24 @@

it "creates a valid url when there is a matching filter" do
expected_url = "/"
actual_url = filtered.remove_filter_url("/?filter[name]=123", "name")
actual_url = filtered.remove_filter_url("/?filter%5Bname%5D=123", "name")

expect(actual_url).to eq(expected_url)
end

it "creates a valid url when there are no matching filters" do
expected_url = "/?filter[favorite_number]=123"
actual_url = filtered.remove_filter_url("/?filter[favorite_number]=123", "name")
expected_url = "/?filter%5Bfavorite_number%5D=123"
actual_url = filtered.remove_filter_url("/?filter%5Bfavorite_number%5D=123", "name")

expect(actual_url).to eq(expected_url)
end

it "creates a valid url when there is a matching and multiple filters" do # rubocop:disable RSpec/MultipleExpectations
actual_url = filtered.remove_filter_url("/?filter[name]=123&filter[favorite_number]=123&filter[created_at]=897", "name")
actual_url = filtered.remove_filter_url("/?filter%5Bname%5D=123&filter%5Bfavorite_number%5D=123&filter%5Bcreated_at%5D=897", "name")

expect(actual_url).to include("filter[favorite_number]=123")
expect(actual_url).to include("filter[created_at]=897")
expect(actual_url).not_to include("filter[name]=test")
expect(actual_url).to include("filter%5Bfavorite_number%5D=123")
expect(actual_url).to include("filter%5Bcreated_at%5D=897")
expect(actual_url).not_to include("filter%5Bname%5D=test")
end
end

Expand All @@ -145,24 +145,24 @@

it "creates a valid url when there is a matching filter" do
expected_url = "/"
actual_url = filtered.remove_sub_filter_url("/?filter[name][]=123", "name", "123")
actual_url = filtered.remove_sub_filter_url("/?filter%5Bname%5D%5B%5D=123", "name", "123")

expect(actual_url).to eq(expected_url)
end

it "creates a valid url when there are no matching filters" do
expected_url = "/?filter[favorite_number][]=123"
actual_url = filtered.remove_sub_filter_url("/?filter[favorite_number][]=123", "favorite_number", "456")
expected_url = "/?filter%5Bfavorite_number%5D%5B%5D=123"
actual_url = filtered.remove_sub_filter_url("/?filter%5Bfavorite_number%5D%5B%5D=123", "favorite_number", "456")

expect(actual_url).to eq(expected_url)
end

it "creates a valid url when there is a matching and multiple filters" do # rubocop:disable RSpec/MultipleExpectations
actual_url = filtered.remove_sub_filter_url("/?filter[name][]=abc&filter[name][]=def&filter[name][]=ghi", "name", "abc")
actual_url = filtered.remove_sub_filter_url("/?filter%5Bname%5D%5B%5D=abc&filter%5Bname%5D%5B%5D=def&filter%5Bname%5D%5B%5D=ghi", "name", "abc")

expect(actual_url).not_to include("filter[name][]=abc")
expect(actual_url).to include("filter[name][]=def")
expect(actual_url).to include("filter[name][]=ghi")
expect(actual_url).not_to include("filter%5Bname%5D%5B%5D=abc")
expect(actual_url).to include("filter%5Bname%5D%5B%5D=def")
expect(actual_url).to include("filter%5Bname%5D%5B%5D=ghi")
end
end

Expand All @@ -176,7 +176,7 @@

it "creates a valid url when there are filters" do
expected_url = "/"
actual_url = filtered.clear_filter_url("/?filter[name]=test&filter[abc]=123")
actual_url = filtered.clear_filter_url("/?filter%5Bname%5D=test&filter%5Babc%5D=123")

expect(actual_url).to eq(expected_url)
end
Expand All @@ -190,7 +190,7 @@

it "creates a valid url when there is sorting and filters" do
expected_url = "/?sort=name&order=desc"
actual_url = filtered.clear_filter_url("/?filter[name]=test&filter[abc]=123&sort=name&order=desc")
actual_url = filtered.clear_filter_url("/?filter%5Bname%5D=test&filter%5Babc%5D=123&sort=name&order=desc")

expect(actual_url).to eq(expected_url)
end
Expand All @@ -212,15 +212,15 @@
end

it "creates a valid url when there are filters" do
expected_url = "/?filter[name]=test&filter[abc]=123"
actual_url = filtered.clear_sort_url("/?filter[name]=test&filter[abc]=123")
expected_url = "/?filter%5Bname%5D=test&filter%5Babc%5D=123"
actual_url = filtered.clear_sort_url("/?filter%5Bname%5D=test&filter%5Babc%5D=123")

expect(actual_url).to eq(expected_url)
end

it "creates a valid url when there is sorting and filters" do
expected_url = "/?filter[name]=test&filter[abc]=123"
actual_url = filtered.clear_sort_url("/?filter[name]=test&filter[abc]=123&sort=name&order=desc")
expected_url = "/?filter%5Bname%5D=test&filter%5Babc%5D=123"
actual_url = filtered.clear_sort_url("/?filter%5Bname%5D=test&filter%5Babc%5D=123&sort=name&order=desc")

expect(actual_url).to eq(expected_url)
end
Expand All @@ -243,14 +243,14 @@

it "creates an empty url when there are filters" do
expected_url = "/"
actual_url = filtered.clear_all_url("/?filter[name]=test&filter[abc]=123")
actual_url = filtered.clear_all_url("/?filter%5Bname%5D=test&filter%5Babc%5D=123")

expect(actual_url).to eq(expected_url)
end

it "creates an empty url when there is sorting and filters" do
expected_url = "/"
actual_url = filtered.clear_all_url("/?filter[name]=test&filter[abc]=123&sort=name&order=desc")
actual_url = filtered.clear_all_url("/?filter%5Bname%5D=test&filter%5Babc%5D=123&sort=name&order=desc")

expect(actual_url).to eq(expected_url)
end
Expand Down

0 comments on commit 4c8ba1f

Please sign in to comment.