quake_timesheets_client 0.1.0
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 +7 -0
- data/GENERATING_README.md +17 -0
- data/Gemfile +9 -0
- data/README.md +161 -0
- data/Rakefile +10 -0
- data/build.sh +10 -0
- data/commands +13 -0
- data/docs/Approval.md +34 -0
- data/docs/ApprovalType.md +24 -0
- data/docs/ApprovalTypesApi.md +153 -0
- data/docs/ApprovalsApi.md +153 -0
- data/docs/Dataset.md +24 -0
- data/docs/DatasetsApi.md +214 -0
- data/docs/EntriesApi.md +251 -0
- data/docs/Entry.md +36 -0
- data/docs/PeopleApi.md +151 -0
- data/docs/Person.md +22 -0
- data/git_push.sh +58 -0
- data/lib/quake_timesheets_client.rb +58 -0
- data/lib/quake_timesheets_client/api/approval_types_api.rb +158 -0
- data/lib/quake_timesheets_client/api/approvals_api.rb +174 -0
- data/lib/quake_timesheets_client/api/datasets_api.rb +202 -0
- data/lib/quake_timesheets_client/api/entries_api.rb +253 -0
- data/lib/quake_timesheets_client/api/people_api.rb +151 -0
- data/lib/quake_timesheets_client/api_client.rb +396 -0
- data/lib/quake_timesheets_client/api_error.rb +57 -0
- data/lib/quake_timesheets_client/configuration.rb +302 -0
- data/lib/quake_timesheets_client/models/approval.rb +378 -0
- data/lib/quake_timesheets_client/models/approval_type.rb +269 -0
- data/lib/quake_timesheets_client/models/dataset.rb +268 -0
- data/lib/quake_timesheets_client/models/entry.rb +361 -0
- data/lib/quake_timesheets_client/models/person.rb +254 -0
- data/lib/quake_timesheets_client/version.rb +24 -0
- data/quake_timesheets_client.gemspec +38 -0
- data/ruby-templates/README.mustache +187 -0
- data/ruby-templates/api_client.mustache +263 -0
- data/ruby-templates/api_client_faraday_partial.mustache +140 -0
- data/ruby-templates/configuration.mustache +379 -0
- data/ruby-templates/gem.mustache +59 -0
- data/ruby-templates/version.mustache +16 -0
- data/ruby.config.yaml +10 -0
- data/spec/api/approval_types_api_spec.rb +59 -0
- data/spec/api/approvals_api_spec.rb +60 -0
- data/spec/api/datasets_api_spec.rb +67 -0
- data/spec/api/entries_api_spec.rb +82 -0
- data/spec/api/people_api_spec.rb +58 -0
- data/spec/api_client_spec.rb +188 -0
- data/spec/configuration_spec.rb +42 -0
- data/spec/models/approval_spec.rb +86 -0
- data/spec/models/approval_type_spec.rb +52 -0
- data/spec/models/dataset_spec.rb +52 -0
- data/spec/models/entry_spec.rb +92 -0
- data/spec/models/person_spec.rb +46 -0
- data/spec/spec_helper.rb +111 -0
- metadata +149 -0
@@ -0,0 +1,59 @@
|
|
1
|
+
=begin
|
2
|
+
{{> api_info}}
|
3
|
+
=end
|
4
|
+
|
5
|
+
# Pre-define base modules
|
6
|
+
'{{moduleName}}'.split('::').reduce(Object) do |previous, mod|
|
7
|
+
if previous.const_defined?(mod.to_sym)
|
8
|
+
previous.const_get(mod.to_sym)
|
9
|
+
else
|
10
|
+
previous.const_set(mod.to_sym, Module.new)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
# Common files
|
15
|
+
require '{{gemName}}/api_client'
|
16
|
+
require '{{gemName}}/api_error'
|
17
|
+
require '{{gemName}}/version'
|
18
|
+
require '{{gemName}}/configuration'
|
19
|
+
|
20
|
+
# Models
|
21
|
+
{{#models}}
|
22
|
+
{{#model}}
|
23
|
+
{{^parent}}
|
24
|
+
require '{{gemName}}/{{modelPackage}}/{{classFilename}}'
|
25
|
+
{{/parent}}
|
26
|
+
{{/model}}
|
27
|
+
{{/models}}
|
28
|
+
{{#models}}
|
29
|
+
{{#model}}
|
30
|
+
{{#parent}}
|
31
|
+
require '{{gemName}}/{{modelPackage}}/{{classFilename}}'
|
32
|
+
{{/parent}}
|
33
|
+
{{/model}}
|
34
|
+
{{/models}}
|
35
|
+
|
36
|
+
# APIs
|
37
|
+
{{#apiInfo}}
|
38
|
+
{{#apis}}
|
39
|
+
require '{{importPath}}'
|
40
|
+
{{/apis}}
|
41
|
+
{{/apiInfo}}
|
42
|
+
|
43
|
+
module {{moduleName}}
|
44
|
+
class << self
|
45
|
+
# Customize default settings for the SDK using block.
|
46
|
+
# {{moduleName}}.configure do |config|
|
47
|
+
# config.username = "xxx"
|
48
|
+
# config.password = "xxx"
|
49
|
+
# end
|
50
|
+
# If no block given, return the default Configuration object.
|
51
|
+
def configure
|
52
|
+
if block_given?
|
53
|
+
yield(Configuration.default)
|
54
|
+
else
|
55
|
+
Configuration.default
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
=begin
|
2
|
+
{{> api_info}}
|
3
|
+
=end
|
4
|
+
|
5
|
+
# Pre-define base modules
|
6
|
+
'{{moduleName}}'.split('::').reduce(Object) do |previous, mod|
|
7
|
+
if previous.const_defined?(mod.to_sym)
|
8
|
+
previous.const_get(mod.to_sym)
|
9
|
+
else
|
10
|
+
previous.const_set(mod.to_sym, Module.new)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
module {{moduleName}}
|
15
|
+
VERSION = '{{gemVersion}}'
|
16
|
+
end
|
data/ruby.config.yaml
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
---
|
2
|
+
gemName: "quake_timesheets_client"
|
3
|
+
gemHomepage: https://www.quake.co.uk
|
4
|
+
gemSummary: A client for the Quake Timesheets API
|
5
|
+
gemDescription: Requires the Quake Timesheets system
|
6
|
+
gemLicense: MIT
|
7
|
+
gemVersion: 0.1.0
|
8
|
+
gemRequiredRubyVersion: ">= 2.7"
|
9
|
+
library: faraday
|
10
|
+
moduleName: Quake::Timesheets
|
@@ -0,0 +1,59 @@
|
|
1
|
+
=begin
|
2
|
+
#TimesheetsApi (params in:formData)
|
3
|
+
|
4
|
+
# <p>Another API description</p>
|
5
|
+
|
6
|
+
The version of the OpenAPI document: 1.0
|
7
|
+
|
8
|
+
Generated by: https://openapi-generator.tech
|
9
|
+
OpenAPI Generator version: 5.1.0
|
10
|
+
|
11
|
+
=end
|
12
|
+
|
13
|
+
require 'spec_helper'
|
14
|
+
require 'json'
|
15
|
+
|
16
|
+
# Unit tests for Quake::Timesheets::ApprovalTypesApi
|
17
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
18
|
+
# Please update as you see appropriate
|
19
|
+
describe 'ApprovalTypesApi' do
|
20
|
+
before do
|
21
|
+
# run before each test
|
22
|
+
@api_instance = Quake::Timesheets::ApprovalTypesApi.new
|
23
|
+
end
|
24
|
+
|
25
|
+
after do
|
26
|
+
# run after each test
|
27
|
+
end
|
28
|
+
|
29
|
+
describe 'test an instance of ApprovalTypesApi' do
|
30
|
+
it 'should create an instance of ApprovalTypesApi' do
|
31
|
+
expect(@api_instance).to be_instance_of(Quake::Timesheets::ApprovalTypesApi)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# unit tests for get_api_v1_approval_types
|
36
|
+
# Search for approval types matching filters
|
37
|
+
# @param [Hash] opts the optional parameters
|
38
|
+
# @option opts [String] :dataset_id Filter to the approval types belonging to one of the identified datasets
|
39
|
+
# @return [Array<ApprovalType>]
|
40
|
+
describe 'get_api_v1_approval_types test' do
|
41
|
+
it 'should work' do
|
42
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# unit tests for post_api_v1_approval_types
|
47
|
+
# Create a new Approval Type
|
48
|
+
# @param weight The weight provided by approvals of this type
|
49
|
+
# @param name The name of the approval type
|
50
|
+
# @param dataset_id ID of the dataset this approval type is linked to
|
51
|
+
# @param [Hash] opts the optional parameters
|
52
|
+
# @return [ApprovalType]
|
53
|
+
describe 'post_api_v1_approval_types test' do
|
54
|
+
it 'should work' do
|
55
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
=begin
|
2
|
+
#TimesheetsApi (params in:formData)
|
3
|
+
|
4
|
+
# <p>Another API description</p>
|
5
|
+
|
6
|
+
The version of the OpenAPI document: 1.0
|
7
|
+
|
8
|
+
Generated by: https://openapi-generator.tech
|
9
|
+
OpenAPI Generator version: 5.1.0
|
10
|
+
|
11
|
+
=end
|
12
|
+
|
13
|
+
require 'spec_helper'
|
14
|
+
require 'json'
|
15
|
+
|
16
|
+
# Unit tests for Quake::Timesheets::ApprovalsApi
|
17
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
18
|
+
# Please update as you see appropriate
|
19
|
+
describe 'ApprovalsApi' do
|
20
|
+
before do
|
21
|
+
# run before each test
|
22
|
+
@api_instance = Quake::Timesheets::ApprovalsApi.new
|
23
|
+
end
|
24
|
+
|
25
|
+
after do
|
26
|
+
# run after each test
|
27
|
+
end
|
28
|
+
|
29
|
+
describe 'test an instance of ApprovalsApi' do
|
30
|
+
it 'should create an instance of ApprovalsApi' do
|
31
|
+
expect(@api_instance).to be_instance_of(Quake::Timesheets::ApprovalsApi)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# unit tests for get_api_v1_approvals
|
36
|
+
# Search for approval types matching filters
|
37
|
+
# @param dataset_id Filter to the approvals belonging to one of the identified datasets
|
38
|
+
# @param [Hash] opts the optional parameters
|
39
|
+
# @return [Array<Approval>]
|
40
|
+
describe 'get_api_v1_approvals test' do
|
41
|
+
it 'should work' do
|
42
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# unit tests for post_api_v1_approvals
|
47
|
+
# Create a new Approval
|
48
|
+
# @param state
|
49
|
+
# @param approval_type_id The ID of the Approval Type of this Approval
|
50
|
+
# @param entry_id The ID of the Entry this Approval is linked to
|
51
|
+
# @param dataset_id ID of the dataset this approval type is linked to
|
52
|
+
# @param [Hash] opts the optional parameters
|
53
|
+
# @return [Approval]
|
54
|
+
describe 'post_api_v1_approvals test' do
|
55
|
+
it 'should work' do
|
56
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
=begin
|
2
|
+
#TimesheetsApi (params in:formData)
|
3
|
+
|
4
|
+
# <p>Another API description</p>
|
5
|
+
|
6
|
+
The version of the OpenAPI document: 1.0
|
7
|
+
|
8
|
+
Generated by: https://openapi-generator.tech
|
9
|
+
OpenAPI Generator version: 5.1.0
|
10
|
+
|
11
|
+
=end
|
12
|
+
|
13
|
+
require 'spec_helper'
|
14
|
+
require 'json'
|
15
|
+
|
16
|
+
# Unit tests for Quake::Timesheets::DatasetsApi
|
17
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
18
|
+
# Please update as you see appropriate
|
19
|
+
describe 'DatasetsApi' do
|
20
|
+
before do
|
21
|
+
# run before each test
|
22
|
+
@api_instance = Quake::Timesheets::DatasetsApi.new
|
23
|
+
end
|
24
|
+
|
25
|
+
after do
|
26
|
+
# run after each test
|
27
|
+
end
|
28
|
+
|
29
|
+
describe 'test an instance of DatasetsApi' do
|
30
|
+
it 'should create an instance of DatasetsApi' do
|
31
|
+
expect(@api_instance).to be_instance_of(Quake::Timesheets::DatasetsApi)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# unit tests for get_api_v1_datasets
|
36
|
+
# List all available datasets
|
37
|
+
# @param [Hash] opts the optional parameters
|
38
|
+
# @return [Array<Dataset>]
|
39
|
+
describe 'get_api_v1_datasets test' do
|
40
|
+
it 'should work' do
|
41
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# unit tests for get_api_v1_datasets_id
|
46
|
+
# Show details about a specific dataset
|
47
|
+
# @param id ID of the dataset
|
48
|
+
# @param [Hash] opts the optional parameters
|
49
|
+
# @return [Dataset]
|
50
|
+
describe 'get_api_v1_datasets_id test' do
|
51
|
+
it 'should work' do
|
52
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# unit tests for post_api_v1_datasets
|
57
|
+
# Create a new Dataset record
|
58
|
+
# @param name Name for the Dataset object
|
59
|
+
# @param [Hash] opts the optional parameters
|
60
|
+
# @return [Dataset]
|
61
|
+
describe 'post_api_v1_datasets test' do
|
62
|
+
it 'should work' do
|
63
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
=begin
|
2
|
+
#TimesheetsApi (params in:formData)
|
3
|
+
|
4
|
+
# <p>Another API description</p>
|
5
|
+
|
6
|
+
The version of the OpenAPI document: 1.0
|
7
|
+
|
8
|
+
Generated by: https://openapi-generator.tech
|
9
|
+
OpenAPI Generator version: 5.1.0
|
10
|
+
|
11
|
+
=end
|
12
|
+
|
13
|
+
require 'spec_helper'
|
14
|
+
require 'json'
|
15
|
+
|
16
|
+
# Unit tests for Quake::Timesheets::EntriesApi
|
17
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
18
|
+
# Please update as you see appropriate
|
19
|
+
describe 'EntriesApi' do
|
20
|
+
before do
|
21
|
+
# run before each test
|
22
|
+
@api_instance = Quake::Timesheets::EntriesApi.new
|
23
|
+
end
|
24
|
+
|
25
|
+
after do
|
26
|
+
# run after each test
|
27
|
+
end
|
28
|
+
|
29
|
+
describe 'test an instance of EntriesApi' do
|
30
|
+
it 'should create an instance of EntriesApi' do
|
31
|
+
expect(@api_instance).to be_instance_of(Quake::Timesheets::EntriesApi)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# unit tests for get_api_v1_entries
|
36
|
+
# Search for entries matching filters
|
37
|
+
# @param [Hash] opts the optional parameters
|
38
|
+
# @option opts [String] :dataset_id Filter to the entries belonging to one of the identified datasets
|
39
|
+
# @option opts [String] :person_id Filter to the entries belonging to one of the identified people
|
40
|
+
# @option opts [String] :from_date Return only entries after this DateTime (inclusive)
|
41
|
+
# @option opts [String] :to_date Return only entries before this DateTime (inclusive)
|
42
|
+
# @return [Array<Entry>]
|
43
|
+
describe 'get_api_v1_entries test' do
|
44
|
+
it 'should work' do
|
45
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
# unit tests for post_api_v1_entries
|
50
|
+
# Create a new Entry
|
51
|
+
# @param [Hash] opts the optional parameters
|
52
|
+
# @option opts [String] :person_id ID of the person to which this entry pertains
|
53
|
+
# @option opts [String] :start_at Time period at which this entry starts
|
54
|
+
# @option opts [String] :end_at Time period at which this entry ends
|
55
|
+
# @option opts [Float] :quantity
|
56
|
+
# @option opts [String] :unit
|
57
|
+
# @option opts [String] :external_reference Unique identifier of the activity this Entry relates to
|
58
|
+
# @return [Entry]
|
59
|
+
describe 'post_api_v1_entries test' do
|
60
|
+
it 'should work' do
|
61
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
# unit tests for post_api_v1_entries_id
|
66
|
+
# Update an existing Entry
|
67
|
+
# @param id The ID for the Entry
|
68
|
+
# @param [Hash] opts the optional parameters
|
69
|
+
# @option opts [String] :person_id ID of the person to which this entry pertains
|
70
|
+
# @option opts [String] :start_at Time period at which this entry starts
|
71
|
+
# @option opts [String] :end_at Time period at which this entry ends
|
72
|
+
# @option opts [Float] :quantity
|
73
|
+
# @option opts [String] :unit
|
74
|
+
# @option opts [String] :external_reference Unique identifier of the activity this Entry relates to
|
75
|
+
# @return [Entry]
|
76
|
+
describe 'post_api_v1_entries_id test' do
|
77
|
+
it 'should work' do
|
78
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
=begin
|
2
|
+
#TimesheetsApi (params in:formData)
|
3
|
+
|
4
|
+
# <p>Another API description</p>
|
5
|
+
|
6
|
+
The version of the OpenAPI document: 1.0
|
7
|
+
|
8
|
+
Generated by: https://openapi-generator.tech
|
9
|
+
OpenAPI Generator version: 5.1.0
|
10
|
+
|
11
|
+
=end
|
12
|
+
|
13
|
+
require 'spec_helper'
|
14
|
+
require 'json'
|
15
|
+
|
16
|
+
# Unit tests for Quake::Timesheets::PeopleApi
|
17
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
18
|
+
# Please update as you see appropriate
|
19
|
+
describe 'PeopleApi' do
|
20
|
+
before do
|
21
|
+
# run before each test
|
22
|
+
@api_instance = Quake::Timesheets::PeopleApi.new
|
23
|
+
end
|
24
|
+
|
25
|
+
after do
|
26
|
+
# run after each test
|
27
|
+
end
|
28
|
+
|
29
|
+
describe 'test an instance of PeopleApi' do
|
30
|
+
it 'should create an instance of PeopleApi' do
|
31
|
+
expect(@api_instance).to be_instance_of(Quake::Timesheets::PeopleApi)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# unit tests for get_api_v1_people
|
36
|
+
# Search for people matching filters
|
37
|
+
# @param [Hash] opts the optional parameters
|
38
|
+
# @option opts [String] :dataset_id Filter to the people belonging to one of the identified datasets
|
39
|
+
# @return [Array<Person>]
|
40
|
+
describe 'get_api_v1_people test' do
|
41
|
+
it 'should work' do
|
42
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# unit tests for post_api_v1_people
|
47
|
+
# Create a new Person record
|
48
|
+
# @param name Human readable name for the Person object (usually the subject's real name)
|
49
|
+
# @param dataset_id Dataset to which the Person object should belong
|
50
|
+
# @param [Hash] opts the optional parameters
|
51
|
+
# @return [Person]
|
52
|
+
describe 'post_api_v1_people test' do
|
53
|
+
it 'should work' do
|
54
|
+
# assertion here. ref: https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
@@ -0,0 +1,188 @@
|
|
1
|
+
=begin
|
2
|
+
#TimesheetsApi (params in:formData)
|
3
|
+
|
4
|
+
# <p>Another API description</p>
|
5
|
+
|
6
|
+
The version of the OpenAPI document: 1.0
|
7
|
+
|
8
|
+
Generated by: https://openapi-generator.tech
|
9
|
+
OpenAPI Generator version: 5.1.0
|
10
|
+
|
11
|
+
=end
|
12
|
+
|
13
|
+
require 'spec_helper'
|
14
|
+
|
15
|
+
describe Quake::Timesheets::ApiClient do
|
16
|
+
context 'initialization' do
|
17
|
+
context 'URL stuff' do
|
18
|
+
context 'host' do
|
19
|
+
it 'removes http from host' do
|
20
|
+
Quake::Timesheets.configure { |c| c.host = 'http://example.com' }
|
21
|
+
expect(Quake::Timesheets::Configuration.default.host).to eq('example.com')
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'removes https from host' do
|
25
|
+
Quake::Timesheets.configure { |c| c.host = 'https://wookiee.com' }
|
26
|
+
expect(Quake::Timesheets::ApiClient.default.config.host).to eq('wookiee.com')
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'removes trailing path from host' do
|
30
|
+
Quake::Timesheets.configure { |c| c.host = 'hobo.com/v4' }
|
31
|
+
expect(Quake::Timesheets::Configuration.default.host).to eq('hobo.com')
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
context 'base_path' do
|
36
|
+
it "prepends a slash to base_path" do
|
37
|
+
Quake::Timesheets.configure { |c| c.base_path = 'v4/dog' }
|
38
|
+
expect(Quake::Timesheets::Configuration.default.base_path).to eq('/v4/dog')
|
39
|
+
end
|
40
|
+
|
41
|
+
it "doesn't prepend a slash if one is already there" do
|
42
|
+
Quake::Timesheets.configure { |c| c.base_path = '/v4/dog' }
|
43
|
+
expect(Quake::Timesheets::Configuration.default.base_path).to eq('/v4/dog')
|
44
|
+
end
|
45
|
+
|
46
|
+
it "ends up as a blank string if nil" do
|
47
|
+
Quake::Timesheets.configure { |c| c.base_path = nil }
|
48
|
+
expect(Quake::Timesheets::Configuration.default.base_path).to eq('')
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
describe '#deserialize' do
|
55
|
+
it "handles Array<Integer>" do
|
56
|
+
api_client = Quake::Timesheets::ApiClient.new
|
57
|
+
headers = { 'Content-Type' => 'application/json' }
|
58
|
+
response = double('response', headers: headers, body: '[12, 34]')
|
59
|
+
data = api_client.deserialize(response, 'Array<Integer>')
|
60
|
+
expect(data).to be_instance_of(Array)
|
61
|
+
expect(data).to eq([12, 34])
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'handles Array<Array<Integer>>' do
|
65
|
+
api_client = Quake::Timesheets::ApiClient.new
|
66
|
+
headers = { 'Content-Type' => 'application/json' }
|
67
|
+
response = double('response', headers: headers, body: '[[12, 34], [56]]')
|
68
|
+
data = api_client.deserialize(response, 'Array<Array<Integer>>')
|
69
|
+
expect(data).to be_instance_of(Array)
|
70
|
+
expect(data).to eq([[12, 34], [56]])
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'handles Hash<String, String>' do
|
74
|
+
api_client = Quake::Timesheets::ApiClient.new
|
75
|
+
headers = { 'Content-Type' => 'application/json' }
|
76
|
+
response = double('response', headers: headers, body: '{"message": "Hello"}')
|
77
|
+
data = api_client.deserialize(response, 'Hash<String, String>')
|
78
|
+
expect(data).to be_instance_of(Hash)
|
79
|
+
expect(data).to eq(:message => 'Hello')
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
describe "#object_to_hash" do
|
84
|
+
it 'ignores nils and includes empty arrays' do
|
85
|
+
# uncomment below to test object_to_hash for model
|
86
|
+
# api_client = Quake::Timesheets::ApiClient.new
|
87
|
+
# _model = Quake::Timesheets::ModelName.new
|
88
|
+
# update the model attribute below
|
89
|
+
# _model.id = 1
|
90
|
+
# update the expected value (hash) below
|
91
|
+
# expected = {id: 1, name: '', tags: []}
|
92
|
+
# expect(api_client.object_to_hash(_model)).to eq(expected)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
describe '#build_collection_param' do
|
97
|
+
let(:param) { ['aa', 'bb', 'cc'] }
|
98
|
+
let(:api_client) { Quake::Timesheets::ApiClient.new }
|
99
|
+
|
100
|
+
it 'works for csv' do
|
101
|
+
expect(api_client.build_collection_param(param, :csv)).to eq('aa,bb,cc')
|
102
|
+
end
|
103
|
+
|
104
|
+
it 'works for ssv' do
|
105
|
+
expect(api_client.build_collection_param(param, :ssv)).to eq('aa bb cc')
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'works for tsv' do
|
109
|
+
expect(api_client.build_collection_param(param, :tsv)).to eq("aa\tbb\tcc")
|
110
|
+
end
|
111
|
+
|
112
|
+
it 'works for pipes' do
|
113
|
+
expect(api_client.build_collection_param(param, :pipes)).to eq('aa|bb|cc')
|
114
|
+
end
|
115
|
+
|
116
|
+
it 'works for multi' do
|
117
|
+
expect(api_client.build_collection_param(param, :multi)).to eq(['aa', 'bb', 'cc'])
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'fails for invalid collection format' do
|
121
|
+
expect { api_client.build_collection_param(param, :INVALID) }.to raise_error(RuntimeError, 'unknown collection format: :INVALID')
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
describe '#json_mime?' do
|
126
|
+
let(:api_client) { Quake::Timesheets::ApiClient.new }
|
127
|
+
|
128
|
+
it 'works' do
|
129
|
+
expect(api_client.json_mime?(nil)).to eq false
|
130
|
+
expect(api_client.json_mime?('')).to eq false
|
131
|
+
|
132
|
+
expect(api_client.json_mime?('application/json')).to eq true
|
133
|
+
expect(api_client.json_mime?('application/json; charset=UTF8')).to eq true
|
134
|
+
expect(api_client.json_mime?('APPLICATION/JSON')).to eq true
|
135
|
+
|
136
|
+
expect(api_client.json_mime?('application/xml')).to eq false
|
137
|
+
expect(api_client.json_mime?('text/plain')).to eq false
|
138
|
+
expect(api_client.json_mime?('application/jsonp')).to eq false
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
describe '#select_header_accept' do
|
143
|
+
let(:api_client) { Quake::Timesheets::ApiClient.new }
|
144
|
+
|
145
|
+
it 'works' do
|
146
|
+
expect(api_client.select_header_accept(nil)).to be_nil
|
147
|
+
expect(api_client.select_header_accept([])).to be_nil
|
148
|
+
|
149
|
+
expect(api_client.select_header_accept(['application/json'])).to eq('application/json')
|
150
|
+
expect(api_client.select_header_accept(['application/xml', 'application/json; charset=UTF8'])).to eq('application/json; charset=UTF8')
|
151
|
+
expect(api_client.select_header_accept(['APPLICATION/JSON', 'text/html'])).to eq('APPLICATION/JSON')
|
152
|
+
|
153
|
+
expect(api_client.select_header_accept(['application/xml'])).to eq('application/xml')
|
154
|
+
expect(api_client.select_header_accept(['text/html', 'application/xml'])).to eq('text/html,application/xml')
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
describe '#select_header_content_type' do
|
159
|
+
let(:api_client) { Quake::Timesheets::ApiClient.new }
|
160
|
+
|
161
|
+
it 'works' do
|
162
|
+
expect(api_client.select_header_content_type(nil)).to eq('application/json')
|
163
|
+
expect(api_client.select_header_content_type([])).to eq('application/json')
|
164
|
+
|
165
|
+
expect(api_client.select_header_content_type(['application/json'])).to eq('application/json')
|
166
|
+
expect(api_client.select_header_content_type(['application/xml', 'application/json; charset=UTF8'])).to eq('application/json; charset=UTF8')
|
167
|
+
expect(api_client.select_header_content_type(['APPLICATION/JSON', 'text/html'])).to eq('APPLICATION/JSON')
|
168
|
+
expect(api_client.select_header_content_type(['application/xml'])).to eq('application/xml')
|
169
|
+
expect(api_client.select_header_content_type(['text/plain', 'application/xml'])).to eq('text/plain')
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
describe '#sanitize_filename' do
|
174
|
+
let(:api_client) { Quake::Timesheets::ApiClient.new }
|
175
|
+
|
176
|
+
it 'works' do
|
177
|
+
expect(api_client.sanitize_filename('sun')).to eq('sun')
|
178
|
+
expect(api_client.sanitize_filename('sun.gif')).to eq('sun.gif')
|
179
|
+
expect(api_client.sanitize_filename('../sun.gif')).to eq('sun.gif')
|
180
|
+
expect(api_client.sanitize_filename('/var/tmp/sun.gif')).to eq('sun.gif')
|
181
|
+
expect(api_client.sanitize_filename('./sun.gif')).to eq('sun.gif')
|
182
|
+
expect(api_client.sanitize_filename('..\sun.gif')).to eq('sun.gif')
|
183
|
+
expect(api_client.sanitize_filename('\var\tmp\sun.gif')).to eq('sun.gif')
|
184
|
+
expect(api_client.sanitize_filename('c:\var\tmp\sun.gif')).to eq('sun.gif')
|
185
|
+
expect(api_client.sanitize_filename('.\sun.gif')).to eq('sun.gif')
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|