sk_api_schema 0.3.1 → 0.3.2

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.1
1
+ 0.3.2
data/lib/sk_api_schema.rb CHANGED
@@ -20,7 +20,7 @@ module SK
20
20
  def registry
21
21
  @registry ||={}
22
22
  end
23
-
23
+
24
24
  def registry_reset
25
25
  @registry = nil
26
26
  end
@@ -72,7 +72,7 @@ module SK
72
72
  # === Example
73
73
  # obj = Invoice.new(:title =>'hello world', :number=>'4711')
74
74
  #
75
- # obj_hash = SK::Api::Schema.to_hash_from_schema(obj, 'v1.0')
75
+ # obj_hash = SK::Api::Schema.to_hash_from_schema(obj, 'v1.0')
76
76
  # => { 'invoice' =>{'title'=>'hello world', 'number'=>'4711' } }
77
77
  #
78
78
  # obj_hash = SK::Api::Schema.to_hash_from_schema(obj, 'v1.0', :fields=>['title'])
@@ -80,13 +80,13 @@ module SK
80
80
  #
81
81
  # obj_hash = SK::Api::Schema.to_hash_from_schema(obj, 'v1.0', :class_name=>:document)
82
82
  # => { 'document' =>{'title'=>'hello world' } }
83
- #
83
+ #
84
84
  # === Parameter
85
85
  # obj<Object>:: An ruby object which is returned as hash
86
86
  # version<String>:: the schema version, must be a valid folder name see
87
87
  # #self.read
88
88
  # opts<Hash{Symbol=>Mixed} >:: additional options
89
- #
89
+ #
90
90
  # ==== opts Parameter
91
91
  # class_name<String|Symbol>:: Name of the class to use as hash key. Should be
92
92
  # a lowered, underscored name and it MUST have an existing schema file.
@@ -143,7 +143,7 @@ module SK
143
143
  def parse_links(obj, schema)
144
144
  links = []
145
145
  schema['links'] && schema['links'].each do |link|
146
- links << { 'rel' => link['rel'], 'href' => link['href'].gsub(/\{id\}/, obj.id) }
146
+ links << { 'rel' => link['rel'], 'href' => link['href'].gsub(/\{id\}/, "#{obj.id}") }
147
147
  end
148
148
  links.uniq
149
149
  # return links only if not empty
@@ -170,7 +170,7 @@ module SK
170
170
  setters += opts[:keep] if opts[:keep] && opts[:keep].is_a?(Array)
171
171
  # kick readonly
172
172
  props.delete_if { |k,v| !setters.include?("#{k}") }
173
- #convert to type in schema
173
+ #convert to type in schema
174
174
  props.each do |k,v|
175
175
  if schema['properties']["#{k}"]['type'] == 'string' && !v.is_a?(String)
176
176
  props[k] = "#{v}"
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "sk_api_schema"
8
- s.version = "0.3.1"
8
+ s.version = "0.3.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Georg Leciejewski"]
12
- s.date = "2012-05-31"
12
+ s.date = "2012-06-02"
13
13
  s.description = "The SalesKing JSON Schema describes our business API in terms of available objects, their fields and links to url endpoints with related objects. Besides ruby users can use a smal lib with utility methods to load and test the schema files."
14
14
  s.email = "gl@salesking.eu"
15
15
  s.extra_rdoc_files = [
@@ -5,7 +5,7 @@ describe SK::Api::Schema, 'reading' do
5
5
  before :each do
6
6
  SK::Api::Schema.registry_reset
7
7
  end
8
-
8
+
9
9
  it "should read json schema file" do
10
10
  schema = SK::Api::Schema.read(:invoice, 'v1.0')
11
11
  schema[:title].should == 'invoice'
@@ -24,7 +24,7 @@ describe SK::Api::Schema, 'reading' do
24
24
 
25
25
  it "should read all json schemas" do
26
26
  schemas = SK::Api::Schema.read_all('1.0')
27
-
27
+
28
28
  file_path = File.join(File.dirname(__FILE__), '../json', 'v1.0', '*.json')
29
29
  # just check file count
30
30
  schemas.length.should == Dir.glob( file_path ).length
@@ -33,7 +33,7 @@ describe SK::Api::Schema, 'reading' do
33
33
  it "should raise error if version folder does not exist" do
34
34
  lambda{
35
35
  SK::Api::Schema.read(:invoice, 'v3.0')
36
- }.should raise_error
36
+ }.should raise_error
37
37
  end
38
38
 
39
39
  it "should raise error if schema file does not exist" do
@@ -74,10 +74,10 @@ describe SK::Api::Schema, 'object parsing' do
74
74
  it "should parse object with empty relations from schema" do
