roqua-core-api 0.0.39 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ChangeLog.md +6 -2
- data/lib/roqua/core_api/base.rb +1 -2
- data/lib/roqua/core_api/create_dossier.rb +20 -3
- data/lib/roqua/core_api/version.rb +1 -1
- data/lib/roqua/core_api.rb +5 -0
- data/spec/fabricators/auth_session_fabricator.rb +1 -1
- data/spec/fabricators/basic_auth_session_fabricator.rb +1 -1
- data/spec/fabricators/dossier_fabricator.rb +4 -5
- data/spec/fabricators/oauth_session_fabricator.rb +1 -1
- data/spec/fabricators/person_fabricator.rb +7 -0
- data/spec/lib/roqua/core_api/create_dossier_group_spec.rb +1 -1
- data/spec/lib/roqua/core_api/create_dossier_spec.rb +56 -12
- data/spec/lib/roqua/core_api/dossiers_spec.rb +1 -1
- data/spec/lib/roqua/core_api/models/active_virtus_spec.rb +1 -1
- data/spec/lib/roqua/core_api/send_invite_email_spec.rb +1 -1
- data/spec/lib/roqua/core_api/sessions/auth_session_spec.rb +1 -1
- data/spec/lib/roqua/core_api/sessions/oauth_session_spec.rb +1 -1
- data/spec/lib/roqua/core_api/update_dossier_spec.rb +4 -4
- data/spec/spec_helper.rb +4 -0
- data/spec/support/httpparty_helpers.rb +5 -0
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 854a84f222ad107d7e8201a97f906fcac3f492bb
|
4
|
+
data.tar.gz: 2624aacd6d166cb8f3b3c4b38518f4500175421a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c2671c1a0bece7bb7a042398ed6c42edd558e84dcfa6fe4d495157404fbd0262358591b9e0d24d7057944b25fd959222ed8c552feb4636bee5e12771c7f5b390
|
7
|
+
data.tar.gz: e6d9331cf5c39ce4687ea78a129060e74bd69176650f333945feb2dfc5e325ed69448a2f30dcd6418d81438fc010bd7b524a916a1870292957f260ee6ddee1dd
|
data/ChangeLog.md
CHANGED
@@ -1,10 +1,14 @@
|
|
1
|
+
### 0.1.0
|
2
|
+
|
3
|
+
* BACKWARD INCOMPATIBLE: CreateDossier now needs a dossier and a person object.
|
4
|
+
|
1
5
|
### 0.0.39
|
2
6
|
|
3
|
-
Handle empty rails date params
|
7
|
+
* Handle empty rails date params
|
4
8
|
|
5
9
|
### 0.0.37
|
6
10
|
|
7
|
-
Handling new 422 json format in addition to old (temporary hack)
|
11
|
+
* Handling new 422 json format in addition to old (temporary hack)
|
8
12
|
|
9
13
|
### 0.0.36
|
10
14
|
|
data/lib/roqua/core_api/base.rb
CHANGED
@@ -9,8 +9,7 @@ module Roqua
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def errors_to_object(response, obj)
|
12
|
-
(response['errors'][obj.class.name.demodulize.underscore] ||
|
13
|
-
response['errors']).each do |attribute, errors|
|
12
|
+
(response['errors'][obj.class.name.demodulize.underscore] || []).each do |attribute, errors|
|
14
13
|
errors.each do |error|
|
15
14
|
obj.errors.add(attribute.to_sym, error.to_sym)
|
16
15
|
end
|
@@ -1,16 +1,33 @@
|
|
1
1
|
module Roqua
|
2
2
|
module CoreApi
|
3
3
|
# @api private
|
4
|
-
class CreateDossier <
|
4
|
+
class CreateDossier < Base
|
5
5
|
model :session, class: Sessions::AuthSession
|
6
6
|
string :dossier_group_id
|
7
|
-
|
7
|
+
model :dossier, class: Models::Dossier, default: nil
|
8
|
+
model :person, class: Models::Person, default: nil
|
8
9
|
|
9
10
|
def execute
|
10
11
|
response = session.post "/dossier_groups/#{dossier_group_id}/dossiers",
|
11
|
-
person:
|
12
|
+
person: person_attributes, dossier: dossier_attributes
|
13
|
+
if response.code == 422
|
14
|
+
errors_to_object(response, person)
|
15
|
+
errors_to_object(response, dossier)
|
16
|
+
end
|
12
17
|
Models::Dossier.new(response)
|
13
18
|
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def dossier_attributes
|
23
|
+
return {} unless dossier
|
24
|
+
dossier.serializable_hash(except: :people).keep_if { |_k, v| !v.nil? }
|
25
|
+
end
|
26
|
+
|
27
|
+
def person_attributes
|
28
|
+
return {} unless person
|
29
|
+
person.serializable_hash.keep_if { |_k, v| !v.nil? }
|
30
|
+
end
|
14
31
|
end
|
15
32
|
end
|
16
33
|
end
|
data/lib/roqua/core_api.rb
CHANGED
@@ -23,5 +23,10 @@ module Roqua
|
|
23
23
|
# Raised when a request failed due to an expired/non-existant session.
|
24
24
|
class NoSession < StandardError; end
|
25
25
|
class Unauthorized < StandardError; end
|
26
|
+
|
27
|
+
def self.load_fabricators
|
28
|
+
gem_root = Gem::Specification.find_by_name("roqua-core-api").gem_dir
|
29
|
+
Fabrication::Config.path_prefixes << gem_root unless Fabrication::Config.path_prefixes.include? gem_root
|
30
|
+
end
|
26
31
|
end
|
27
32
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
Fabricator(:
|
1
|
+
Fabricator(:roqua_core_api_basic_auth_session, from: Roqua::CoreApi::Sessions::BasicAuthSession) do
|
2
2
|
initialize_with do
|
3
3
|
Roqua::CoreApi::Sessions::BasicAuthSession.new username: 'some_username',
|
4
4
|
password: 'some_password',
|
@@ -1,6 +1,5 @@
|
|
1
|
-
Fabricator(:
|
2
|
-
initialize_with
|
3
|
-
|
4
|
-
|
5
|
-
end
|
1
|
+
Fabricator(:roqua_core_api_dossier, from: Roqua::CoreApi::Models::Dossier) do
|
2
|
+
initialize_with { Roqua::CoreApi::Models::Dossier.new }
|
3
|
+
id 'dossier-id'
|
4
|
+
external_identifier 'external-dossier-identifier'
|
6
5
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
Fabricator(:
|
1
|
+
Fabricator(:roqua_core_api_oauth_session, from: Roqua::CoreApi::Sessions::OAuthSession) do
|
2
2
|
initialize_with do
|
3
3
|
Roqua::CoreApi::Sessions::OAuthSession.new access_token: 'some_access_token', core_site: 'http://core.dev'
|
4
4
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe CreateDossierGroup do
|
4
|
-
let(:session) { Fabricate :
|
4
|
+
let(:session) { Fabricate :roqua_core_api_oauth_session }
|
5
5
|
|
6
6
|
it 'performs a post on the /dossier_groups api path' do
|
7
7
|
expect(session).to receive(:post).with('/dossier_groups', dossier_group: {some: 'attributes'},
|
@@ -1,24 +1,68 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe CreateDossier do
|
4
|
-
let(:session) { Fabricate :
|
4
|
+
let(:session) { Fabricate :roqua_core_api_oauth_session }
|
5
|
+
let(:person) { Fabricate :roqua_core_api_person, id: nil }
|
6
|
+
let(:dossier) { Fabricate :roqua_core_api_dossier, id: nil }
|
7
|
+
let(:response) { httparty_response('id' => 'some_id') }
|
5
8
|
|
6
9
|
it 'performs a post on the /dossiers api path' do
|
7
|
-
expect(session).to receive(:post)
|
8
|
-
|
10
|
+
expect(session).to receive(:post) do |path, options|
|
11
|
+
expect(path).to eq '/dossier_groups/some_dossier_group_id/dossiers'
|
12
|
+
expect(options[:person][:firstname]).to eq 'John'
|
13
|
+
expect(options[:dossier][:external_identifier]).to eq 'external-dossier-identifier'
|
14
|
+
end.and_return(response)
|
15
|
+
|
16
|
+
CreateDossier.run!(session: session,
|
17
|
+
person: person,
|
18
|
+
dossier: dossier,
|
19
|
+
dossier_group_id: 'some_dossier_group_id')
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'works without dossier params' do
|
23
|
+
expect(session).to receive(:post) do |path, options|
|
24
|
+
expect(path).to eq '/dossier_groups/some_dossier_group_id/dossiers'
|
25
|
+
expect(options[:person][:firstname]).to eq 'John'
|
26
|
+
end.and_return(response)
|
27
|
+
|
28
|
+
CreateDossier.run!(session: session,
|
29
|
+
person: person,
|
30
|
+
dossier_group_id: 'some_dossier_group_id')
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'works without person params' do
|
34
|
+
expect(session).to receive(:post) do |path, options|
|
35
|
+
expect(path).to eq '/dossier_groups/some_dossier_group_id/dossiers'
|
36
|
+
end.and_return(response)
|
37
|
+
|
9
38
|
CreateDossier.run!(session: session,
|
10
|
-
attributes: {person: 'person', other: 'attributes'},
|
11
39
|
dossier_group_id: 'some_dossier_group_id')
|
12
40
|
end
|
13
41
|
|
14
42
|
it 'returns a Dossier model' do
|
15
|
-
allow(session).to receive(:post).
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
expect(
|
22
|
-
|
43
|
+
allow(session).to receive(:post).and_return(response)
|
44
|
+
new_dossier = CreateDossier.run!(session: session,
|
45
|
+
person: person,
|
46
|
+
dossier: dossier,
|
47
|
+
dossier_group_id: 'some_dossier_group_id')
|
48
|
+
expect(new_dossier).to be_a(Dossier)
|
49
|
+
expect(new_dossier.id).to eq('some_id')
|
50
|
+
end
|
51
|
+
|
52
|
+
describe 'with validation errors' do
|
53
|
+
let(:response) { httparty_response({'errors' => {'person' => {'email' => ['invalid_email']},
|
54
|
+
'dossier' => {'external_identifier' => ['blank']}}},
|
55
|
+
422) }
|
56
|
+
|
57
|
+
it 'Set the errors on the objects' do
|
58
|
+
allow(session).to receive(:post).and_return(response)
|
59
|
+
new_dossier = CreateDossier.run!(session: session,
|
60
|
+
person: person,
|
61
|
+
dossier: dossier,
|
62
|
+
dossier_group_id: 'some_dossier_group_id')
|
63
|
+
expect(new_dossier.persisted?).to be_falsy
|
64
|
+
expect(person.errors[:email]).to eq ['Geen geldig email adres']
|
65
|
+
expect(dossier.errors[:external_identifier]).to eq ['moet opgegeven zijn']
|
66
|
+
end
|
23
67
|
end
|
24
68
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Dossiers do
|
4
|
-
let(:session) { Fabricate :
|
4
|
+
let(:session) { Fabricate :roqua_core_api_oauth_session }
|
5
5
|
let(:dossier_group_id) { 'some_dg_id' }
|
6
6
|
let(:external_identifier) { 'some_eid' }
|
7
7
|
let(:response) { {'headers' => %w(id birth_year gender firstname lastname),
|
@@ -19,7 +19,7 @@ module Roqua
|
|
19
19
|
end
|
20
20
|
it 'sets an error if the date is invalid' do
|
21
21
|
subject.attributes = { 'date(1i)' => '1999', 'date(2i)' => '12', 'date(3i)' => '32'}
|
22
|
-
expect(subject.errors[:date][0]).to match '
|
22
|
+
expect(subject.errors[:date][0]).to match 'Niet een bestaande datum'
|
23
23
|
end
|
24
24
|
it 'can create new with date(i1) params' do
|
25
25
|
foo = Foo.new('date(1i)' => '1999', 'date(2i)' => '12', 'date(3i)' => '8')
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe SendInviteEmail do
|
4
|
-
let(:session) { Fabricate :
|
4
|
+
let(:session) { Fabricate :roqua_core_api_oauth_session }
|
5
5
|
|
6
6
|
it 'performs a post on the send_invite_email api path' do
|
7
7
|
expect(session).to receive(:post).with '/dossiers/some_dossier_id/send_invite_email',
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
require 'webmock/rspec'
|
3
3
|
|
4
4
|
describe AuthSession do
|
5
|
-
let(:session) { Fabricate :
|
5
|
+
let(:session) { Fabricate :roqua_core_api_auth_session }
|
6
6
|
let(:response) { double('response', code: 201, parsed_response: 'some_response') }
|
7
7
|
|
8
8
|
describe '#initialize' do
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
require 'webmock/rspec'
|
3
3
|
|
4
4
|
describe OAuthSession do
|
5
|
-
let(:session) { Fabricate :
|
5
|
+
let(:session) { Fabricate :roqua_core_api_oauth_session }
|
6
6
|
let(:response) { double('response', code: 201, parsed_response: 'some_response') }
|
7
7
|
|
8
8
|
describe '#initialize' do
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe UpdateDossier do
|
4
|
-
let(:session) { Fabricate :
|
5
|
-
let(:dossier) { Fabricate :
|
4
|
+
let(:session) { Fabricate :roqua_core_api_oauth_session }
|
5
|
+
let(:dossier) { Fabricate :roqua_core_api_dossier }
|
6
6
|
let(:response) { double }
|
7
7
|
|
8
8
|
before do
|
@@ -28,7 +28,7 @@ describe UpdateDossier do
|
|
28
28
|
end
|
29
29
|
|
30
30
|
describe 'returns false when the call was incorrect' do
|
31
|
-
let(:error) { { 'id' => ['empty']
|
31
|
+
let(:error) { {'dossier' => { 'id' => ['empty']}} }
|
32
32
|
before do
|
33
33
|
allow(response).to receive(:[]).with('errors').and_return(error)
|
34
34
|
|
@@ -43,7 +43,7 @@ describe UpdateDossier do
|
|
43
43
|
|
44
44
|
it 'should add the errors to the dossier' do
|
45
45
|
expect(dossier.errors).to_not be_empty
|
46
|
-
expect(dossier.errors[
|
46
|
+
expect(dossier.errors[:id][0]).to eq 'moet opgegeven zijn'
|
47
47
|
end
|
48
48
|
end
|
49
49
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -9,4 +9,8 @@ include Roqua::CoreApi
|
|
9
9
|
include Roqua::CoreApi::Sessions
|
10
10
|
include Roqua::CoreApi::Models
|
11
11
|
|
12
|
+
Dir[File.join(File.expand_path(File.dirname(__FILE__)), 'support', '*.rb')].each { |f| require f }
|
13
|
+
|
14
|
+
I18n.load_path << Dir[File.join(File.expand_path(File.dirname(__FILE__)), '..', 'config', 'locales', '*.yml')]
|
15
|
+
I18n.enforce_available_locales = false
|
12
16
|
I18n.default_locale = :nl
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: roqua-core-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marten Veldthuis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -218,6 +218,7 @@ files:
|
|
218
218
|
- spec/fabricators/basic_auth_session_fabricator.rb
|
219
219
|
- spec/fabricators/dossier_fabricator.rb
|
220
220
|
- spec/fabricators/oauth_session_fabricator.rb
|
221
|
+
- spec/fabricators/person_fabricator.rb
|
221
222
|
- spec/lib/roqua/core_api/create_dossier_group_spec.rb
|
222
223
|
- spec/lib/roqua/core_api/create_dossier_spec.rb
|
223
224
|
- spec/lib/roqua/core_api/dossiers_spec.rb
|
@@ -231,6 +232,7 @@ files:
|
|
231
232
|
- spec/lib/roqua/core_api/sessions/oauth_session_spec.rb
|
232
233
|
- spec/lib/roqua/core_api/update_dossier_spec.rb
|
233
234
|
- spec/spec_helper.rb
|
235
|
+
- spec/support/httpparty_helpers.rb
|
234
236
|
homepage: https://github.com/roqua/core/blob/master/core_api/README.markdown
|
235
237
|
licenses:
|
236
238
|
- MIT
|
@@ -251,7 +253,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
251
253
|
version: '0'
|
252
254
|
requirements: []
|
253
255
|
rubyforge_project:
|
254
|
-
rubygems_version: 2.3
|
256
|
+
rubygems_version: 2.4.3
|
255
257
|
signing_key:
|
256
258
|
specification_version: 4
|
257
259
|
summary: API wrapper gem around Core's API
|
@@ -261,6 +263,7 @@ test_files:
|
|
261
263
|
- spec/fabricators/basic_auth_session_fabricator.rb
|
262
264
|
- spec/fabricators/dossier_fabricator.rb
|
263
265
|
- spec/fabricators/oauth_session_fabricator.rb
|
266
|
+
- spec/fabricators/person_fabricator.rb
|
264
267
|
- spec/lib/roqua/core_api/create_dossier_group_spec.rb
|
265
268
|
- spec/lib/roqua/core_api/create_dossier_spec.rb
|
266
269
|
- spec/lib/roqua/core_api/dossiers_spec.rb
|
@@ -274,4 +277,5 @@ test_files:
|
|
274
277
|
- spec/lib/roqua/core_api/sessions/oauth_session_spec.rb
|
275
278
|
- spec/lib/roqua/core_api/update_dossier_spec.rb
|
276
279
|
- spec/spec_helper.rb
|
280
|
+
- spec/support/httpparty_helpers.rb
|
277
281
|
has_rdoc:
|