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

Last change on this file since 20103 was 17139, checked in by tomhughes, 11 years ago

Merge oauth branch at r17138 to trunk.

File size: 5.7 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 ActiveSupport::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
75    fixtures :client_applications
76  end
77
78  ##
79  # takes a block which is executed in the context of a different
80  # ActionController instance. this is used so that code can call methods
81  # on the node controller whilst testing the old_node controller.
82  def with_controller(new_controller)
83    controller_save = @controller
84    begin
85      @controller = new_controller
86      yield
87    ensure
88      @controller = controller_save
89    end
90  end
91
92  ##
93  # for some reason assert_equal a, b fails when the ways are actually
94  # equal, so this method manually checks the fields...
95  def assert_ways_are_equal(a, b)
96    assert_not_nil a, "first way is not allowed to be nil"
97    assert_not_nil b, "second way #{a.id} is not allowed to be nil"
98    assert_equal a.id, b.id, "way IDs"
99    assert_equal a.changeset_id, b.changeset_id, "changeset ID on way #{a.id}"
100    assert_equal a.visible, b.visible, "visible on way #{a.id}, #{a.visible.inspect} != #{b.visible.inspect}"
101    assert_equal a.version, b.version, "version on way #{a.id}"
102    assert_equal a.tags, b.tags, "tags on way #{a.id}"
103    assert_equal a.nds, b.nds, "node references on way #{a.id}"
104  end
105
106  ##
107  # for some reason a==b is false, but there doesn't seem to be any
108  # difference between the nodes, so i'm checking all the attributes
109  # manually and blaming it on ActiveRecord
110  def assert_nodes_are_equal(a, b)
111    assert_equal a.id, b.id, "node IDs"
112    assert_equal a.latitude, b.latitude, "latitude on node #{a.id}"
113    assert_equal a.longitude, b.longitude, "longitude on node #{a.id}"
114    assert_equal a.changeset_id, b.changeset_id, "changeset ID on node #{a.id}"
115    assert_equal a.visible, b.visible, "visible on node #{a.id}"
116    assert_equal a.version, b.version, "version on node #{a.id}"
117    assert_equal a.tags, b.tags, "tags on node #{a.id}"
118  end
119
120  def basic_authorization(user, pass)
121    @request.env["HTTP_AUTHORIZATION"] = "Basic %s" % Base64.encode64("#{user}:#{pass}")
122  end
123
124  def content(c)
125    @request.env["RAW_POST_DATA"] = c.to_s
126  end
127 
128  # Used to check that the error header and the forbidden responses are given
129  # when the owner of the changset has their data not marked as public
130  def assert_require_public_data(msg = "Shouldn't be able to use API when the user's data is not public")
131    assert_response :forbidden, msg
132    assert_equal @response.headers['Error'], "You must make your edits public to upload new data", "Wrong error message"
133  end
134 
135  # Not sure this is the best response we could give
136  def assert_inactive_user(msg = "an inactive user shouldn't be able to access the API")
137    assert_response :unauthorized, msg
138    #assert_equal @response.headers['Error'], ""
139  end
140 
141  def assert_no_missing_translations(msg="")
142    assert_select "span[class=translation_missing]", false, "Missing translation #{msg}"
143  end
144 
145  # Add more helper methods to be used by all tests here...
146end
Note: See TracBrowser for help on using the repository browser.