require "../../../spec_helper" module Ameba::Rule::Lint subject = DuplicatedRequire.new describe DuplicatedRequire do it "passes if there are no duplicated requires" do expect_no_issues subject, <<-CRYSTAL require "math" require "big" require "big/big_decimal" CRYSTAL end it "reports if there are a duplicated requires" do source = expect_issue subject, <<-CRYSTAL require "big" require "math" require "big" # ^{} error: Duplicated require of `big` CRYSTAL expect_no_corrections source end it "reports rule, pos and message" do source = Source.new %( require "./thing" require "./thing" require "./another_thing" require "./another_thing" ), "source.cr" subject.catch(source).should_not be_valid issue = source.issues.first issue.rule.should_not be_nil issue.location.to_s.should eq "source.cr:2:1" issue.end_location.to_s.should eq "" issue.message.should eq "Duplicated require of `./thing`" issue = source.issues.last issue.rule.should_not be_nil issue.location.to_s.should eq "source.cr:4:1" issue.end_location.to_s.should eq "" issue.message.should eq "Duplicated require of `./another_thing`" end end end