From 32e43b15134ff6b8697eae161e2973d3220932c3 Mon Sep 17 00:00:00 2001 From: Jens Kraemer Date: Tue, 17 Apr 2018 09:17:27 +0800 Subject: [PATCH] removes request and response accessors from Structure class - this allows API JSON responses (i.e. from plugins) to have actual request and response elements --- lib/redmine/views/builders/json.rb | 2 +- lib/redmine/views/builders/structure.rb | 5 ++--- test/unit/lib/redmine/views/builders/json_test.rb | 11 +++++++++++ 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/lib/redmine/views/builders/json.rb b/lib/redmine/views/builders/json.rb index 97ac125..299fd92 100644 --- a/lib/redmine/views/builders/json.rb +++ b/lib/redmine/views/builders/json.rb @@ -35,7 +35,7 @@ module Redmine json = @struct.first.to_json if jsonp.present? json = "#{jsonp}(#{json})" - response.content_type = 'application/javascript' + @response.content_type = 'application/javascript' end json end diff --git a/lib/redmine/views/builders/structure.rb b/lib/redmine/views/builders/structure.rb index 5e59f89..3f4468b 100644 --- a/lib/redmine/views/builders/structure.rb +++ b/lib/redmine/views/builders/structure.rb @@ -21,12 +21,11 @@ module Redmine module Views module Builders class Structure < BlankSlate - attr_accessor :request, :response def initialize(request, response) @struct = [{}] - self.request = request - self.response = response + @request = request + @response = response end def array(tag, options={}, &block) diff --git a/test/unit/lib/redmine/views/builders/json_test.rb b/test/unit/lib/redmine/views/builders/json_test.rb index b1b50b8..8ffb71f 100644 --- a/test/unit/lib/redmine/views/builders/json_test.rb +++ b/test/unit/lib/redmine/views/builders/json_test.rb @@ -86,6 +86,17 @@ class Redmine::Views::Builders::JsonTest < ActiveSupport::TestCase end end + def test_request_response + assert_json_output({'request' => { 'get' => 'book' }, 'response' => { 'book' => { 'title' => 'Book 1' } }}) do |b| + b.request do + b.get 'book' + end + b.response do + b.book title: 'Book 1' + end + end + end + def assert_json_output(expected, &block) builder = Redmine::Views::Builders::Json.new(ActionDispatch::TestRequest.create, ActionDispatch::TestResponse.create) block.call(builder) -- 2.1.4