Skip to content

Commit

Permalink
Add Rails 8 authentication generator
Browse files Browse the repository at this point in the history
  • Loading branch information
jeromedalbert committed Nov 11, 2024
1 parent 6ca3a8f commit 45a477b
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 0 deletions.
33 changes: 33 additions & 0 deletions lib/generators/rspec/authentication/authentication_generator.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
require 'generators/rspec'

module Rspec
module Generators
# @private
class AuthenticationGenerator < Base
attr_accessor :attributes

def self.source_root
File.expand_path(File.join(File.dirname(__FILE__), '..', 'model', 'templates'))
end

def initialize(args, *options)
args.replace(['User'])
attributes = %w(email password_digest)
super
end

def create_model_spec
template_file = target_path('models', 'user_spec.rb')
template 'model_spec.rb', template_file
end

hook_for :fixture_replacement

def create_fixture_file
return if options[:fixture_replacement]

template 'fixtures.yml', target_path('fixtures', 'users.yml')
end
end
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Generators are not automatically loaded by Rails
require 'generators/rspec/authentication/authentication_generator'
require 'support/generators'

RSpec.describe Rspec::Generators::AuthenticationGenerator, type: :generator do
setup_default_destination

it 'runs both the model and fixture tasks' do
gen = generator
expect(gen).to receive :create_model_spec
expect(gen).to receive :create_fixture_file
gen.invoke_all
end

describe 'the generated files' do
describe 'without fixtures' do
before do
run_generator
end

describe 'the fixtures' do
it "will skip the file" do
expect(File.exist?(file('spec/fixtures/posts.yml'))).to be false
end
end
end
end
end

0 comments on commit 45a477b

Please sign in to comment.