README.md in sequel-fixture-0.0.3 vs README.md in sequel-fixture-2.0.0
- old
+ new
@@ -1,48 +1,73 @@
Sequel::Fixture
===============
[![Build Status](https://secure.travis-ci.org/Fetcher/sequel-fixture.png)](http://travis-ci.org/Fetcher/sequel-fixture) [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/Fetcher/sequel-fixture)
-Just like Rails 2 fixtures, but for Sequel.
+Just like Rails fixtures, but for Sequel.
-Show off
-========
+This version includes support for defining the fixture schemas
+and uses sqlite3 adapter to inject data into memory.
+Usage
+=====
+Each fixture file defines the schema and data for a single table which
+is named after the file name.
+
+Schema definition is optional, but note that db inserts will fail if the tables do
+not exist.
+
Assuming you have a fixture for the table users with:
```yaml
-# test/fixtures/simple/users.yaml
-john:
- name: John
- last_name: Doe
- email: john@doe.com
-jane:
- name: Jane
- last_name: Doe
- email: jane@doe.com
+# fixtures/simple/users.yaml
+schema:
+ - name: name
+ type: string
+ primary_key: true
+ - name: last_name
+ type: string
+ - name: empty
+ type: string
+data:
+ - name: John
+ last_name: Doe
+ email: john@doe.com
+ - name: Jane
+ last_name: Doe
+ email: jane@doe.com
```
and for messages:
```yaml
-# test/fixtures/simple/messages.yaml
-greeting:
- sender_id: 1
- receiver_id: 2
- text: Hi Jane! Long time no see.
-long_time:
- sender_id: 2
- receiver_id: 1
- text: John! Long time indeed. How are you doing?
+# fixtures/simple/messages.yaml
+schema:
+ - name: sender_id
+ type: integer
+ primary_key: true
+ - name: receiver_id
+ type: integer
+ - name: text
+ type: string
+data:
+ - sender_id: 1
+ receiver_id: 2
+ text: Hi Jane! Long time no see.
+ - sender_id: 2
+ receiver_id: 1
+ text: John! Long time indeed. How are you doing?
```
and the ruby script
```ruby
# script.rb
require "sequel-fixture"
DB = Sequel.sqlite # Just a simple example, needs sqlite3 gem
+## Set the path of the fixture yaml files to be [script.rb]/fixtures/
+Sequel::Fixture.path = File.join(File.dirname(__FILE__), "fixtures")
+
fixture = Sequel::Fixture.new :simple, DB # Will load all the data in the fixture into the database
fixture.users # == fixture[:users]
fixture.users.john.name # => "John"
# The YAML files are parsed into a SymbolMatrix
@@ -63,10 +88,16 @@
```
...naturally, `sequel-fixture` makes a lot more sense within some testing framework.
-> **Note**: As of version 0.0.1, the `test/fixtures` path for fixtures is not configurable. Will solve soon.
+
+Contributing
+------------
+
+```
+bundle install --binstubs .bin --path vendor/bundle
+```
Installation
------------
gem install sequel-fixture