dataset

1.3.2last stable release 15 years ago
Complexity Score
Low
Open Issues
3
Dependent Projects
1
Weekly Downloadsglobal
23

License

  • MIT
    • Yesattribution
    • Permissivelinking
    • Permissivedistribution
    • Permissivemodification
    • Nopatent grant
    • Yesprivate use
    • Permissivesublicensing
    • Notrademark grant

Downloads

Readme

= Dataset

Dataset provides a simple API for creating and finding sets of data in your database. Check out Dataset::RecordMethods and Dataset::ModelFinders.

Dataset loads data intelligently if you use ‘nested contexts’ in your tests (RSpec, anything that uses Test::Unit::TestCase subclassing for creating nested contexts):

describe Something do
  dataset :a              => Dataset :a is loaded (at the right time)
                          
  it 'should whatever'    
  end                     
                          
  describe More do        
    dataset :b            => Dataset :b is loaded. :a data is still there
                          
    it 'should'           
    end                   
  end                     
                          
  describe Another do     => Database is restored to :a, without re-running :a logic
    it 'should'
    end
  end
end

The goal is to see a marked improvement in overall test run speed, basing this on the assumption that it is faster to have the OS copy a file or mySQL dump and load. Of course, we may find this to be a false assumption, but there were plenty of bugs in the former ‘Scenarios’ - addressing that afforded the opportunity to test the assumption.

Dataset does not prevent you from using other libraries like Machinist or factory_girl. If you were to used either of those, you could have a dataset like this:

require 'faker'

class OrganizationsDataset < Dataset::Base
  Sham.name  { Faker::Name.name }
  
  Organization.blueprint do
    name { Sham.name }
  end
  
  def load
    name_model Organization.make, :org_one
  end
end

The benefit is that you can reuse interesting sets of data, without sacrificing the utility of those other libraries.

describe Organization, 'stuff' do
  dataset :organizations
end

describe Organization, 'other stuff' do
  dataset :organizations
end

Get things installed, then read more in the Dataset documentation at http://aiwilliams.github.com/dataset

== Installation

Install the plugin:

./script/plugin install git://github.com/aiwilliams/dataset.git

In your test_helper.rb/spec_helper.rb:

require 'dataset'
class Test::Unit::TestCase
  include Dataset
  datasets_directory "#{RAILS_ROOT}/spec/datasets"
end

If you don’t use rspec_on_rails, or you have specs that aren’t of the RailsExampleGroup type, you should do this in spec_helper.rb:

require 'dataset'
class Spec::Example::ExampleGroup
  include Dataset
  datasets_directory "#{RAILS_ROOT}/spec/datasets"
end

If you were a user of the Scenarios plugin, and want to do as little as possible to get going (assumes you are using rspec_on_rails):

require 'dataset'
Scenario = Scenarios = Dataset
class Test::Unit::TestCase
  include Dataset
  class << self
    alias_method :scenario, :dataset
  end
end
class ScenariosResolver < Dataset::DirectoryResolver
  def suffix
    @suffix ||= 'Scenario'
  end
end
Dataset::Resolver.default = ScenariosResolver.new("#{RAILS_ROOT}/spec/scenarios")

== Credits

Written by Adam Williams.

Contributors:

  • Saturn Flyer github
  • Steve Iannopollo
  • John Long

Dataset is released under the MIT-License and is Copyright (c)2008 Adam Williams.

Dependencies

CVE IssuesActive
0
Scorecards Score
No Data
Test Coverage
No Data
Follows Semver
Yes
Github Stars
80
Dependenciestotal
2
DependenciesOutdated
0
DependenciesDeprecated
0
Threat Modelling
No
Repo Audits
No

Learn how to distribute dataset in your own private RubyGems registry

gem install dataset
Processing...
Done

2 Releases

RubyGems on Cloudsmith

Getting started with RubyGems on Cloudsmith is fast and easy.