Add this line to your application's Gemfile:
gem 'subroutine-factory'And then execute:
$ bundle
Or install it yourself as:
$ gem install subroutine-factory
The Subroutine gem does a great job of encapsulating your app's business logic. To simplify the usage of Subroutine Ops in your test suite, utilize the subroutine-factory gem.
Defining factories:
Subroutine::Factory.define :signup do
  op ::SignupOp
  inputs :email, sequence{|n| "foo{n}@example.com" }
  inputs :password, "password123"
  # by default, the op will be returned when the factory is used.
  # this `output` returns the value of the accessor on the resulting op
  output :user
end
Subroutine::Factory.define :business_signup do
  # all configurations are inherited from the "signup" factory
  parent :signup
  op ::BusinessSignupOp
  input :business_name, sequence{|n| "Business #{n}" }
  # you can output multiple things into a hash by using `outputs`
  outputs :user, :business
endUsing Factories:
user = Subroutine::Factory.create :signup
user = Subroutine::Factory.create :signup, email: "foo@bar.com"
out = Subroutine::Factory.create :business_signup
out[:user] #=> User{}
out[:business] #=> Business{}Spec / Test Helper:
#spec_helper.rb, test_helper.rb
config.include ::Subroutine::Factory::SpecHelper
# in your tests
user = factory(:signup)After checking out the repo, run bin/setup to install dependencies. Then, run rake test to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.
Bug reports and pull requests are welcome on GitHub at https://github.com/mnelson/subroutine-factory.
The gem is available as open source under the terms of the MIT License.