diff --git a/README.md b/README.md index 8adf1ffd..3a75f3bb 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,6 @@ bin/rails g * [Core Setup](./lib/generators/rolemodel/core_setup) * [Github](./lib/generators/rolemodel/github) -* [Semaphore](./lib/generators/rolemodel/semaphore) * [Heroku](./lib/generators/rolemodel/heroku) * [Readme](./lib/generators/rolemodel/readme) * [Webpack](./lib/generators/rolemodel/webpack) diff --git a/lib/generators/rolemodel/README.md b/lib/generators/rolemodel/README.md index d4583568..a2651040 100644 --- a/lib/generators/rolemodel/README.md +++ b/lib/generators/rolemodel/README.md @@ -13,7 +13,6 @@ * [Optics](./optics) * [README](./readme) * [SaaS](./saas) -* [Semaphore](./semaphore) * [SimpleForm](./simple_form) * [Slim](./slim) * [SoftDestroyable](./soft_destroyable) diff --git a/lib/generators/rolemodel/all_generator.rb b/lib/generators/rolemodel/all_generator.rb index c9a84d60..4b8ae9c0 100644 --- a/lib/generators/rolemodel/all_generator.rb +++ b/lib/generators/rolemodel/all_generator.rb @@ -4,7 +4,6 @@ class AllGenerator < GeneratorBase def run_all_the_generators generate 'rolemodel:github' - generate 'rolemodel:semaphore' generate 'rolemodel:heroku' generate 'rolemodel:readme' generate 'rolemodel:webpack' diff --git a/spec/generators/rolemodel/all_generator_spec.rb b/spec/generators/rolemodel/all_generator_spec.rb new file mode 100644 index 00000000..e4cbf4d2 --- /dev/null +++ b/spec/generators/rolemodel/all_generator_spec.rb @@ -0,0 +1,55 @@ +RSpec.describe Rolemodel::AllGenerator, type: :generator do + # Each sub-generator is exercised by its own spec, so here we only verify + # which generators get delegated to (and in what order). + let(:invoked_generators) { [] } + + before do + # Stub on the Actions module rather than the generator class: stubbing the + # class defines a new public method on it, which Thor would then pick up as + # an additional command to run. + allow_any_instance_of(Rails::Generators::Actions).to receive(:generate) do |_instance, name, *| + invoked_generators << name + end + + run_generators + end + + it 'delegates to every rolemodel generator in order' do + expect(invoked_generators).to eq([ + 'rolemodel:github', + 'rolemodel:heroku', + 'rolemodel:readme', + 'rolemodel:webpack', + 'rolemodel:sentry', + 'rolemodel:react', + 'rolemodel:slim', + 'rolemodel:optics:all', + 'rolemodel:testing:all', + 'rolemodel:simple_form', + 'rolemodel:soft_destroyable', + 'rolemodel:saas:all', + 'rolemodel:mailers', + 'rolemodel:linters:all', + 'rolemodel:ui_components:all', + 'rolemodel:source_map', + 'rolemodel:good_job', + 'rolemodel:kaminari', + 'rolemodel:editors', + 'rolemodel:lograge' + ]) + end + + it 'only delegates to generators that exist' do + unknown = invoked_generators.reject { |name| Rails::Generators.find_by_namespace(name) } + + expect(unknown).to eq([]) + end + + it 'does not delegate to tailored_select, which is not production ready' do + expect(invoked_generators).not_to include('rolemodel:tailored_select') + end + + it 'does not delegate to a semaphore generator' do + expect(invoked_generators).not_to include(a_string_matching(/semaphore/)) + end +end