merged cont.
[opensuse:yast-rest-service.git] / webservice / test / test_helper.rb
1 #--
2 # Webyast Webservice framework
3 #
4 # Copyright (C) 2009, 2010 Novell, Inc. 
5 #   This library is free software; you can redistribute it and/or modify
6 # it only under the terms of version 2.1 of the GNU Lesser General Public
7 # License as published by the Free Software Foundation. 
8 #
9 #   This library is distributed in the hope that it will be useful, but WITHOUT
10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 
12 # details. 
13 #
14 #   You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software 
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 #++
18
19 ENV["RAILS_ENV"] = "test"
20 require File.join(File.dirname(__FILE__), "..", "config", "environment")
21 require 'test_help'
22 require 'mocha'
23 require 'test/unit'
24 #provide basic test for controllers
25 require File.join(File.dirname(__FILE__),"plugin_basic_tests")
26
27 unless defined?(TESTING_POLKIT)
28   def PolKit.polkit_check(action,login)
29     return :yes
30   end
31 end
32
33 class ActiveSupport::TestCase
34
35   # Transactional fixtures accelerate your tests by wrapping each test method
36   # in a transaction that's rolled back on completion.  This ensures that the
37   # test database remains unchanged so your fixtures don't have to be reloaded
38   # between every test method.  Fewer database queries means faster tests.
39   #
40   # Read Mike Clark's excellent walkthrough at
41   #   http://clarkware.com/cgi/blosxom/2005/10/24#Rails10FastTesting
42   #
43   # Every Active Record database supports transactions except MyISAM tables
44   # in MySQL.  Turn off transactional fixtures in this case; however, if you
45   # don't care one way or the other, switching from MyISAM to InnoDB tables
46   # is recommended.
47   #
48   # The only drawback to using transactional fixtures is when you actually 
49   # need to test transactions.  Since your test is bracketed by a transaction,
50   # any transactions started in your code will be automatically rolled back.
51   self.use_transactional_fixtures = true
52
53   # Instantiated fixtures are slow, but give you @david where otherwise you
54   # would need people(:david).  If you don't want to migrate your existing
55   # test cases which use the @david style and don't mind the speed hit (each
56   # instantiated fixtures translates to a database query per test method),
57   # then set this back to true.
58   self.use_instantiated_fixtures  = false
59
60   # Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
61   #
62   # Note: You'll currently still have to declare fixtures explicitly in integration tests
63   # -- they do not yet inherit this setting
64   fixtures :all
65
66   # Add more helper methods to be used by all tests here...
67   
68   # See http://pennysmalls.com/2009/03/04/rails-23-breakage-and-fixage/
69   def clean_backtrace(&block)
70     yield
71   rescue ActiveSupport::TestCase::Assertion => error
72     framework_path = Regexp.new(File.expand_path("#{File.dirname(__FILE__)}/assertions"))
73     error.backtrace.reject! { |line| File.expand_path(line) =~ framework_path }
74     raise
75   end
76
77 end
78
79 # use a different DB for tests -  needed during RPM build
80 if !ENV['TEST_DB_PATH'].nil? && ENV['RAILS_ENV'] == 'test'
81   Rails.logger.debug "Using DB file for tests: #{ENV['TEST_DB_PATH']}"
82
83   # read the current config
84   dbconf = Rails::Configuration.new.database_configuration['test']
85
86   # update the config and make a new DB connection
87   require 'active_record'
88   dbconf['database'] = ENV['TEST_DB_PATH']
89   ActiveRecord::Base.establish_connection(dbconf)
90   ActiveRecord::Base.connection
91 end
92