odata-model 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 995370eea78ea8a601aa51f63c24d4c5b44ca21f
4
- data.tar.gz: 8407abe05108d9cd8ea77715de0b34feb45d0256
3
+ metadata.gz: 3f3848c44d4405013bdf8759766f32d0d7eed788
4
+ data.tar.gz: 514c663ad8f2fe30635444b96eb38c00208dffbd
5
5
  SHA512:
6
- metadata.gz: 83cbbcb630063ab7b5ea5b09842890da0e2bbbad209904f44118e7c7acd4b923b62c176e7fbe9e3795cf9d776fcc1d0d171f8e5f3c17112a8f376c0373673c80
7
- data.tar.gz: 43e2eabce06e6bf56c687ba98714263943673aafc1bf15abe967fcded63f7681c6d5da38907373565be0ff141ba8f30edfd5e9b4567513e504883e695819ab6c
6
+ metadata.gz: 92d82ecb0dec062b31c58eeb57698150e9d04a65eb766639bfa7f416fdb4813641a4b359d92693e5782f492bc1711164240a75ca093f7cb56602fdc6786c7002
7
+ data.tar.gz: 26535f3f30778fea0a13daf60bee9d17c3e5192ab0ef7973c087736f36304505fae8e998fdb7dd71444acb5e3f5d21e6cf3fcfc69f985aa2b0d48d47ec1038ed
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 0.4.1
4
+
5
+ * Added validation a property exists for an Entity when setting up its mapping.
6
+
3
7
  ## 0.4.0
4
8
 
5
9
  * Removed strict dependency on ActiveModel.
@@ -36,6 +36,7 @@ module OData
36
36
  def property(literal_name, options = {})
37
37
  attribute_name = (options[:as] || literal_name.to_s.underscore).to_sym
38
38
 
39
+ validate_attribute(literal_name)
39
40
  register_attribute(attribute_name, literal_name, options)
40
41
  create_accessors(attribute_name)
41
42
 
@@ -80,6 +81,17 @@ module OData
80
81
  end
81
82
  end
82
83
 
84
+ # Validates the existence of the supplied attribute on the relevant
85
+ # Entity.
86
+ # @param property_name [to_s]
87
+ # @api private
88
+ def validate_attribute(property_name)
89
+ valid_properties = odata_service.properties_for(odata_entity_set.type)
90
+ unless valid_properties[property_name.to_s]
91
+ raise ArgumentError, "property #{property_name} does not exist for #{odata_entity_set.type} entity"
92
+ end
93
+ end
94
+
83
95
  # Registers a supplied attribute with its literal property name and any
84
96
  # provided options.
85
97
  # @return [nil]
@@ -76,6 +76,7 @@ module OData
76
76
  # @return [nil]
77
77
  def limit_default_selection
78
78
  odata_config[:limit_default_selection] = true
79
+ nil
79
80
  end
80
81
 
81
82
  # Get the OData::Service
@@ -1,5 +1,5 @@
1
1
  module OData
2
2
  module Model
3
- VERSION = '0.4.0'
3
+ VERSION = '0.4.1'
4
4
  end
5
5
  end
data/odata-model.gemspec CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.version = OData::Model::VERSION
9
9
  spec.authors = ['James Thompson']
10
10
  spec.email = %w{james@buypd.com}
11
- spec.summary = 'An ActiveModel mapping layer for the OData gem'
12
- spec.description = 'A mapping layer for the OData gem that integrates with ActiveModel'
11
+ spec.summary = 'A basic mapping layer for the OData gem'
12
+ spec.description = 'A mapping layer for the OData gem that can integrate with ActiveModel'
13
13
  spec.homepage = 'https://github.com/ruby-odata/odata-model'
14
14
  spec.license = 'MIT'
15
15
 
@@ -23,10 +23,9 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency 'simplecov', '~> 0.9.0'
24
24
  spec.add_development_dependency 'codeclimate-test-reporter'
25
25
  spec.add_development_dependency 'rspec', '~> 3.0.0'
26
-
27
26
  spec.add_development_dependency 'activemodel', '>= 3.0.0'
28
27
 
29
- spec.add_dependency 'odata', '~> 0.5'
28
+ spec.add_dependency 'odata', '~> 0.5.0'
30
29
  spec.add_dependency 'activesupport', '>= 3.0.0'
31
30
 
32
31
  spec.add_dependency 'slop', '~> 3.6.0'
@@ -18,5 +18,18 @@ describe OData::Model do
18
18
 
19
19
  it { expect(Product.new).to respond_to(:attributes) }
20
20
  it { expect(Product.new.attributes).to eq(attributes) }
21
+
22
+ it 'raises an error if the property does not exist on the entity' do
23
+ expect {
24
+ class InvalidProduct
25
+ include OData::Model
26
+
27
+ use_service 'ODataDemo'
28
+ for_entity 'Product'
29
+
30
+ property 'NonExistent'
31
+ end
32
+ }.to raise_error(ArgumentError, 'property NonExistent does not exist for Product entity')
33
+ end
21
34
  end
22
35
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: odata-model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Thompson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-31 00:00:00.000000000 Z
11
+ date: 2014-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '0.5'
103
+ version: 0.5.0
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '0.5'
110
+ version: 0.5.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: activesupport
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -136,7 +136,7 @@ dependencies:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: 3.6.0
139
- description: A mapping layer for the OData gem that integrates with ActiveModel
139
+ description: A mapping layer for the OData gem that can integrate with ActiveModel
140
140
  email:
141
141
  - james@buypd.com
142
142
  executables:
@@ -200,7 +200,7 @@ rubyforge_project:
200
200
  rubygems_version: 2.2.2
201
201
  signing_key:
202
202
  specification_version: 4
203
- summary: An ActiveModel mapping layer for the OData gem
203
+ summary: A basic mapping layer for the OData gem
204
204
  test_files:
205
205
  - spec/example_models/bare_model.rb
206
206
  - spec/example_models/odatademo_limited_product.rb