From 98de9e7fdc931e1a4f18738452c0115065efd866 Mon Sep 17 00:00:00 2001 From: Andre Arko Date: Thu, 13 Jan 2022 17:11:25 -0800 Subject: [PATCH] add better html and validation specs for erb --- .better-html.yml | 0 Gemfile | 1 + Gemfile.lock | 11 +++++++++++ spec/views/view_validation_spec.rb | 24 ++++++++++++++++++++++++ 4 files changed, 36 insertions(+) create mode 100644 .better-html.yml create mode 100644 spec/views/view_validation_spec.rb diff --git a/.better-html.yml b/.better-html.yml new file mode 100644 index 00000000..e69de29b diff --git a/Gemfile b/Gemfile index 10137d61..9e588554 100644 --- a/Gemfile +++ b/Gemfile @@ -22,6 +22,7 @@ group :development do gem "web-console", "~> 4.2" end +gem "better_html", "~> 1.0" gem "bootsnap", "~> 1.9", require: false gem "griddler-postmark", "~> 1.0", github: "r38y/griddler-postmark" gem "honeybadger", "~> 4.9" diff --git a/Gemfile.lock b/Gemfile.lock index 10180bbb..21a76356 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -76,6 +76,14 @@ GEM addressable (2.8.0) public_suffix (>= 2.0.2, < 5.0) ast (2.4.2) + better_html (1.0.16) + actionview (>= 4.0) + activesupport (>= 4.0) + ast (~> 2.0) + erubi (~> 1.4) + html_tokenizer (~> 0.0.6) + parser (>= 2.4) + smart_properties bindex (0.8.1) bootsnap (1.9.4) msgpack (~> 1.0) @@ -123,6 +131,7 @@ GEM hotwire-livereload (1.0.0) listen (>= 3.0.0) rails (>= 6.0.0) + html_tokenizer (0.0.7) htmlentities (4.3.4) i18n (1.8.11) concurrent-ruby (~> 1.0) @@ -282,6 +291,7 @@ GEM rubocop (~> 1.19) ruby-progressbar (1.11.0) shellany (0.0.1) + smart_properties (1.17.0) sprockets (4.0.2) concurrent-ruby (~> 1.0) rack (> 1, < 3) @@ -324,6 +334,7 @@ PLATFORMS x86_64-linux DEPENDENCIES + better_html (~> 1.0) bootsnap (~> 1.9) bundler-audit (~> 0.9.0) debug (~> 1.4) diff --git a/spec/views/view_validation_spec.rb b/spec/views/view_validation_spec.rb new file mode 100644 index 00000000..709f891c --- /dev/null +++ b/spec/views/view_validation_spec.rb @@ -0,0 +1,24 @@ +require "rails_helper" +require "better_html/test_helper/safe_erb_tester" + +RSpec.describe "view validation" do + include BetterHtml::TestHelper::SafeErbTester + + erb_files = Rails.root.join("app", "views") + .glob("**/{*.htm,*.html,*.htm.erb,*.html.erb,*.html+*.erb}") + + erb_files.each do |filename| + pathname = filename.relative_path_from(Rails.root) + + describe pathname do + it "has no missing javascript escapes" do + assert_erb_safety File.read(filename) + end + + it "has no html errors" do + data = File.read(filename) + BetterHtml::BetterErb::ErubiImplementation.new(data).validate! + end + end + end +end