From 3cbb3883935653ea782d4ca8abde5140d10a3c74 Mon Sep 17 00:00:00 2001 From: Sijawusz Pur Rahnama Date: Mon, 4 Apr 2022 21:20:13 +0200 Subject: [PATCH] Use issue expectation helpers in `Lint::HashDuplicatedKey` rule spec --- .../rule/lint/hash_duplicated_key_spec.cr | 33 +++++++++---------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/spec/ameba/rule/lint/hash_duplicated_key_spec.cr b/spec/ameba/rule/lint/hash_duplicated_key_spec.cr index 43b5a447..def877f7 100644 --- a/spec/ameba/rule/lint/hash_duplicated_key_spec.cr +++ b/spec/ameba/rule/lint/hash_duplicated_key_spec.cr @@ -5,26 +5,32 @@ module Ameba::Rule::Lint subject = HashDuplicatedKey.new it "passes if there is no duplicated keys in a hash literals" do - s = Source.new %( + expect_no_issues subject, <<-CRYSTAL h = {"a" => 1, :a => 2, "b" => 3} h = {"a" => 1, "b" => 2, "c" => {"a" => 3, "b" => 4}} h = {} of String => String - ) - subject.catch(s).should be_valid + CRYSTAL end it "fails if there is a duplicated key in a hash literal" do - s = Source.new %q( + expect_issue subject, <<-CRYSTAL h = {"a" => 1, "b" => 2, "a" => 3} - ) - subject.catch(s).should_not be_valid + # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: Duplicated keys in hash literal: "a" + CRYSTAL end it "fails if there is a duplicated key in the inner hash literal" do - s = Source.new %q( + expect_issue subject, <<-CRYSTAL h = {"a" => 1, "b" => {"a" => 3, "b" => 4, "a" => 5}} - ) - subject.catch(s).should_not be_valid + # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: Duplicated keys in hash literal: "a" + CRYSTAL + end + + it "reports multiple duplicated keys" do + expect_issue subject, <<-CRYSTAL + h = {"key1" => 1, "key1" => 2, "key2" => 3, "key2" => 4} + # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: Duplicated keys in hash literal: "key1", "key2" + CRYSTAL end it "reports rule, location and message" do @@ -38,14 +44,5 @@ module Ameba::Rule::Lint issue.end_location.to_s.should eq "source.cr:1:24" issue.message.should eq %(Duplicated keys in hash literal: "a") end - - it "reports multiple duplicated keys" do - s = Source.new %q( - h = {"key1" => 1, "key1" => 2, "key2" => 3, "key2" => 4} - ) - subject.catch(s).should_not be_valid - issue = s.issues.first - issue.message.should eq %(Duplicated keys in hash literal: "key1", "key2") - end end end