Generating Multiple RSpec Files from a Design Document
Taking queues from Adam Wiggin’s first commit to his Rush project, simply a design document and some specs, and Err the Blog’s post about BDD and generating specs from YAML, I’ve written a small Rake task that will take a single file design document in YAML and separate it out into the components you specify. For example:
spec/design.yml
Website Integration:
- should be able to log in from the front page and land at your profile
OpenID module:
- should accept an OpenID URL
- should return an error message if the URL cannot be reached
User:
- should have a valid user name
- should return an error if creating a duplicate user name is attemptedAnd then:
rake design
Takes the section headers, and flattens them as the filenames. So this particular design creates three different files, website_integration_spec.rb, openid_module_spec.rb, and user_spec.rb. They’ll look like this:
spec/user_spec.rb
require File.dirname(__FILE__) + '/spec_helper' describe 'User' do it 'should have a valid user name' it 'should return an error if creating a duplicate user name is attempted' end
And just like that, you have your specs, ready to go!
Here it is:
Please note that it will destroy those files if they already exist, replacing them! I really don’t care if you lose your existing specs! Back them up if you want to try this! You have been warned! This is more of a technique for a brand new project, anyway.
Also, please note that I’ve embedded the rake task as a GitHub Gist paste, so feel free to fork it and modify it. I’d be interested in seeing cleaner, more interesting implementations of my 30-second hack. Additionally, please choose view raw if you want to copy it, seeing as how GitHub seems to bork on a newline character in the code snippet.
