From 20548c5fc27555a520d9b22de3e4af52c50d2335 Mon Sep 17 00:00:00 2001
From: Peter Leitzen <pleitzen@gitlab.com>
Date: Wed, 4 May 2022 12:38:24 +0200
Subject: [PATCH] Add specs for HAML linter InlineJavaScript

---
 haml_lint/linter/inline_javascript.rb         |  6 ++--
 .../linter/inline_javascript_spec.rb          | 31 +++++++++++++++++++
 2 files changed, 35 insertions(+), 2 deletions(-)
 create mode 100644 spec/haml_lint/linter/inline_javascript_spec.rb

diff --git a/haml_lint/linter/inline_javascript.rb b/haml_lint/linter/inline_javascript.rb
index f9c186feae5a..f7672c983471 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 000000000000..fb35bb682473
--- /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
-- 
GitLab