Mercurial > hg > soundsoftware-site
comparison test/unit/lib/redmine/views/builders/json_test.rb @ 909:cbb26bc654de redmine-1.3
Update to Redmine 1.3-stable branch (Redmine SVN rev 8964)
author | Chris Cannam |
---|---|
date | Fri, 24 Feb 2012 19:09:32 +0000 |
parents | 8661b858af72 |
children | 433d4f72a19b |
comparison
equal
deleted
inserted
replaced
908:c6c2cbd0afee | 909:cbb26bc654de |
---|---|
1 # Redmine - project management software | 1 # Redmine - project management software |
2 # Copyright (C) 2006-2010 Jean-Philippe Lang | 2 # Copyright (C) 2006-2011 Jean-Philippe Lang |
3 # | 3 # |
4 # This program is free software; you can redistribute it and/or | 4 # This program is free software; you can redistribute it and/or |
5 # modify it under the terms of the GNU General Public License | 5 # modify it under the terms of the GNU General Public License |
6 # as published by the Free Software Foundation; either version 2 | 6 # as published by the Free Software Foundation; either version 2 |
7 # of the License, or (at your option) any later version. | 7 # of the License, or (at your option) any later version. |
8 # | 8 # |
9 # This program is distributed in the hope that it will be useful, | 9 # This program is distributed in the hope that it will be useful, |
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
12 # GNU General Public License for more details. | 12 # GNU General Public License for more details. |
13 # | 13 # |
14 # You should have received a copy of the GNU General Public License | 14 # You should have received a copy of the GNU General Public License |
15 # along with this program; if not, write to the Free Software | 15 # along with this program; if not, write to the Free Software |
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | 16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
17 | 17 |
18 require File.expand_path('../../../../../../test_helper', __FILE__) | 18 require File.expand_path('../../../../../../test_helper', __FILE__) |
19 | 19 |
20 class Redmine::Views::Builders::JsonTest < HelperTestCase | 20 class Redmine::Views::Builders::JsonTest < ActiveSupport::TestCase |
21 | 21 |
22 def test_hash | 22 def test_hash |
23 assert_json_output({'person' => {'name' => 'Ryan', 'age' => 32}}) do |b| | 23 assert_json_output({'person' => {'name' => 'Ryan', 'age' => 32}}) do |b| |
24 b.person do | 24 b.person do |
25 b.name 'Ryan' | 25 b.name 'Ryan' |
26 b.age 32 | 26 b.age 32 |
27 end | 27 end |
28 end | 28 end |
29 end | 29 end |
30 | 30 |
31 def test_hash_hash | 31 def test_hash_hash |
32 assert_json_output({'person' => {'name' => 'Ryan', 'birth' => {'city' => 'London', 'country' => 'UK'}}}) do |b| | 32 assert_json_output({'person' => {'name' => 'Ryan', 'birth' => {'city' => 'London', 'country' => 'UK'}}}) do |b| |
33 b.person do | 33 b.person do |
34 b.name 'Ryan' | 34 b.name 'Ryan' |
35 b.birth :city => 'London', :country => 'UK' | 35 b.birth :city => 'London', :country => 'UK' |
36 end | 36 end |
37 end | 37 end |
38 | 38 |
39 assert_json_output({'person' => {'id' => 1, 'name' => 'Ryan', 'birth' => {'city' => 'London', 'country' => 'UK'}}}) do |b| | 39 assert_json_output({'person' => {'id' => 1, 'name' => 'Ryan', 'birth' => {'city' => 'London', 'country' => 'UK'}}}) do |b| |
40 b.person :id => 1 do | 40 b.person :id => 1 do |
41 b.name 'Ryan' | 41 b.name 'Ryan' |
42 b.birth :city => 'London', :country => 'UK' | 42 b.birth :city => 'London', :country => 'UK' |
43 end | 43 end |
44 end | 44 end |
45 end | 45 end |
46 | 46 |
47 def test_array | 47 def test_array |
48 assert_json_output({'books' => [{'title' => 'Book 1', 'author' => 'B. Smith'}, {'title' => 'Book 2', 'author' => 'G. Cooper'}]}) do |b| | 48 assert_json_output({'books' => [{'title' => 'Book 1', 'author' => 'B. Smith'}, {'title' => 'Book 2', 'author' => 'G. Cooper'}]}) do |b| |
49 b.array :books do |b| | 49 b.array :books do |b| |
50 b.book :title => 'Book 1', :author => 'B. Smith' | 50 b.book :title => 'Book 1', :author => 'B. Smith' |
51 b.book :title => 'Book 2', :author => 'G. Cooper' | 51 b.book :title => 'Book 2', :author => 'G. Cooper' |
61 b.author 'G. Cooper' | 61 b.author 'G. Cooper' |
62 end | 62 end |
63 end | 63 end |
64 end | 64 end |
65 end | 65 end |
66 | 66 |
67 def test_array_with_content_tags | 67 def test_array_with_content_tags |
68 assert_json_output({'books' => [{'value' => 'Book 1', 'author' => 'B. Smith'}, {'value' => 'Book 2', 'author' => 'G. Cooper'}]}) do |b| | 68 assert_json_output({'books' => [{'value' => 'Book 1', 'author' => 'B. Smith'}, {'value' => 'Book 2', 'author' => 'G. Cooper'}]}) do |b| |
69 b.array :books do |b| | 69 b.array :books do |b| |
70 b.book 'Book 1', :author => 'B. Smith' | 70 b.book 'Book 1', :author => 'B. Smith' |
71 b.book 'Book 2', :author => 'G. Cooper' | 71 b.book 'Book 2', :author => 'G. Cooper' |
72 end | 72 end |
73 end | 73 end |
74 end | 74 end |
75 | 75 |
76 def assert_json_output(expected, &block) | 76 def assert_json_output(expected, &block) |
77 builder = Redmine::Views::Builders::Json.new | 77 builder = Redmine::Views::Builders::Json.new |
78 block.call(builder) | 78 block.call(builder) |
79 assert_equal(expected, ActiveSupport::JSON.decode(builder.output)) | 79 assert_equal(expected, ActiveSupport::JSON.decode(builder.output)) |
80 end | 80 end |