braque 0.1.7 → 0.1.8

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: 117d19be143c1b7314093816acc359f136666c06
4
- data.tar.gz: abb1836ab553182c46553ea2578fb530c5b018be
3
+ metadata.gz: 1301ea8c8cb20ba8d4bf8785c56d43483e39f5c9
4
+ data.tar.gz: a105f99e589ed6be0ed3a5144b8c0ed3e83d08c2
5
5
  SHA512:
6
- metadata.gz: 54f0b02909ea21b7345b5718ba90738c24a7a613a6d77b346b606f5eb87e81218972a1e64f869429ae176a906c6c5bf2fe1eaaef7be1087fc030583c11f51534
7
- data.tar.gz: b6959ce75f02e30fb785896ebb8fd43c70dac27eb0a8b614f3d8edebe8fa74227d248e23688b14dad4939135dcba5c2d8dc718dfc70a8d06a6f6a94fe347ae76
6
+ metadata.gz: ede1d3e637ae1b3dd5f2830c4043bfbf1762c624040ab2d047c3ce2b00fb9d09cc38ee3641ca0906457fdb4a4c69d4526038b46960cc007bbe52007f651e7b5e
7
+ data.tar.gz: 34aa058fdc69bc3668315ad6a2b6d31d10eaf11b8bb93031264731a5275e9f5502f35a78244a3f3f5abb80e92f2cd8d18b681534e1560d8f6d50b00e8be1e6cf
@@ -6,21 +6,21 @@ module Braque
6
6
  attr_reader :total_count
7
7
 
8
8
  def initialize(response = [], klass)
9
- next_link = response._links.try(:next)
10
- previous_link = response._links.try(:prev)
11
- total_count = response.try(:total_count)
9
+ @next_link = response._links.try(:next)
10
+ @previous_link = response._links.try(:prev)
11
+ @total_count = response.try(:total_count)
12
+ super build_retrieved_items(response, klass)
13
+ end
14
+
15
+ def build_retrieved_items(response, klass)
12
16
  retrieved_items = []
13
- response_items(response, klass).each do |item|
17
+ response_collection(response, klass).each do |item|
14
18
  retrieved_items << klass.new(item)
15
19
  end
16
- @retrieved_items = retrieved_items
17
- @next_link = next_link
18
- @previous_link = previous_link
19
- @total_count = total_count
20
- super retrieved_items
20
+ retrieved_items
21
21
  end
22
22
 
23
- def response_items(response, klass)
23
+ def response_collection(response, klass)
24
24
  return response unless response.respond_to? :_embedded
25
25
  response._embedded.send klass.collection_method_name
26
26
  end
data/lib/braque/model.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module Braque
2
2
  module Model
3
- extend ::ActiveSupport::Concern
4
- include ::ActiveAttr::Model
3
+ extend ActiveSupport::Concern
4
+ include ActiveAttr::Model
5
5
 
6
6
  included do
7
7
  class_attribute :config
@@ -15,7 +15,7 @@ module Braque
15
15
  # in client apps if some other scheme is more advisable.
16
16
  #
17
17
  def to_param
18
- fail 'Please overide to_param or add id to your model attributes.' unless attributes.include? 'id'
18
+ fail 'Please overide to_param or add ID to your model attributes.' unless attributes.include? 'id'
19
19
  id.to_s
20
20
  end
21
21
 
@@ -27,7 +27,7 @@ module Braque
27
27
  # classes in client apps if some other scheme is more advisable.
28
28
  #
29
29
  def resource_find_options
30
- fail 'Please overide resource_find_options or add id to your model attributes.' unless attributes.include? 'id'
30
+ fail 'Please overide resource_find_options or add ID to your model attributes.' unless attributes.include? 'id'
31
31
  { id: id }
32
32
  end
33
33
 
@@ -50,8 +50,16 @@ module Braque
50
50
 
51
51
  def self.inherited(subclass)
52
52
  subclass.class_eval do
53
+ # Allow the config settings for a superclass Braque::Model
54
+ # to be inherited by its subclassed Braque::Model classes
55
+ #
53
56
  self.config = self.config.dup
