Initial import
[doozer.git] / test / unit / builder_test.rb
blobc38b56e576c6d2095b9ba807b6aa9ff75f39cf37
1 require File.dirname(__FILE__) + '/../test_helper'
2 require 'doozer'
4 require 'pp'
6 class BuilderTest < Test::Unit::TestCase
7   
8   def setup
9     Doozer.reset!
10     created_on_time = Time.now.to_s(:db)
11     
12     Doozer.define :user do 
13       field_order :name, :email, :password
14       defaults    :password=>'???', :created_on=>created_on_time
15       before_generate do |atts|
16         begin
17           atts[:login] = Doozer.object_list[:user][:row_names][atts[:id]-1].to_s unless atts.has_key?(:login)
18         rescue
19           puts "Oops"
20         end
21       end
22     end
23     
24     user :bob, "Bob", "bob@yahoo.com", "Bobo"
25     user "Other", "other@gmail.com"  
26   
27     @created_on_time = created_on_time
28   end
30   should "generate output yaml string" do # ------------------------------
32     out = Doozer::Builder.build_output_for_type(:user)
33     data = YAML::load(out)
35     expected_data = {
36       'bob'=>{ 
37         'id'=>1,
38         'login'=>'bob',
39         'name'=>'Bob', 
40         'email'=>'bob@yahoo.com', 
41         'password'=>'Bobo',
42         'created_on'=>@created_on_time
43       },
44       'user_2'=>{
45         'id'=>2,
46         'login'=>'user_2',
47         'name'=>'Other',
48         'email'=>'other@gmail.com',
49         'password'=>'???',
50         'created_on'=>@created_on_time
51       }
52     }
53     
54     assert_equal expected_data, data
55   end
56   
57   should "generate yaml fixture files" do # ------------------------------
58     
59     Doozer.define :node do
60       field_order   :name
61     end
63     node "Root Node" do
64       node "First Child" do
65         node "Sub Child 1"
66         node "Sub Child 2"
67       end
68       node "Second Child"
69     end
70     
71     assert_nothing_raised(RuntimeError) do
72       Doozer::Builder.write_fixtures(File.join(File.dirname(__FILE__), '..', 'fixtures'))
73     end
74     assert_raise(RuntimeError) do
75       Doozer::Builder.write_fixtures(File.join(File.dirname(__FILE__), "crap"))
76     end
77   end
79 end