Tests et qualitésource GitHub
Générateur de tests ruby
/testCrée, exécute et améliore les tests pour valider les changements.
// contenu du skill
Ruby Test Generator
Create comprehensive test files with RSpec or Minitest following Ruby testing best practices.
Purpose
This command helps you quickly create test files with proper structure, examples, and testing patterns for Ruby applications.
Usage
/testWhat this command does
- Creates test files with proper structure for RSpec or Minitest
- Includes test examples for common scenarios
- Sets up test helpers and support files
- Follows testing conventions and best practices
- Generates factory/fixture data when needed
RSpec Example Output
ruby
# spec/models/user_spec.rb
require 'spec_helper'
RSpec.describe User do
let(:user) { build(:user) }
let(:valid_attributes) do
{
name: 'John Doe',
email: 'john@example.com',
age: 30
}
end
describe 'validations' do
it { should validate_presence_of(:name) }
it { should validate_presence_of(:email) }
it { should validate_uniqueness_of(:email) }
it { should validate_numericality_of(:age).is_greater_than(0) }
context 'when email format is invalid' do
let(:user) { build(:user, email: 'invalid-email') }
it 'is not valid' do
expect(user).not_to be_valid
expect(user.errors[:email]).to include('is invalid')
end
end
end
describe 'associations' do
it { should have_many(:posts) }
it { should have_many(:comments) }
end
describe 'callbacks' do
describe 'before_save' do
it 'normalizes email' do
user = create(:user, email: 'JOHN@EXAMPLE.COM')
expect(user.email).to eq('john@example.com')
end
end
end
describe 'instance methods' do
describe '#full_name' do
let(:user) { build(:user, first_name: 'John', last_name: 'Doe') }
it 'returns the full name' do
expect(user.full_name).to eq('John Doe')
end
context 'when last_name is missing' do
let(:user) { build(:user, first_name: 'John', last_name: nil) }
it 'returns only first_name' do
expect(user.full_name).to eq('John')
end
end
end
describe '#active?' do
context 'when user is active' do
let(:user) { build(:user, status: 'active') }
it 'returns true' do
expect(user.active?).to be true
end
end
context 'when user is inactive' do
let(:user) { build(:user, status: 'inactive') }
it 'returns false' do
expect(user.active?).to be false
end
end
end
end
describe 'class methods' do
describe '.active' do
let!(:active_user) { create(:user, status: 'active') }
let!(:inactive_user) { create(:user, status: 'inactive') }
it 'returns only active users' do
expect(User.active).to include(active_user)
expect(User.active).not_to include(inactive_user)
end
end
describe '.find_by_email' do
let!(:user) { create(:user, email: 'test@example.com') }
it 'finds user by email' do
found_user = User.find_by_email('test@example.com')
expect(found_user).to eq(user)
end
it 'returns nil when user not found' do
found_user = User.find_by_email('nonexistent@example.com')
expect(found_user).to be_nil
end
end
end
describe 'scopes' do
describe '.recent' do
let!(:old_user) { create(:user, created_at: 1.year.ago) }
let!(:recent_user) { create(:user, created_at: 1.day.ago) }
it 'returns users created in the last 30 days' do
expect(User.recent).to include(recent_user)
expect(User.recent).not_to include(old_user)
end
end
end
endMinitest Example Output
ruby
# test/models/user_test.rb
require 'test_helper'
class UserTest < ActiveSupport::TestCase
def setup
@user = users(:john)
@valid_attributes = {
name: 'Jane Doe',
email: 'jane@example.com',
age: 25
}
end
# Validation tests
test 'should not save user without name' do
user = User.new(@valid_attributes.except(:name))
assert_not user.save
assert_includes user.errors[:name], "can't be blank"
end
test 'should not save user without email' do
user = User.new(@valid_attributes.except(:email))
assert_not user.save
assert_includes user.errors[:email], "can't be blank"
end
test 'should not save user with invalid email' do
user = User.new(@valid_attributes.merge(email: 'invalid-email'))
assert_not user.save
assert_includes user.errors[:email], 'is invalid'
end
test 'should not save user with duplicate email' do
user1 = User.create!(@valid_attributes)
user2 = User.new(@valid_attributes)
assert_not user2.save
assert_includes user2.errors[:email], 'has already been taken'
end
test 'should save user with valid attributes' do
user = User.new(@valid_attr// source originale publique
davila7/claude-code-templates/cli-tool/templates/ruby/.claude/commands/test.md
Licence : MIT License
Projet indépendant, non affilié à Anthropic. Ce skill reste la propriété de son auteur original.
// similaires