54
57
 
58
+ # Allow a superclass's attributes to be inerited
59
+ # by subclassed Braque::Model classes
60
+ #
61
+ self.attributes = self.superclass.attributes.dup
62
+
55
63
  define_singleton_method subclass.instance_method_name do
56
64
  end
57
65
 
@@ -1,3 +1,3 @@
1
1
  module Braque
2
- VERSION = '0.1.7'
2
+ VERSION = '0.1.8'
3
3
  end
@@ -52,7 +52,7 @@ RSpec.describe 'Braque::Model attribute definitions', type: :model do
52
52
  context '.to_param' do
53
53
  it 'raises an error unless id is defined or the method overridden' do
54
54
  expect { Agate.new.to_param }.to raise_error(
55
- RuntimeError, 'Please overide to_param or add id to your model attributes.'
55
+ RuntimeError, 'Please overide to_param or add ID to your model attributes.'
56
56
  )
57
57
  end
58
58
 
@@ -76,7 +76,7 @@ RSpec.describe 'Braque::Model attribute definitions', type: :model do
76
76
  context '.resource_find_options' do
77
77
  it 'raises an error unless id is defined or the method is overridden' do
78
78
  expect { Agate.new.resource_find_options }.to raise_error(
79
- RuntimeError, 'Please overide resource_find_options or add id to your model attributes.'
79
+ RuntimeError, 'Please overide resource_find_options or add ID to your model attributes.'
80
80
  )
81
81
  end
82
82
 
@@ -2,26 +2,27 @@ require 'spec_helper'
2
2
 
3
3
  RSpec.describe Braque::Model, type: :model do
4
4
  context 'with subclassed Braque::Model classes' do
5
- before do
6
- class GeologicModel
7
- include ::Braque::Model
8
- api_root_url 'http://localhost:9292'
9
- http_authorization_header 'replace-me'
10
- end
5
+ class GeologicModel
6
+ include ::Braque::Model
7
+ api_root_url 'http://localhost:9292'
8
+ http_authorization_header 'replace-me'
9
+ attribute :id
10
+ end
11
11
 
12
- class ContinentalDrift < GeologicModel
13
- end
12
+ class ContinentalDrift < GeologicModel
13
+ attribute :name
14
+ end
14
15
 
15
- class Convection < GeologicModel
16
- api_root_url 'http://localhost:9595'
17
- http_authorization_header 'ok-another-one-to-replace'
18
- end
16
+ class Convection < GeologicModel
17
+ api_root_url 'http://localhost:9595'
18
+ http_authorization_header 'ok-another-one-to-replace'
19
+ attribute :first_name
20
+ end
19
21
 
20
- class SeafloorSpreading
21
- include ::Braque::Model
22
- api_root_url 'http://localhost:9393'
23
- http_authorization_header 'do-replace-me-as-well'
24
- end
22
+ class SeafloorSpreading
23
+ include ::Braque::Model
24
+ api_root_url 'http://localhost:9393'
25
+ http_authorization_header 'do-replace-me-as-well'
25
26
  end
26
27
 
27
28
  context 'api configuration' do
@@ -43,6 +44,19 @@ RSpec.describe Braque::Model, type: :model do
43
44
  end
44
45
  end
45
46
 
47
+ context 'attributes' do
48
+ [GeologicModel, ContinentalDrift, Convection].each do |klass|
49
+ it 'includes attributes defined by the superclass' do
50
+ expect(klass.attributes).to include :id
51
+ end
52
+ end
53
+
54
+ it 'includes attributes defined by the subclass' do
55
+ expect(ContinentalDrift.attributes).to include :name
56
+ expect(Convection.attributes).to include :first_name
57
+ end
58
+ end
59
+
46
60
  context 'dynamic class methods' do
47
61
  it 'sets the correct dynamic class methods for the base class' do
48
62
  [:geologic_model, :geologic_models].each do |sym|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: braque
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dylan Fareed
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-05 00:00:00.000000000 Z
11
+ date: 2015-09-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: hyperclient