75
75
  obj_hash = SK::Api::Schema.to_hash_from_schema(@invoice, 'v1.0')
76
76
  # {"invoice"=>{"number"=>"911", "line_items"=>[], "archived_pdf"=>nil, "title"=>"Your Invoice", "date"=>nil, "id"=>"some-uuid", "client"=>nil, "due_date"=>nil}}
77
- obj_hash.keys.should == ["invoice", "links"]
77
+ obj_hash.keys.sort.should == ["invoice", "links"]
78
78
  obj_hash['invoice'].should include( "number"=>"911","line_items"=>[],"archived_pdf"=>nil,"id"=>"some-uuid", "title"=>"Your Invoice" )
79
79
  client_obj_hash = SK::Api::Schema.to_hash_from_schema(@client, 'v1.0')
80
- client_obj_hash.keys.should == ["client", "links"]
80
+ client_obj_hash.keys.sort.should == ["client", "links"]
81
81
  client_obj_hash['client'].should include("number"=>"911", "addresses"=>[], "id"=>"some-uuid", "organisation"=>"Dirty Food Inc.", "last_name"=>nil)
82
82
  end
83
83
 
metadata CHANGED
@@ -1,73 +1,73 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: sk_api_schema
3
- version: !ruby/object:Gem::Version
4
- version: 0.3.1
3
+ version: !ruby/object:Gem::Version
4
+ hash: 23
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 3
9
+ - 2
10
+ version: 0.3.2
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Georg Leciejewski
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2012-05-31 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: activesupport
16
- requirement: !ruby/object:Gem::Requirement
17
+
18
+ date: 2012-06-02 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ requirement: &id001 !ruby/object:Gem::Requirement
17
22
  none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :runtime
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ hash: 3
27
+ segments:
28
+ - 0
29
+ version: "0"
23
30
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
31
+ name: activesupport
32
+ type: :runtime
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ requirement: &id002 !ruby/object:Gem::Requirement
25
36
  none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: '0'
30
- - !ruby/object:Gem::Dependency
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ hash: 3
41
+ segments:
42
+ - 0
43
+ version: "0"
44
+ prerelease: false
31
45
  name: rspec
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ! '>='
36
- - !ruby/object:Gem::Version
37
- version: '0'
38
46
  type: :development
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
47
+ version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
49
+ requirement: &id003 !ruby/object:Gem::Requirement
41
50
  none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
46
- - !ruby/object:Gem::Dependency
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ hash: 3
55
+ segments:
56
+ - 0
57
+ version: "0"
58
+ prerelease: false
47
59
  name: rcov
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ! '>='
52
- - !ruby/object:Gem::Version
53
- version: '0'
54
60
  type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- description: The SalesKing JSON Schema describes our business API in terms of available
63
- objects, their fields and links to url endpoints with related objects. Besides ruby
64
- users can use a smal lib with utility methods to load and test the schema files.
61
+ version_requirements: *id003
62
+ description: The SalesKing JSON Schema describes our business API in terms of available objects, their fields and links to url endpoints with related objects. Besides ruby users can use a smal lib with utility methods to load and test the schema files.
65
63
  email: gl@salesking.eu
66
64
  executables: []
65
+
67
66
  extensions: []
68
- extra_rdoc_files:
67
+
68
+ extra_rdoc_files:
69
69
  - README.rdoc
70
- files:
70
+ files:
71
71
  - CHANGELOG.rdoc
72
72
  - README.rdoc
73
73
  - Rakefile
@@ -104,26 +104,36 @@ files:
104
104
  - spec/spec_helper.rb
105
105
  homepage: http://github.com/salesking/sk_api_schema
106
106
  licenses: []
107
+
107
108
  post_install_message:
108
109
  rdoc_options: []
109
- require_paths:
110
+
111
+ require_paths:
110
112
  - lib
111
- required_ruby_version: !ruby/object:Gem::Requirement
113
+ required_ruby_version: !ruby/object:Gem::Requirement
112
114
  none: false
113
- requirements:
114
- - - ! '>='
115
- - !ruby/object:Gem::Version
116
- version: '0'
117
- required_rubygems_version: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ hash: 3
119
+ segments:
120
+ - 0
121
+ version: "0"
122
+ required_rubygems_version: !ruby/object:Gem::Requirement
118
123
  none: false
119
- requirements:
120
- - - ! '>='
121
- - !ruby/object:Gem::Version
122
- version: '0'
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ hash: 3
128
+ segments:
129
+ - 0
130
+ version: "0"
123
131
  requirements: []
132
+
124
133
  rubyforge_project:
125
134
  rubygems_version: 1.8.24
126
135
  signing_key:
127
136
  specification_version: 3
128
137
  summary: SalesKing API JSON Schema
129
138
  test_files: []
139
+