js-client-bridge 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile.lock +1 -2
- data/lib/js-client-bridge/responses.rb +2 -2
- data/lib/js-client-bridge/responses/error.rb +21 -6
- data/lib/js-client-bridge/responses/exception.rb +51 -0
- data/lib/js-client-bridge/responses/ok.rb +22 -6
- data/lib/js-client-bridge/responses/validation.rb +37 -11
- data/lib/js-client-bridge/version.rb +1 -1
- data/spec/error_responses_spec.rb +38 -18
- data/spec/exception_responses_spec.rb +80 -33
- data/spec/ok_responses_spec.rb +39 -19
- data/spec/validation_responses_spec.rb +30 -15
- metadata +3 -3
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
js-client-bridge (0.1.
|
4
|
+
js-client-bridge (0.1.5)
|
5
5
|
json_pure (~> 1.4.6)
|
6
6
|
|
7
7
|
GEM
|
@@ -83,7 +83,6 @@ DEPENDENCIES
|
|
83
83
|
dm-types (~> 1.0.2)
|
84
84
|
dm-validations (~> 1.0.2)
|
85
85
|
js-client-bridge!
|
86
|
-
json_pure (~> 1.4.6)
|
87
86
|
mocha (~> 0.9.8)
|
88
87
|
rcov (~> 0.9.8)
|
89
88
|
rspec (~> 2.0.0)
|
@@ -15,7 +15,7 @@ module JsClientBridge #:nodoc:
|
|
15
15
|
def respond_with(type, args)
|
16
16
|
unless args.blank?
|
17
17
|
options = args.last.is_a?(Hash) ? args.pop.dup : {}
|
18
|
-
options[
|
18
|
+
options['_message'] = args.shift.dup if args.first.is_a?(String)
|
19
19
|
else
|
20
20
|
options = {}
|
21
21
|
end
|
@@ -26,7 +26,7 @@ module JsClientBridge #:nodoc:
|
|
26
26
|
formatting[para] = options.delete(para) if options.include?(para)
|
27
27
|
end
|
28
28
|
|
29
|
-
[options.merge({
|
29
|
+
[options.merge({ '_status' => type.to_s }), formatting]
|
30
30
|
end
|
31
31
|
|
32
32
|
def format_response(response, formatting_options = {})
|
@@ -7,16 +7,31 @@ module JsClientBridge #:nodoc:
|
|
7
7
|
# used as the _status options. It will also honour custom optionss as long
|
8
8
|
# they don't clash with the standard ones.
|
9
9
|
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
10
|
+
# @param <String> message
|
11
|
+
# An optional message.
|
12
|
+
# @param <Hash> options
|
13
|
+
# Custom optionss.
|
13
14
|
#
|
14
|
-
#
|
15
|
-
#
|
15
|
+
# @return <Hash>
|
16
|
+
# The response as a Hash
|
16
17
|
def respond_with_error(*args)
|
17
|
-
|
18
|
+
respond_with('error', args).first
|
18
19
|
end
|
19
20
|
|
21
|
+
# Generates a error response. If the first parameter is a string is will be
|
22
|
+
# used as the _status options. It will also honour custom optionss as long
|
23
|
+
# they don't clash with the standard ones.
|
24
|
+
#
|
25
|
+
# @param <String> message
|
26
|
+
# An optional message.
|
27
|
+
# @param <Hash> options
|
28
|
+
# Custom optionss.
|
29
|
+
#
|
30
|
+
# @return <Hash>
|
31
|
+
# The response as a String encoded JSON object.
|
32
|
+
def render_error(*args)
|
33
|
+
format_response(*respond_with('error', args))
|
34
|
+
end
|
20
35
|
end # module Error
|
21
36
|
end # module Responses
|
22
37
|
end # module JsClientBridge
|
@@ -25,6 +25,30 @@ module JsClientBridge #:nodoc:
|
|
25
25
|
:backtrace => exception.backtrace
|
26
26
|
}]
|
27
27
|
|
28
|
+
response
|
29
|
+
end
|
30
|
+
|
31
|
+
def render_exception(*args)
|
32
|
+
raise ArgumentError.new("respond_with_exception requires an exception as it's first parameter") if args.blank? || !args.first.is_a?(StandardError)
|
33
|
+
|
34
|
+
exception = args.shift
|
35
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
36
|
+
|
37
|
+
# Ensure we have our required fields
|
38
|
+
raise ArgumentError.new("respond_with_exception requires the request_uri option") unless options.include?(:request_uri)
|
39
|
+
|
40
|
+
# Set some defaults
|
41
|
+
options[:parameters] ||= {}
|
42
|
+
|
43
|
+
# Generate our response hash and add the exceptions parameter
|
44
|
+
response, formatting = respond_with('exception', [options])
|
45
|
+
response[:exceptions] = [{
|
46
|
+
:name => exception.class,
|
47
|
+
:short_name => exception.class.to_s.split('::').last,
|
48
|
+
:message => CGI.escape(exception.message),
|
49
|
+
:backtrace => exception.backtrace
|
50
|
+
}]
|
51
|
+
|
28
52
|
format_response(response, formatting)
|
29
53
|
end
|
30
54
|
|
@@ -52,6 +76,33 @@ module JsClientBridge #:nodoc:
|
|
52
76
|
}
|
53
77
|
end
|
54
78
|
|
79
|
+
response
|
80
|
+
end
|
81
|
+
|
82
|
+
def render_exceptions(*args)
|
83
|
+
raise ArgumentError.new("respond_with_exception requires an array of exceptions as it's first parameter") if args.blank? || !args.first.is_a?(Array)
|
84
|
+
|
85
|
+
exceptions = args.shift
|
86
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
87
|
+
|
88
|
+
# Ensure we have our required fields
|
89
|
+
raise ArgumentError.new("respond_with_exception requires the request_uri option") unless options.include?(:request_uri)
|
90
|
+
|
91
|
+
# Set some defaults
|
92
|
+
options[:parameters] ||= {}
|
93
|
+
|
94
|
+
# Generate our response hash and add the exceptions parameter
|
95
|
+
response, formatting = respond_with('exception', [options])
|
96
|
+
|
97
|
+
response[:exceptions] = exceptions.map do |exception|
|
98
|
+
{
|
99
|
+
:name => exception.class,
|
100
|
+
:short_name => exception.class.to_s.split('::').last,
|
101
|
+
:message => CGI.escape(exception.message),
|
102
|
+
:backtrace => exception.backtrace
|
103
|
+
}
|
104
|
+
end
|
105
|
+
|
55
106
|
format_response(response, formatting)
|
56
107
|
end
|
57
108
|
|
@@ -3,17 +3,33 @@ require 'cgi'
|
|
3
3
|
module JsClientBridge #:nodoc:
|
4
4
|
module Responses #:nodoc:
|
5
5
|
module Ok
|
6
|
-
# Generates a 'ok' status response. If the first parameter is a string is will be
|
6
|
+
# Generates a 'ok' status response as a Hash. If the first parameter is a string is will be
|
7
7
|
# used as the _status options. It will also honour custom optionss as long
|
8
8
|
# they don't clash with the standard ones.
|
9
9
|
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
10
|
+
# @param <String> message
|
11
|
+
# An optional message.
|
12
|
+
# @param <Hash> options
|
13
|
+
# Custom optionss.
|
13
14
|
#
|
14
|
-
#
|
15
|
-
#
|
15
|
+
# @return <Hash>
|
16
|
+
# The response as a Hash
|
16
17
|
def respond_with_ok(*args)
|
18
|
+
respond_with('ok', args).first
|
19
|
+
end
|
20
|
+
|
21
|
+
# Generates a 'ok' status response. If the first parameter is a string is will be
|
22
|
+
# used as the _status options. It will also honour custom optionss as long
|
23
|
+
# they don't clash with the standard ones.
|
24
|
+
#
|
25
|
+
# @param <String> message
|
26
|
+
# An optional message.
|
27
|
+
# @param <Hash> options
|
28
|
+
# Custom optionss.
|
29
|
+
#
|
30
|
+
# @return <String>
|
31
|
+
# A JSON object encoded as a String.
|
32
|
+
def render_ok(*args)
|
17
33
|
format_response(*respond_with('ok', args))
|
18
34
|
end
|
19
35
|
end # module Ok
|
@@ -7,16 +7,42 @@ module JsClientBridge #:nodoc:
|
|
7
7
|
# used as the _status options. It will also honour custom optionss as long
|
8
8
|
# they don't clash with the standard ones.
|
9
9
|
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
10
|
+
# @param <String> message
|
11
|
+
# An optional message.
|
12
|
+
# @param <Hash> options
|
13
|
+
# Custom optionss.
|
13
14
|
#
|
14
|
-
#
|
15
|
-
#
|
15
|
+
# @return <Hash>
|
16
|
+
# The response as a Hash
|
16
17
|
def respond_with_validation_error(*args)
|
17
18
|
obj = args.shift
|
18
19
|
options = args.last.is_a?(Hash) ? args.pop : {}
|
19
20
|
|
21
|
+
# Generate our response hash and add the exceptions parameter
|
22
|
+
response = if options.include?(:message)
|
23
|
+
options.merge( validation_errors_to_hash(obj, options.delete(:message)) )
|
24
|
+
else
|
25
|
+
options.merge( validation_errors_to_hash(obj) )
|
26
|
+
end
|
27
|
+
|
28
|
+
response
|
29
|
+
end
|
30
|
+
|
31
|
+
# Generates a validation error status response. If the first parameter is a string is will be
|
32
|
+
# used as the _status options. It will also honour custom optionss as long
|
33
|
+
# they don't clash with the standard ones.
|
34
|
+
#
|
35
|
+
# @param <String> message
|
36
|
+
# An optional message.
|
37
|
+
# @param <Hash> options
|
38
|
+
# Custom optionss.
|
39
|
+
#
|
40
|
+
# @return <String>
|
41
|
+
# The response as a String encoded JSON object
|
42
|
+
def render_validation(*args)
|
43
|
+
obj = args.shift
|
44
|
+
options = args.last.is_a?(Hash) ? args.pop : {}
|
45
|
+
|
20
46
|
# Generate our response hash and add the exceptions parameter
|
21
47
|
response = if options.include?(:message)
|
22
48
|
options.merge( validation_errors_to_hash(obj, options.delete(:message)) )
|
@@ -33,14 +59,14 @@ module JsClientBridge #:nodoc:
|
|
33
59
|
short_type = data_object.class.to_s.split('::').last
|
34
60
|
|
35
61
|
validation = {
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
62
|
+
'_status' => 'validation',
|
63
|
+
'_type' => data_object.class.to_s,
|
64
|
+
'_short_type' => short_type,
|
65
|
+
'_message' => message,
|
66
|
+
'validation' => data_object.errors.to_hash,
|
41
67
|
}
|
42
68
|
|
43
|
-
validation[
|
69
|
+
validation['id'] = data_object.id.to_s unless data_object.new?
|
44
70
|
|
45
71
|
validation
|
46
72
|
end
|
@@ -1,26 +1,46 @@
|
|
1
1
|
require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
|
2
2
|
|
3
3
|
describe "Error Responses" do
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
describe "#render_error" do
|
5
|
+
it "should generate a basic error response" do
|
6
|
+
JSON.parse(JsClientBridge::Responses.render_error).should == {'_status' => 'error'}
|
7
|
+
end
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
|
9
|
+
it "should generate a error response with a status message" do
|
10
|
+
JSON.parse(JsClientBridge::Responses.render_error('a message')).should == {'_status' => 'error', '_message' => "a message"}
|
11
|
+
end
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
13
|
+
it "should generate a error response with a status message and additional custom properties" do
|
14
|
+
JSON.parse(JsClientBridge::Responses.render_error('a message', 'blame' => 'the user')).should == {'_status' => 'error', '_message' => "a message", 'blame' => 'the user'}
|
15
|
+
end
|
16
|
+
|
17
|
+
it "should generate a error response with custom properties but not message" do
|
18
|
+
JSON.parse(JsClientBridge::Responses.render_error('blame' => 'the user')).should == {'_status' => 'error', 'blame' => 'the user'}
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should generate a basic error response using JSONP" do
|
22
|
+
jsonp = JsClientBridge::Responses.render_error('a message', :jsonp => 'jsonp1')
|
23
|
+
jsonp[0..6].should == 'jsonp1('
|
24
|
+
jsonp[-1..-1].should == ')'
|
25
|
+
JSON.parse(jsonp[7..-2]).should == {'_message' => "a message", '_status' => 'error'}
|
26
|
+
end
|
18
27
|
end
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
28
|
+
|
29
|
+
describe "#respond_with_error" do
|
30
|
+
it "should generate a basic error response" do
|
31
|
+
JsClientBridge::Responses.respond_with_error.should == {'_status' => 'error'}
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should generate a error response with a status message" do
|
35
|
+
JsClientBridge::Responses.respond_with_error('a message').should == {'_status' => 'error', '_message' => "a message"}
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should generate a error response with a status message and additional custom properties" do
|
39
|
+
JsClientBridge::Responses.respond_with_error('a message', 'blame' => 'the user').should == {'_status' => 'error', '_message' => "a message", 'blame' => 'the user'}
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should generate a error response with custom properties but not message" do
|
43
|
+
JsClientBridge::Responses.respond_with_error('blame' => 'the user').should == {'_status' => 'error', 'blame' => 'the user'}
|
44
|
+
end
|
25
45
|
end
|
26
46
|
end
|
@@ -5,52 +5,99 @@ require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
|
|
5
5
|
class TestException < StandardError; end
|
6
6
|
|
7
7
|
describe "Exception Responses" do
|
8
|
+
describe "#respond_with_exception" do
|
9
|
+
it "should generate an exception response" do
|
10
|
+
exception = TestException.new('An exception')
|
8
11
|
|
9
|
-
|
10
|
-
exception = TestException.new('An exception')
|
12
|
+
ex = JsClientBridge::Responses.respond_with_exception(exception, :request_uri => '/', :parameters => {:param1 => 'value1'})
|
11
13
|
|
12
|
-
|
14
|
+
ex['_status'].should == 'exception'
|
15
|
+
ex['request_uri'].should == '/'
|
16
|
+
ex['parameters'].should == {'param1' => 'value1'}
|
17
|
+
ex['exceptions'].length.should == 1
|
13
18
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
19
|
+
e = ex['exceptions'].first
|
20
|
+
e['name'].should == exception.class.to_s
|
21
|
+
e['message'].should == CGI.escape(exception.message)
|
22
|
+
e['backtrace'].should == exception.backtrace
|
23
|
+
e['short_name'].should == exception.class.to_s.split('::').last
|
24
|
+
end
|
18
25
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
26
|
+
it "should require the request_uri option" do
|
27
|
+
lambda {
|
28
|
+
JsClientBridge::Responses.respond_with_exception(TestException.new('An exception'), :parameters => {:param1 => 'value1'})
|
29
|
+
}.should raise_error(ArgumentError)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should require the exception option" do
|
33
|
+
lambda {
|
34
|
+
JsClientBridge::Responses.respond_with_exception(:request_uri => '/', :parameters => {:param1 => 'value1'})
|
35
|
+
}.should raise_error(ArgumentError)
|
36
|
+
end
|
24
37
|
end
|
25
38
|
|
26
|
-
|
27
|
-
|
39
|
+
describe "#respond_with_exceptions" do
|
40
|
+
it "should generate an exceptions response" do
|
41
|
+
exceptions = [TestException.new('An exception'), TestException.new('Another exception')]
|
28
42
|
|
29
|
-
|
43
|
+
ex = JsClientBridge::Responses.respond_with_exceptions(exceptions, :request_uri => '/', :parameters => {:param1 => 'value1'})
|
30
44
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
45
|
+
ex['_status'].should == 'exception'
|
46
|
+
ex['request_uri'].should == '/'
|
47
|
+
ex['parameters'].should == {'param1' => 'value1'}
|
48
|
+
ex['exceptions'].length.should == 2
|
49
|
+
end
|
35
50
|
end
|
51
|
+
|
52
|
+
describe "#render_exception" do
|
53
|
+
it "should generate an exception response" do
|
54
|
+
exception = TestException.new('An exception')
|
36
55
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
56
|
+
ex = JSON.parse(JsClientBridge::Responses.render_exception(exception, :request_uri => '/', :parameters => {:param1 => 'value1'}))
|
57
|
+
|
58
|
+
ex['_status'].should == 'exception'
|
59
|
+
ex['request_uri'].should == '/'
|
60
|
+
ex['parameters'].should == {'param1' => 'value1'}
|
61
|
+
ex['exceptions'].length.should == 1
|
62
|
+
|
63
|
+
e = ex['exceptions'].first
|
64
|
+
e['name'].should == exception.class.to_s
|
65
|
+
e['message'].should == CGI.escape(exception.message)
|
66
|
+
e['backtrace'].should == exception.backtrace
|
67
|
+
e['short_name'].should == exception.class.to_s.split('::').last
|
68
|
+
end
|
42
69
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
70
|
+
it "should require the request_uri option" do
|
71
|
+
lambda {
|
72
|
+
JsClientBridge::Responses.render_exception(TestException.new('An exception'), :parameters => {:param1 => 'value1'})
|
73
|
+
}.should raise_error(ArgumentError)
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should require the exception option" do
|
77
|
+
lambda {
|
78
|
+
JsClientBridge::Responses.render_exception(:request_uri => '/', :parameters => {:param1 => 'value1'})
|
79
|
+
}.should raise_error(ArgumentError)
|
80
|
+
end
|
81
|
+
|
82
|
+
it "should generate an exception response using JSONP" do
|
83
|
+
exception = TestException.new('An exception')
|
84
|
+
|
85
|
+
ex = JsClientBridge::Responses.render_exception(exception, :request_uri => '/', :parameters => {:param1 => 'value1'}, :jsonp => 'jsonp1')
|
86
|
+
ex[0..6].should == 'jsonp1('
|
87
|
+
ex[-1..-1].should == ')'
|
88
|
+
end
|
47
89
|
end
|
48
90
|
|
49
|
-
|
50
|
-
|
91
|
+
describe "#render_exceptions" do
|
92
|
+
it "should generate an exceptions response" do
|
93
|
+
exceptions = [TestException.new('An exception'), TestException.new('Another exception')]
|
94
|
+
|
95
|
+
ex = JSON.parse(JsClientBridge::Responses.render_exceptions(exceptions, :request_uri => '/', :parameters => {:param1 => 'value1'}))
|
51
96
|
|
52
|
-
|
53
|
-
|
54
|
-
|
97
|
+
ex['_status'].should == 'exception'
|
98
|
+
ex['request_uri'].should == '/'
|
99
|
+
ex['parameters'].should == {'param1' => 'value1'}
|
100
|
+
ex['exceptions'].length.should == 2
|
101
|
+
end
|
55
102
|
end
|
56
103
|
end
|
data/spec/ok_responses_spec.rb
CHANGED
@@ -4,29 +4,49 @@ require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
|
|
4
4
|
|
5
5
|
|
6
6
|
describe "Ok Responses" do
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
describe "#respond_with_ok" do
|
8
|
+
it "should generate a basic ok response" do
|
9
|
+
JsClientBridge::Responses.respond_with_ok.should == {'_status' => 'ok'}
|
10
|
+
end
|
10
11
|
|
11
|
-
|
12
|
-
|
13
|
-
|
12
|
+
it "should generate a ok response with a status message" do
|
13
|
+
JsClientBridge::Responses.respond_with_ok('a message').should == {'_status' => 'ok', '_message' => "a message"}
|
14
|
+
end
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
16
|
+
it "should generate a ok response with a status message and additional custom parameters" do
|
17
|
+
JsClientBridge::Responses.respond_with_ok('a message', 'awesomeness' => 'has happened').should == {'_status' => 'ok', '_message' => "a message", 'awesomeness' => 'has happened'}
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should generate a ok response with a status message and a complex parameters" do
|
21
|
+
JsClientBridge::Responses.respond_with_ok('a message', 'stuff' => complext_test_data).should == {'_message' => "a message", 'stuff' => complext_test_data, '_status' => 'ok'}
|
22
|
+
end
|
21
23
|
end
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
24
|
+
|
25
|
+
describe "#render_ok" do
|
26
|
+
it "should generate a basic ok response" do
|
27
|
+
JSON.parse(JsClientBridge::Responses.render_ok).should == {'_status' => 'ok'}
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should generate a ok response with a status message" do
|
31
|
+
JSON.parse(JsClientBridge::Responses.render_ok('a message')).should == {'_status' => 'ok', '_message' => "a message"}
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should generate a ok response with a status message and additional custom parameters" do
|
35
|
+
JSON.parse(JsClientBridge::Responses.render_ok('a message', 'awesomeness' => 'has happened')).should == {'_status' => 'ok', '_message' => "a message", 'awesomeness' => 'has happened'}
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should generate a ok response with a status message and a complex parameters" do
|
39
|
+
JSON.parse(JsClientBridge::Responses.render_ok('a message', 'stuff' => complext_test_data)).should == {'_message' => "a message", 'stuff' => complext_test_data, '_status' => 'ok'}
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should generate a basic ok response using JSONP" do
|
43
|
+
jsonp = JsClientBridge::Responses.render_ok('a message', :jsonp => 'jsonp1')
|
44
|
+
jsonp[0..6].should == 'jsonp1('
|
45
|
+
jsonp[-1..-1].should == ')'
|
46
|
+
JSON.parse(jsonp[7..-2]).should == {'_status' => 'ok', '_message' => "a message"}
|
47
|
+
end
|
28
48
|
end
|
29
|
-
|
49
|
+
|
30
50
|
def complext_test_data
|
31
51
|
[
|
32
52
|
{'name'=>"Whangarei",
|
@@ -26,24 +26,39 @@ describe "Validation Responses" do
|
|
26
26
|
DataMapper.auto_migrate!
|
27
27
|
end
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
|
29
|
+
describe "#respond_with_validation" do
|
30
|
+
it "should generate a basic validation response" do
|
31
|
+
test_do = Luma::Test::TestDO.new(:id => 'bob')
|
32
|
+
test_do.save.should be_false
|
32
33
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
34
|
+
ex = JsClientBridge::Responses.respond_with_validation_error(test_do)
|
35
|
+
pp ex
|
36
|
+
ex['validation'].length.should == 2
|
37
|
+
ex['_short_type'].should == "TestDO"
|
38
|
+
ex['_type'].should == "Luma::Test::TestDO"
|
39
|
+
end
|
38
40
|
end
|
39
|
-
|
40
|
-
it "should generate a basic validation response using JSONP" do
|
41
|
-
test_do = Luma::Test::TestDO.new(:id => 'bob')
|
42
|
-
test_do.save.should be_false
|
43
41
|
|
44
|
-
|
45
|
-
|
46
|
-
|
42
|
+
describe "#render_validation" do
|
43
|
+
it "should generate a basic validation response" do
|
44
|
+
test_do = Luma::Test::TestDO.new(:id => 'bob')
|
45
|
+
test_do.save.should be_false
|
46
|
+
|
47
|
+
ex = JSON.parse(JsClientBridge::Responses.render_validation(test_do))
|
48
|
+
pp ex
|
49
|
+
ex['validation'].length.should == 2
|
50
|
+
ex['_short_type'].should == "TestDO"
|
51
|
+
ex['_type'].should == "Luma::Test::TestDO"
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should generate a basic validation response using JSONP" do
|
55
|
+
test_do = Luma::Test::TestDO.new(:id => 'bob')
|
56
|
+
test_do.save.should be_false
|
57
|
+
|
58
|
+
ex = JsClientBridge::Responses.render_validation(test_do, :jsonp => 'jsonp1')
|
59
|
+
ex[0..6].should == 'jsonp1('
|
60
|
+
ex[-1..-1].should == ')'
|
61
|
+
end
|
47
62
|
end
|
48
63
|
end
|
49
64
|
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 5
|
9
|
+
version: 0.1.5
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Rolly Fordham
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date:
|
17
|
+
date: 2011-02-13 00:00:00 +13:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|