Mercurial > hg > soundsoftware-site
comparison .svn/pristine/13/1398acbd60647babc95a74c09ce2afa2acef1b0b.svn-base @ 1298:4f746d8966dd redmine_2.3_integration
Merge from redmine-2.3 branch to create new branch redmine-2.3-integration
author | Chris Cannam |
---|---|
date | Fri, 14 Jun 2013 09:28:30 +0100 |
parents | 622f24f53b42 |
children |
comparison
equal
deleted
inserted
replaced
1297:0a574315af3e | 1298:4f746d8966dd |
---|---|
1 # Redmine - project management software | |
2 # Copyright (C) 2006-2013 Jean-Philippe Lang | |
3 # | |
4 # This program is free software; you can redistribute it and/or | |
5 # modify it under the terms of the GNU General Public License | |
6 # as published by the Free Software Foundation; either version 2 | |
7 # of the License, or (at your option) any later version. | |
8 # | |
9 # This program is distributed in the hope that it will be useful, | |
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 # GNU General Public License for more details. | |
13 # | |
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 | |
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |
17 | |
18 require File.expand_path('../../../../../../test_helper', __FILE__) | |
19 | |
20 class Redmine::Views::Builders::JsonTest < ActiveSupport::TestCase | |
21 | |
22 def test_hash | |
23 assert_json_output({'person' => {'name' => 'Ryan', 'age' => 32}}) do |b| | |
24 b.person do | |
25 b.name 'Ryan' | |
26 b.age 32 | |
27 end | |
28 end | |
29 end | |
30 | |
31 def test_hash_hash | |
32 assert_json_output({'person' => {'name' => 'Ryan', 'birth' => {'city' => 'London', 'country' => 'UK'}}}) do |b| | |
33 b.person do | |
34 b.name 'Ryan' | |
35 b.birth :city => 'London', :country => 'UK' | |
36 end | |
37 end | |
38 | |
39 assert_json_output({'person' => {'id' => 1, 'name' => 'Ryan', 'birth' => {'city' => 'London', 'country' => 'UK'}}}) do |b| | |
40 b.person :id => 1 do | |
41 b.name 'Ryan' | |
42 b.birth :city => 'London', :country => 'UK' | |
43 end | |
44 end | |
45 end | |
46 | |
47 def test_array | |
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| | |
50 b.book :title => 'Book 1', :author => 'B. Smith' | |
51 b.book :title => 'Book 2', :author => 'G. Cooper' | |
52 end | |
53 end | |
54 | |
55 assert_json_output({'books' => [{'title' => 'Book 1', 'author' => 'B. Smith'}, {'title' => 'Book 2', 'author' => 'G. Cooper'}]}) do |b| | |
56 b.array :books do |b| | |
57 b.book :title => 'Book 1' do | |
58 b.author 'B. Smith' | |
59 end | |
60 b.book :title => 'Book 2' do | |
61 b.author 'G. Cooper' | |
62 end | |
63 end | |
64 end | |
65 end | |
66 | |
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| | |
69 b.array :books do |b| | |
70 b.book 'Book 1', :author => 'B. Smith' | |
71 b.book 'Book 2', :author => 'G. Cooper' | |
72 end | |
73 end | |
74 end | |
75 | |
76 def test_nested_arrays | |
77 assert_json_output({'books' => [{'authors' => ['B. Smith', 'G. Cooper']}]}) do |b| | |
78 b.array :books do |books| | |
79 books.book do |book| | |
80 book.array :authors do |authors| | |
81 authors.author 'B. Smith' | |
82 authors.author 'G. Cooper' | |
83 end | |
84 end | |
85 end | |
86 end | |
87 end | |
88 | |
89 def assert_json_output(expected, &block) | |
90 builder = Redmine::Views::Builders::Json.new(ActionDispatch::TestRequest.new, ActionDispatch::TestResponse.new) | |
91 block.call(builder) | |
92 assert_equal(expected, ActiveSupport::JSON.decode(builder.output)) | |
93 end | |
94 end |