Code spec

RSpec 2 matchers to facilitate making specs regarding Ruby code files, f.ex as generated or modified/mutated by a code generator. Also includes matchers to help spec ERB code that include either:

  • Standard rails forms
  • Formtastic
  • Simpleform

Install

gem install code-spec

Usage: Basic code matchers

See specs for examples on how to use it.

Example: Nested DSL

  ...   
  with_subclass = %q{
      class Hello < Greeting
        def hello
          # howdy
        end
      end}    
  
  it "should not have subclass Greeting" do            
    with_subclass.should have_subclass :hello, :greeting do |content|
      content.should have_method :hello do |hello|
        hello.should have_comment 'howdy'
      end
    end
  end

Usage: Form matchers

with_form_helper is used to specify which form helper to use. It can be either:

  • :formtastic
  • :simpleform
  • :railsform

describe 'Formtastic form matcher' do      
  with_form_helper :formtastic

  context "Formtastic example 1 view file" do
    let(:form_file) { File.join erb_fixtures_dir, 'formtastic-ex1.erb' }

    it "content should match form expectations" do      
      form_file.should have_content do |content|
        content.erb_code.should have_semantic_form_for '@article' do |form|
          form.should have_inputs "Basic"
        end
      end
    end
  end
end

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.

Copyright

Copyright (c) 2010 Kristian Mandrup. See LICENSE for details.