-- Noodle --
by Greg Houston


Noodle makes it practical to unit test databases. Noodle's primary function is to solve the problem of how to create, manage and clean up test data.

Example:

Imagine testing a sales order system for an issue involving the UnitPrice and UnitPriceDiscount on the SalesOrderDetail table.


Adventure Works; Tables related to SalesOrderDetail


To create a record in SalesOrderDetail you need create records in other tables due to foreign key relations. While your test only cares about 2 columns in 1 table; you have to populate 193 columns in 21 tables!

Noodle takes care of this messy problem. All you have to do is tell Noodle to create a record in SalesOrderDetail with values in UnitPrice and UnitPriceDiscount. Noodle will generate data for the other 191 columns spread across 21 tables.

For example, using Noodle with RubyFit the following table would create two records for the test.

SalesOrderDetail


UnitPrice

UnitPriceDiscount

$10

$5

$11

$0


Noodle makes tests resilient to change since the minimum amount of coding is required. Consider the example above, what happens if a Zip code table is added? The RubyFit table above doesn't need any changes! Noodle will automatically see the new table and generate data for it.

Noodle will work with Test::Unit, ZenTest, rSpec, RubyFit. In addition to Ruby, Noodle will also support IronRuby. Noodle depends on Ramen for Ruby to reflect the database schema.

Currently Noodle is in the planning and development stage. See Ramen for a taste of things to come.


Project Summary Page: http://rubyforge.org/projects/noodle/