sw2at-tw¶ ↑
SWAT(Simple Way to Automate Tests) - Test World¶ ↑
Gem for simplying initialization of complex data in your tests.
How to install¶ ↑
Check this example or follow instructions below.
gem install rails
rails new swat-tw-app
cd swat-tw-app
bundle install
install RSpec
group :development, :test do gem 'rspec-rails', '~> 3.0' end
bundle install
Add RSpec files.
rails generate rspec:install
Create some database for your app.
rake db:create
Add a model
rails g model User
class CreateUsers < ActiveRecord::Migration def change create_table :users do |t| t.column :email, :string t.column :full_name, :string t.timestamps null: false end end end
rake db:migrate
Add TestWorld gem to your Gemfile
gem 'sw2at-tw', '0.0.3'
bundle install
Create your own TestWorld class.
“AppTestWorld” is a name of your Swat::TestWorld
subclass, you can pass any name here.
rails g swat:test_world:install AppTestWorld
Edit your new class in Rails.root/lib/swat/AppTestWorld.rb Add Methods:
def init_situation if @options[:john] User.create(email: 'john.smith@gmail.com', full_name: 'John Smith') end if @options[:josh] User.create(email: 'josh.doe@gmail.com', full_name: 'Josh Doe') end end def some_very_specific_logic puts 'Hello Test Word!' end
Configure RSpec, add lines tp Rails.root/spec/spec_helper.rb
require 'sw2at-tw' require_relative '../lib/swat/AppTestWorld' Swat::TestWorld.setup(config, klass: AppTestWorld)
Use helpers in your test. Rails.root/spec/models/user_spec.rb
require 'rails_helper' RSpec.describe User, type: :model do context 'No Swat Options' do init_tw it 'should have Users' do expect(User.count).to eq(0) end end context 'John created' do init_tw( john: true ) it 'should have Users' do expect(User.count).to eq(1) john = User.where(email: 'john.smith@gmail.com').take expect(john.full_name).to eq('John Smith') end end context 'John & Josh' do init_tw( john: true, josh: true ) it 'should have Users' do expect(User.all.map(&:full_name)).to eq([ 'John Smith', 'Josh Doe' ]) end end context 'Methods' do init_tw it 'should call Test World methods' do @tw.some_very_specific_logic end end
Run RSpec
rspec
Contributing to sw2at-tw¶ ↑
-
Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
-
Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
-
Fork the project.
-
Start a feature/bugfix branch.
-
Commit and push until you are happy with your contribution.
-
Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
-
Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
Copyright¶ ↑
Copyright © 2015 Vitaly Tarasenko. See LICENSE.txt for further details.