braque 0.1.2 → 0.1.3
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.
- checksums.yaml +4 -4
- data/lib/braque/collection.rb +6 -1
- data/lib/braque/version.rb +1 -1
- data/spec/braque/collection_spec.rb +88 -14
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7877495074bf14604179991d76599e5bfc508716
|
4
|
+
data.tar.gz: c08da9d09ed4e53b9179b5c3188073dd025e2b95
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9df5a71dc0428f62e763b14dd3b68e5c363ef7a1d6118b407878cd6e0627ef54dfc1c13d54544e81fc73c93ec6d3e5c027bd986ee738f18d74644c29d4ac45a
|
7
|
+
data.tar.gz: 02fcb2222b97b54c8216b5024f12b8fb57f55e9ec4901fd2d7e81dd2b82c1451065fb62e340318aae7546299d9b2434636e3379e9fb8c2146a6bc746f51cf1cd
|
data/lib/braque/collection.rb
CHANGED
@@ -10,7 +10,7 @@ module Braque
|
|
10
10
|
previous_link = response._links.try(:prev)
|
11
11
|
total_count = response.try(:total_count)
|
12
12
|
retrieved_items = []
|
13
|
-
response.each do |item|
|
13
|
+
response_items(response, klass).each do |item|
|
14
14
|
retrieved_items << klass.new(item)
|
15
15
|
end
|
16
16
|
@retrieved_items = retrieved_items
|
@@ -19,6 +19,11 @@ module Braque
|
|
19
19
|
@total_count = total_count
|
20
20
|
super retrieved_items
|
21
21
|
end
|
22
|
+
|
23
|
+
def response_items(response, klass)
|
24
|
+
return response unless response.respond_to? :_embedded
|
25
|
+
response._embedded.send klass.collection_method_name
|
26
|
+
end
|
22
27
|
end
|
23
28
|
end
|
24
29
|
end
|
data/lib/braque/version.rb
CHANGED
@@ -1,24 +1,32 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
+
require 'spec_helper'
|
4
|
+
|
3
5
|
RSpec.describe Braque::Collection do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
6
|
+
before(:all) do
|
7
|
+
class BraqueClass
|
8
|
+
include ::ActiveAttr::Model
|
9
|
+
include Braque::Collection
|
10
|
+
attribute :id
|
11
|
+
attribute :title
|
12
|
+
|
13
|
+
def self.collection_method_name
|
14
|
+
name.tableize
|
11
15
|
end
|
16
|
+
end
|
12
17
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
end
|
18
|
+
class ResponseLinks
|
19
|
+
attr_reader :next
|
20
|
+
attr_reader :prev
|
21
|
+
def initialize(next_str, previous_str)
|
22
|
+
@next = next_str
|
23
|
+
@prev = previous_str
|
20
24
|
end
|
25
|
+
end
|
26
|
+
end
|
21
27
|
|
28
|
+
context 'when collection is an array' do
|
29
|
+
before(:all) do
|
22
30
|
class ResponseCollection < Array
|
23
31
|
attr_reader :total_count
|
24
32
|
attr_reader :_links
|
@@ -37,25 +45,91 @@ RSpec.describe Braque::Collection do
|
|
37
45
|
@response = ResponseCollection.new @array, true, false
|
38
46
|
@linked_array = BraqueClass::LinkedArray.new(@response, BraqueClass)
|
39
47
|
end
|
48
|
+
|
40
49
|
it 'returns an array of the correct number of items' do
|
41
50
|
expect(@linked_array.count).to eq 2
|
42
51
|
end
|
52
|
+
|
43
53
|
it 'returns the correct total_count' do
|
44
54
|
expect(@linked_array.total_count).to eq 3
|
45
55
|
end
|
56
|
+
|
46
57
|
it 'returns an array of new items based on the calling class' do
|
47
58
|
expect(@linked_array.first.id).to eq 1
|
48
59
|
expect(@linked_array.first.title).to eq @array.first[:title]
|
49
60
|
expect(@linked_array.first.class.name).to eq 'BraqueClass'
|
61
|
+
expect(@linked_array[1].id).to eq 2
|
62
|
+
expect(@linked_array[1].title).to eq @array[1][:title]
|
63
|
+
expect(@linked_array[1].class.name).to eq 'BraqueClass'
|
64
|
+
end
|
65
|
+
|
66
|
+
it 'responds to previous_link with the correct value' do
|
67
|
+
expect(@linked_array).to respond_to(:previous_link)
|
68
|
+
expect(@linked_array.previous_link).to eq false
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'responds to next_link with the correct value' do
|
72
|
+
expect(@linked_array).to respond_to(:next_link)
|
73
|
+
expect(@linked_array.next_link).to eq true
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
context 'when collection responds to _embedded' do
|
80
|
+
before(:all) do
|
81
|
+
class ResponseEmbedded
|
82
|
+
attr_reader :braque_classes
|
83
|
+
|
84
|
+
def initialize(results)
|
85
|
+
@braque_classes = results
|
86
|
+
end
|
87
|
+
end
|
50
88
|
|
89
|
+
class ResponseCollection < Array
|
90
|
+
attr_reader :total_count
|
91
|
+
attr_reader :_links
|
92
|
+
attr_reader :_embedded
|
93
|
+
|
94
|
+
def initialize(array, next_str, previous_str)
|
95
|
+
@total_count = 3
|
96
|
+
@_links = ResponseLinks.new next_str, previous_str
|
97
|
+
@_embedded = ResponseEmbedded.new array
|
98
|
+
super array
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
context 'LinkedArray' do
|
104
|
+
context '#initialize' do
|
105
|
+
before(:all) do
|
106
|
+
@array = [{ id: 1, title: 'hello' }, { id: 2, title: 'goodbye' }]
|
107
|
+
@response = ResponseCollection.new @array, true, false
|
108
|
+
@linked_array = BraqueClass::LinkedArray.new(@response, BraqueClass)
|
109
|
+
end
|
110
|
+
|
111
|
+
it 'returns an array of the correct number of items' do
|
112
|
+
expect(@linked_array.count).to eq 2
|
113
|
+
end
|
114
|
+
|
115
|
+
it 'returns the correct total_count' do
|
116
|
+
expect(@linked_array.total_count).to eq 3
|
117
|
+
end
|
118
|
+
|
119
|
+
it 'returns an array of new items based on the calling class' do
|
120
|
+
expect(@linked_array.first.id).to eq 1
|
121
|
+
expect(@linked_array.first.title).to eq @array.first[:title]
|
122
|
+
expect(@linked_array.first.class.name).to eq 'BraqueClass'
|
51
123
|
expect(@linked_array[1].id).to eq 2
|
52
124
|
expect(@linked_array[1].title).to eq @array[1][:title]
|
53
125
|
expect(@linked_array[1].class.name).to eq 'BraqueClass'
|
54
126
|
end
|
127
|
+
|
55
128
|
it 'responds to previous_link with the correct value' do
|
56
129
|
expect(@linked_array).to respond_to(:previous_link)
|
57
130
|
expect(@linked_array.previous_link).to eq false
|
58
131
|
end
|
132
|
+
|
59
133
|
it 'responds to next_link with the correct value' do
|
60
134
|
expect(@linked_array).to respond_to(:next_link)
|
61
135
|
expect(@linked_array.next_link).to eq true
|
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.
|
4
|
+
version: 0.1.3
|
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-08-
|
11
|
+
date: 2015-08-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hyperclient
|
@@ -98,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
98
98
|
version: '0'
|
99
99
|
requirements: []
|
100
100
|
rubyforge_project:
|
101
|
-
rubygems_version: 2.
|
101
|
+
rubygems_version: 2.2.2
|
102
102
|
signing_key:
|
103
103
|
specification_version: 4
|
104
104
|
summary: Braque provides a simple interface for interacting with Hypermedia API services
|