diff --git a/haml_lint/linter/inline_javascript.rb b/haml_lint/linter/inline_javascript.rb index f9c186feae5a72a292e5c437ca5b73985039a5f8..f7672c9834719c38034e4e9b4efc1ee442fa6c95 100644 --- a/haml_lint/linter/inline_javascript.rb +++ b/haml_lint/linter/inline_javascript.rb @@ -5,16 +5,18 @@ class Linter class InlineJavaScript < Linter include ::HamlLint::LinterRegistry + MSG = 'Inline JavaScript is discouraged (https://docs.gitlab.com/ee/development/gotchas.html#do-not-use-inline-javascript-in-views)' + def visit_filter(node) return unless node.filter_type == 'javascript' - record_lint(node, 'Inline JavaScript is discouraged (https://docs.gitlab.com/ee/development/gotchas.html#do-not-use-inline-javascript-in-views)') + record_lint(node, MSG) end def visit_tag(node) return unless node.tag_name == 'script' - record_lint(node, 'Inline JavaScript is discouraged (https://docs.gitlab.com/ee/development/gotchas.html#do-not-use-inline-javascript-in-views)') + record_lint(node, MSG) end end end diff --git a/spec/haml_lint/linter/inline_javascript_spec.rb b/spec/haml_lint/linter/inline_javascript_spec.rb new file mode 100644 index 0000000000000000000000000000000000000000..fb35bb68247383eb9c628198954bbefb03338937 --- /dev/null +++ b/spec/haml_lint/linter/inline_javascript_spec.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +require 'fast_spec_helper' +require 'haml_lint' +require 'haml_lint/spec' +require 'rspec-parameterized' + +require_relative '../../../haml_lint/linter/inline_javascript' + +RSpec.describe HamlLint::Linter::InlineJavaScript do # rubocop:disable RSpec/FilePath + using RSpec::Parameterized::TableSyntax + + include_context 'linter' + + let(:message) { described_class::MSG } + + where(:haml, :should_report) do + '%script' | true + '%javascript' | false + ':javascript' | true + ':markdown' | false + end + + with_them do + if params[:should_report] + it { is_expected.to report_lint message: message } + else + it { is_expected.not_to report_lint } + end + end +end