Skip to content

Commit e963ee1

Browse files
Introduce suspenders:accessibility generator
Ported over from #1105 Installs [capybara_accessibility_audit] and [capybara_accessible_selectors]. `./bin/rails g suspenders:accessibility` [capybara_accessibility_audit]: https://github.com/thoughtbot/capybara_accessibility_audit [capybara_accessible_selectors]: https://github.com/citizensadvice/capybara_accessible_selectors
1 parent 84e0c95 commit e963ee1

File tree

4 files changed

+85
-1
lines changed

4 files changed

+85
-1
lines changed

NEWS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
Unreleased
22

33
* Remove `suspenders` system executable
4+
* Introduce `suspenders:accessibility` generator
45

56
20230113.0 (January, 13, 2023)
67

README.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,14 @@ end
2121

2222
## Generators
2323

24-
TODO
24+
### Accessibility
25+
26+
Installs [capybara_accessibility_audit] and [capybara_accessible_selectors]
27+
28+
`./bin/rails g suspenders:accessibility`
29+
30+
[capybara_accessibility_audit]: https://github.com/thoughtbot/capybara_accessibility_audit
31+
[capybara_accessible_selectors]: https://github.com/citizensadvice/capybara_accessible_selectors
2532

2633
## Contributing
2734

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
module Suspenders
2+
module Generators
3+
class AccessibilityGenerator < Rails::Generators::Base
4+
desc "Installs capybara_accessibility_audit and capybara_accessible_selectors"
5+
6+
def add_capybara_gems
7+
gem_group :test do
8+
gem "capybara_accessibility_audit"
9+
gem "capybara_accessible_selectors", github: "citizensadvice/capybara_accessible_selectors"
10+
end
11+
Bundler.with_unbundled_env { run "bundle install" }
12+
end
13+
end
14+
end
15+
end
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
require "test_helper"
2+
require "generators/suspenders/accessibility_generator"
3+
4+
module Suspenders
5+
module Generators
6+
class AccessibilityGeneratorTest < Rails::Generators::TestCase
7+
include Suspenders::TestHelpers
8+
9+
tests Suspenders::Generators::AccessibilityGenerator
10+
destination Rails.root
11+
setup :prepare_destination
12+
teardown :restore_destination
13+
14+
test "generator runs without errors" do
15+
assert_nothing_raised do
16+
run_generator
17+
end
18+
end
19+
20+
test "adds gems to Gemfile" do
21+
expected_output = <<~RUBY
22+
group :test do
23+
gem "capybara_accessibility_audit"
24+
gem "capybara_accessible_selectors", github: "citizensadvice/capybara_accessible_selectors"
25+
end
26+
RUBY
27+
28+
run_generator
29+
30+
assert_file app_root("Gemfile") do |file|
31+
assert_match(expected_output, file)
32+
end
33+
end
34+
35+
test "installs gems with Bundler" do
36+
Bundler.stubs(:with_unbundled_env).yields
37+
generator.expects(:run).with("bundle install").once
38+
39+
capture(:stdout) do
40+
generator.add_capybara_gems
41+
end
42+
end
43+
44+
test "generator has a description" do
45+
description = "Installs capybara_accessibility_audit and capybara_accessible_selectors"
46+
47+
assert_equal description, Suspenders::Generators::AccessibilityGenerator.desc
48+
end
49+
50+
private
51+
52+
def prepare_destination
53+
touch "Gemfile"
54+
end
55+
56+
def restore_destination
57+
remove_file_if_exists "Gemfile"
58+
end
59+
end
60+
end
61+
end

0 commit comments

Comments
 (0)