public
Description: My money tracking app. There are many like it, but this one is mine.
Homepage:
Clone URL: git://github.com/dustin/money.git
money / test / functional / allowance_tasks_controller_test.rb
100644 107 lines (88 sloc) 3.002 kb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
require File.dirname(__FILE__) + '/../test_helper'
require 'allowance_tasks_controller'
require 'allowance_task'
 
# Re-raise errors caught by the controller.
class AllowanceTasksController; def rescue_action(e) raise e end; end
 
class AllowanceTask
  def AllowanceTask.count_active
    count :conditions => ['deleted = ?', false]
  end
end
 
class AllowanceTasksControllerTest < Test::Unit::TestCase
 
  include AuthenticatedTestHelper
 
  fixtures :users, :allowance_tasks, :allowance_logs, :groups, :categories
  fixtures :money_transactions
 
  def setup
    @controller = AllowanceTasksController.new
    @request = ActionController::TestRequest.new
    @response = ActionController::TestResponse.new
  end
 
  def test_complete
    login_as :aaron
    assert_difference 'MoneyTransaction.count', 4 do
      post :complete, :task => {"1" => "on", "3" => "on"}
    end
  end
 
  def test_redoing_unavailable
    login_as :aaron
    assert_difference 'MoneyTransaction.count', 0 do
      post :complete, :task => {"2" => "on"}
    end
  end
 
  def test_index
    login_as :quentin
    get :index
    assert_response :success
    assert_equal [2, 1, 4, 3], assigns['tasks'][users(:aaron)].map(&:id)
    assert_equal 7.35, assigns['weekly_sums'][users(:aaron)]
    assert_equal ['aaron'], assigns['tasks'].keys.map(&:login)
  end
 
  def test_new_form
    login_as :quentin
    get :new
    assert_response :success
    assert !assigns['users'].map(&:id).include?(users(:quentin).id)
 
    assert_equal [1,2], assigns['categories'].keys
    assert_equal [1,2], assigns['accounts'].keys
 
    assert_equal [1,2], assigns['accounts'][1].map(&:id)
    assert_equal [3], assigns['accounts'][2].map(&:id)
 
    assert_equal [1,2], assigns['categories'][1].map(&:id)
    assert_equal [3], assigns['categories'][2].map(&:id)
  end
 
  def test_new_form_aaron
    login_as :aaron
    get :new
    assert_response :success
    assert !assigns['users'].map(&:id).include?(users(:aaron).id)
    assert_equal [1], assigns['categories'].keys
    assert_equal [1], assigns['accounts'].keys
  end
 
  def test_new
    login_as :quentin
    assert_difference 'AllowanceTask.count' do
      post :create, :allowance_task => {
        :name => 'Test Task', :description => 'A test task.', :owner_id => 2,
        :frequency => 2, :value => 1.29,
        :from_money_account_id => 3, :from_category_id => 3,
        :to_money_account_id => 1, :to_category_id => 1
        }
      assert_response :redirect
    end
  end
 
  def test_deactivation
    login_as :quentin
    assert_difference 'AllowanceTask.count_active', -1 do
      xhr :post, :update, :id => 1, :active => 'false'
      assert_response :success
      assert_template 'allowance_tasks/deactivate'
    end
  end
 
  def test_activation
    login_as :quentin
    assert_difference 'AllowanceTask.count_active' do
      xhr :post, :update, :id => 4, :active => 'true'
      assert_response :success
      assert_template 'allowance_tasks/activate'
    end
  end
 
end