From bfa2e0b678009a72b5684818abd36ad188af9560 Mon Sep 17 00:00:00 2001 From: Mason Hale Date: Tue, 18 Jul 2017 10:53:33 -0500 Subject: [PATCH 1/3] Add support for nil scope values (such as deleted_at), with unit test --- lib/stringex/acts_as_url/adapter/base.rb | 6 ++++-- test/unit/acts_as_url_integration_test.rb | 13 +++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/stringex/acts_as_url/adapter/base.rb b/lib/stringex/acts_as_url/adapter/base.rb index 0c51c7a6..9d5036b1 100644 --- a/lib/stringex/acts_as_url/adapter/base.rb +++ b/lib/stringex/acts_as_url/adapter/base.rb @@ -64,8 +64,10 @@ def add_new_record_url_owner_conditions def add_scoped_url_owner_conditions [settings.scope_for_url].flatten.compact.each do |scope| - @url_owner_conditions.first << " and #{scope} = ?" - @url_owner_conditions << instance.send(scope) + scope_val = instance.send(scope) + cond_sql_operator = scope_val.nil? ? 'IS' : '=' + @url_owner_conditions.first << " AND #{scope} #{cond_sql_operator} ?" + @url_owner_conditions << scope_val end end diff --git a/test/unit/acts_as_url_integration_test.rb b/test/unit/acts_as_url_integration_test.rb index 20ae2220..96bb59bf 100644 --- a/test/unit/acts_as_url_integration_test.rb +++ b/test/unit/acts_as_url_integration_test.rb @@ -177,6 +177,18 @@ def test_should_only_create_unique_urls_for_multiple_scopes_if_both_attributes_a assert_not_equal @doc.url, @other_doc.url end + def test_should_create_uniuque_urls_for_nil_scope_values + Document.class_eval do + acts_as_url :title, scope: [:other, :another] + end + + @doc = Document.create(title: "Mocumentary", other: "Suddenly, I care if I'm unique", + another: nil) + @other_doc = Document.create(title: "Mocumentary", other: "Suddenly, I care if I'm unique", + another: nil) + assert_not_equal @doc.url, @other_doc.url + end + def test_should_allow_setting_url_attribute Document.class_eval do # Manually undefining the url method on Document which, in a real class not reused for tests, @@ -422,4 +434,5 @@ def url_taken?(url) @doc = Document.create(title: "unique") assert_equal "unique-3", @doc.url end + end From e43290f39f37cd0939869fdeda9fa430e0b8a40d Mon Sep 17 00:00:00 2001 From: Mason Hale Date: Tue, 18 Jul 2017 11:05:01 -0500 Subject: [PATCH 2/3] Fix houndci-bot issues --- lib/stringex/acts_as_url/adapter/base.rb | 4 ++-- test/unit/acts_as_url_integration_test.rb | 15 +++++++++------ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/stringex/acts_as_url/adapter/base.rb b/lib/stringex/acts_as_url/adapter/base.rb index 9d5036b1..8a2320d2 100644 --- a/lib/stringex/acts_as_url/adapter/base.rb +++ b/lib/stringex/acts_as_url/adapter/base.rb @@ -65,8 +65,8 @@ def add_new_record_url_owner_conditions def add_scoped_url_owner_conditions [settings.scope_for_url].flatten.compact.each do |scope| scope_val = instance.send(scope) - cond_sql_operator = scope_val.nil? ? 'IS' : '=' - @url_owner_conditions.first << " AND #{scope} #{cond_sql_operator} ?" + sql_operator = scope_val.nil? ? "IS" : "=" + @url_owner_conditions.first << " AND #{scope} #{sql_operator} ?" @url_owner_conditions << scope_val end end diff --git a/test/unit/acts_as_url_integration_test.rb b/test/unit/acts_as_url_integration_test.rb index 96bb59bf..417f770e 100644 --- a/test/unit/acts_as_url_integration_test.rb +++ b/test/unit/acts_as_url_integration_test.rb @@ -179,13 +179,17 @@ def test_should_only_create_unique_urls_for_multiple_scopes_if_both_attributes_a def test_should_create_uniuque_urls_for_nil_scope_values Document.class_eval do - acts_as_url :title, scope: [:other, :another] + acts_as_url :title, scope: %i[other, another] end - @doc = Document.create(title: "Mocumentary", other: "Suddenly, I care if I'm unique", - another: nil) - @other_doc = Document.create(title: "Mocumentary", other: "Suddenly, I care if I'm unique", - another: nil) + @doc = Document.create(title: "Soft Deleted Document", + other: "scope key", + another: nil) + + @other_doc = Document.create(title: "Soft Deleted Document", + other: "scope key", + another: nil) + assert_not_equal @doc.url, @other_doc.url end @@ -434,5 +438,4 @@ def url_taken?(url) @doc = Document.create(title: "unique") assert_equal "unique-3", @doc.url end - end From 20010fb887c8c8b1068755643f2e169e34a636b9 Mon Sep 17 00:00:00 2001 From: Mason Hale Date: Tue, 18 Jul 2017 11:12:12 -0500 Subject: [PATCH 3/3] Fix more houndci-bot issues --- test/unit/acts_as_url_integration_test.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/unit/acts_as_url_integration_test.rb b/test/unit/acts_as_url_integration_test.rb index 417f770e..0d58d98e 100644 --- a/test/unit/acts_as_url_integration_test.rb +++ b/test/unit/acts_as_url_integration_test.rb @@ -179,14 +179,14 @@ def test_should_only_create_unique_urls_for_multiple_scopes_if_both_attributes_a def test_should_create_uniuque_urls_for_nil_scope_values Document.class_eval do - acts_as_url :title, scope: %i[other, another] + acts_as_url :title, scope: %i[other another] end - @doc = Document.create(title: "Soft Deleted Document", + @doc = Document.create(title: "Soft Deleted Document", other: "scope key", another: nil) - @other_doc = Document.create(title: "Soft Deleted Document", + @other_doc = Document.create(title: "Soft Deleted Document", other: "scope key", another: nil)