source: subversion/sites/rails_port/test/test_helper.rb @ 14651

Last change on this file since 14651 was 14586, checked in by tomhughes, 10 years ago

Merge api06 branch to trunk.

File size: 4.8 KB
Line 
1ENV["RAILS_ENV"] = "test"
2require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
3require 'test_help'
4load 'composite_primary_keys/fixtures.rb'
5
6class Test::Unit::TestCase
7  # Transactional fixtures accelerate your tests by wrapping each test method
8  # in a transaction that's rolled back on completion.  This ensures that the
9  # test database remains unchanged so your fixtures don't have to be reloaded
10  # between every test method.  Fewer database queries means faster tests.
11  #
12  # Read Mike Clark's excellent walkthrough at
13  #   http://clarkware.com/cgi/blosxom/2005/10/24#Rails10FastTesting
14  #
15  # Every Active Record database supports transactions except MyISAM tables
16  # in MySQL.  Turn off transactional fixtures in this case; however, if you
17  # don't care one way or the other, switching from MyISAM to InnoDB tables
18  # is recommended.
19  self.use_transactional_fixtures = false
20
21  # Instantiated fixtures are slow, but give you @david where otherwise you
22  # would need people(:david).  If you don't want to migrate your existing
23  # test cases which use the @david style and don't mind the speed hit (each
24  # instantiated fixtures translates to a database query per test method),
25  # then set this back to true.
26  self.use_instantiated_fixtures  = false
27
28
29  # Load standard fixtures needed to test API methods
30  def self.api_fixtures
31    #print "setting up the api_fixtures"
32    fixtures :users, :changesets, :changeset_tags
33
34    fixtures :current_nodes, :nodes
35    set_fixture_class :current_nodes => 'Node'
36    set_fixture_class :nodes => 'OldNode'
37
38    fixtures  :current_node_tags,:node_tags
39    set_fixture_class :current_node_tags => 'NodeTag'
40    set_fixture_class :node_tags => 'OldNodeTag'
41
42    fixtures :current_ways
43    set_fixture_class :current_ways => 'Way'
44
45    fixtures :current_way_nodes, :current_way_tags
46    set_fixture_class :current_way_nodes => 'WayNode'
47    set_fixture_class :current_way_tags => 'WayTag'
48
49    fixtures :ways
50    set_fixture_class :ways => 'OldWay'
51
52    fixtures :way_nodes, :way_tags
53    set_fixture_class :way_nodes => 'OldWayNode'
54    set_fixture_class :way_tags => 'OldWayTag'
55
56    fixtures :current_relations
57    set_fixture_class :current_relations => 'Relation'
58
59    fixtures :current_relation_members, :current_relation_tags
60    set_fixture_class :current_relation_members => 'RelationMember'
61    set_fixture_class :current_relation_tags => 'RelationTag'
62
63    fixtures :relations
64    set_fixture_class :relations => 'OldRelation'
65
66    fixtures :relation_members, :relation_tags
67    set_fixture_class :relation_members => 'OldRelationMember'
68    set_fixture_class :relation_tags => 'OldRelationTag'
69   
70    fixtures :gpx_files, :gps_points, :gpx_file_tags
71    set_fixture_class :gpx_files => 'Trace'
72    set_fixture_class :gps_points => 'Tracepoint'
73    set_fixture_class :gpx_file_tags => 'Tracetag'
74  end
75
76  ##
77  # takes a block which is executed in the context of a different
78  # ActionController instance. this is used so that code can call methods
79  # on the node controller whilst testing the old_node controller.
80  def with_controller(new_controller)
81    controller_save = @controller
82    begin
83      @controller = new_controller
84      yield
85    ensure
86      @controller = controller_save
87    end
88  end
89
90  ##
91  # for some reason assert_equal a, b fails when the ways are actually
92  # equal, so this method manually checks the fields...
93  def assert_ways_are_equal(a, b)
94    assert_not_nil a, "first way is not allowed to be nil"
95    assert_not_nil b, "second way #{a.id} is not allowed to be nil"
96    assert_equal a.id, b.id, "way IDs"
97    assert_equal a.changeset_id, b.changeset_id, "changeset ID on way #{a.id}"
98    assert_equal a.visible, b.visible, "visible on way #{a.id}, #{a.visible.inspect} != #{b.visible.inspect}"
99    assert_equal a.version, b.version, "version on way #{a.id}"
100    assert_equal a.tags, b.tags, "tags on way #{a.id}"
101    assert_equal a.nds, b.nds, "node references on way #{a.id}"
102  end
103
104  ##
105  # for some reason a==b is false, but there doesn't seem to be any
106  # difference between the nodes, so i'm checking all the attributes
107  # manually and blaming it on ActiveRecord
108  def assert_nodes_are_equal(a, b)
109    assert_equal a.id, b.id, "node IDs"
110    assert_equal a.latitude, b.latitude, "latitude on node #{a.id}"
111    assert_equal a.longitude, b.longitude, "longitude on node #{a.id}"
112    assert_equal a.changeset_id, b.changeset_id, "changeset ID on node #{a.id}"
113    assert_equal a.visible, b.visible, "visible on node #{a.id}"
114    assert_equal a.version, b.version, "version on node #{a.id}"
115    assert_equal a.tags, b.tags, "tags on node #{a.id}"
116  end
117
118  def basic_authorization(user, pass)
119    @request.env["HTTP_AUTHORIZATION"] = "Basic %s" % Base64.encode64("#{user}:#{pass}")
120  end
121
122  def content(c)
123    @request.env["RAW_POST_DATA"] = c.to_s
124  end
125
126  # Add more helper methods to be used by all tests here...
127end
Note: See TracBrowser for help on using the repository browser.