Class: Zena::Unit::TestCase

Inherits:
ActiveSupport::TestCase
  • Object
show all
Includes:
Authlogic::TestCase, Acts::Secure, Zena::Use::Fixtures, Zena::Use::TestHelper
Defined in:
lib/zena/unit/test_case.rb

Constant Summary

Constants included from Zena::Use::Fixtures

Zena::Use::Fixtures::FILE_FIXTURES_PATH, Zena::Use::Fixtures::FIXTURE_PATH

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Acts::Secure

#secure_scope, #secure_write_scope, #visitor=

Methods included from Acts::Secure::SecureResult

#construct_id_map, #secure_result

Methods included from Zena::Use::TestHelper

#err, #execute_after_commit!, #file_path, #login, #preserving_files, #set_date, #uploaded_archive, #uploaded_fixture, #uploaded_jpg, #uploaded_pdf, #uploaded_png, #uploaded_text, #uploaded_zip, #with_caching, #without_files

Methods included from Zena::Use::Fixtures

dest_filepath, included, #load_fixtures, load_fixtures, reset_data_folder, reset_public_folder, #test_site

Class Method Details

.helper_attr(*args) ⇒ Object



16
17
18
# File 'lib/zena/unit/test_case.rb', line 16

def self.helper_attr(*args)
  # Ignore since we include helpers in the TestCase itself
end

Instance Method Details

#main_dateObject

Specific helpers to validate model relations and queries with SQLiss



21
22
23
24
# File 'lib/zena/unit/test_case.rb', line 21

def main_date
  raise "The test uses 'validate_query' without defining @main_date" unless @main_date
  return @main_date.strftime("'%Y-%m-%d'")
end

#setupObject



11
12
13
14
# File 'lib/zena/unit/test_case.rb', line 11

def setup
  #log anonymously by default
  (:anon)
end

#validate_query(query, expected_list) ⇒ Object

Test a query (useful with complex custom queries). Usage:

validate_query "emp_comp_dates where log_at is not null", [
  { :title    => 'Creativity',
    :priority => '5',
    :log_at   => '2010-06-01',
    :event_at => '2011-06-01',
  },
  { :title    => 'Leadership',
    :priority => '5',
    :log_at   => '2003-01-01',
    :event_at => nil, # forever
  },
]


41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/zena/unit/test_case.rb', line 41

def validate_query(query, expected_list)
  list = subject.find(:all, query.gsub('&lt;', '<').gsub('&gt;', '>'), :errors => true)
  if expected_list.nil? || expected_list.empty?
    assert_equal nil, list
  elsif expected_list.first.kind_of?(String)
    assert_equal expected_list, list.map(&:title)
  elsif list.nil?
    assert_equal expected_list, list
  elsif list.kind_of?(::QueryBuilder::Error)
    assert_equal expected_list, list.to_s
  else
    proto = expected_list.first.keys
    sz = [expected_list.size, list.size].max

    (0..(sz-1)).to_a.each do |i|
      record   = list[i]
      expected = expected_list[i]
      if not record
        assert_equal expected[:title], nil
      elsif not expected
        assert_equal nil, map_to_proto(proto, record)
      else
        if expected[:title] != record.title
          assert_equal expected[:title], map_to_proto(proto, record)
        else
          expected.keys.each do |key|
            value = format_date(record[key] || record.send(key))
            assert_equal expected[key], value, "(#{record.title} #{key} expected to be #{expected[key].inspect} but was #{value.inspect}"
          end
        end
      end
    end
  end
end