samanage 2.1.11 → 2.1.12

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: 73b37258bdc771003bdb652ab264c946db1247ec
4
- data.tar.gz: 8e446e5d3aecdc865a66d019b6ce4aad8ba8dfca
3
+ metadata.gz: 1ec372d3885f312e767a2ed4f28fb7642fda6f3e
4
+ data.tar.gz: 716ebc7f35ce2e54d567b64c20845c2c66d3a41c
5
5
  SHA512:
6
- metadata.gz: dcfeca370ba9e587e53981de17309db4d48a6c680ce06ef00666943824bad9b09ac08ab0787214aac026a5872cfb2adc936135800c41b0b07dc9705265f9e3cc
7
- data.tar.gz: 0fda6ea6d0e5c97ff527a43ef1f9ac1828276aea177953cd0535385bcc4698fda25af98ba9f302dd0bd32b6ceb8cc60114e67f58f53c06c314742eb1bc47489f
6
+ metadata.gz: bed2128b2c832f60cb4e66513ed33e39a79e3ebb22d840b4b7da8e6d0365d147dc7ba116806143e8b1181f2eb93528c16b919b7e16838f14a057cf5fc067584d
7
+ data.tar.gz: dcb13662ecdd823d296c1070bb1cb3f1c82a03e3d684176ad298879497fa491046fa50db46ee919da3331c7a3b2e9c154757860ad97dcbfc41eb937b26b50c1e
data/changelog.md CHANGED
@@ -1,3 +1,7 @@
1
+ ### 2.1.12
2
+ - Add vendor support
3
+ - Close opened files
4
+
1
5
  ### 2.1.11
2
6
  - Update runtime
3
7
 
data/lib/samanage.rb CHANGED
@@ -23,6 +23,7 @@ require 'samanage/api/solutions'
23
23
  require 'samanage/api/time_tracks'
24
24
  require 'samanage/api/users'
25
25
  require 'samanage/api/utils'
26
+ require 'samanage/api/vendors'
26
27
  require 'samanage/error'
27
28
  require 'samanage/language'
28
29
  require 'samanage/url_builder'
data/lib/samanage/api.rb CHANGED
@@ -6,6 +6,7 @@ module Samanage
6
6
  attr_accessor :datacenter, :content_type, :base_url, :token, :custom_forms, :authorized, :admins, :max_retries
7
7
  MAX_RETRIES = 3
8
8
  PATHS = {
9
+ attachment: 'attachments.json',
9
10
  category: 'categories.json',
10
11
  change: 'changes.json',
11
12
  contract: 'contracts.json',
@@ -22,6 +23,7 @@ module Samanage
22
23
  site: 'sites.json',
23
24
  solution: 'solutions.json',
24
25
  user: 'users.json',
26
+ vendor: 'vendors.json',
25
27
  }
26
28
  # Development mode forces authorization & pre-populates admins and custom forms / fields
27
29
  # datacenter should equal 'eu' or blank
@@ -23,19 +23,21 @@ module Samanage
23
23
  puts "Cannot find filepath: '#{filepath.inspect}'"
24
24
  return
25
25
  end
26
- self.execute(
26
+ req = self.execute(
27
27
  path: 'attachments.json',
28
28
  http_method: 'post',
29
29
  payload: {
30
30
  'file[attachable_type]' => attachable_type,
31
31
  'file[attachable_id]' => attachable_id,
32
- 'file[attachment]' => File.open(filepath, 'r')
32
+ 'file[attachment]' => file = File.open(filepath, 'r')
33
33
  },
34
34
  headers: {
35
35
  'Content-Type' => 'multipart/form-data',
36
36
  'X-Samanage-Authorization' => 'Bearer ' + self.token
37
37
  }
38
38
  )
39
+ file.close
40
+ req
39
41
  end
40
42
 
41
43
 
@@ -0,0 +1,41 @@
1
+ module Samanage
2
+ class Api
3
+ def get_vendors(path: PATHS[:vendor], options: {})
4
+ params = self.set_params(options: options)
5
+ path = 'vendors.json?' + params
6
+ self.execute(path: path)
7
+ end
8
+
9
+ def collect_vendors(options: {})
10
+ vendors = Array.new
11
+ total_pages = self.get_vendors(options: options)[:total_pages]
12
+ 1.upto(total_pages) do |page|
13
+ options[:page] = page
14
+ params = self.set_params(options: options)
15
+ puts "Collecting vendors page: #{page}/#{total_pages}" if options[:verbose]
16
+ path = "vendors.json?" + params
17
+ self.execute(http_method: 'get', path: path)[:data].each do |vendor|
18
+ if block_given?
19
+ yield vendor
20
+ end
21
+ vendors << vendor
22
+ end
23
+ end
24
+ vendors
25
+ end
26
+
27
+ def create_vendor(payload: , options: {})
28
+ self.execute(path: PATHS[:vendor], http_method: 'post', payload: payload)
29
+ end
30
+
31
+ def update_vendor(id: ,payload: , options: {})
32
+ self.execute(path: "vendors/#{id}.json", http_method: 'put', payload: payload)
33
+ end
34
+
35
+ def delete_vendor(id: )
36
+ self.execute(path: "vendors/#{id}.json", http_method: 'delete')
37
+ end
38
+
39
+ alias_method :vendors, :collect_vendors
40
+ end
41
+ end
@@ -1,3 +1,3 @@
1
1
  module Samanage
2
- VERSION = '2.1.11'
2
+ VERSION = '2.1.12'
3
3
  end
@@ -0,0 +1,47 @@
1
+ require 'samanage'
2
+ require 'faker'
3
+ describe Samanage::Api do
4
+ context 'vendor' do
5
+ before(:all) do
6
+ TOKEN ||= ENV['SAMANAGE_TEST_API_TOKEN']
7
+ @samanage = Samanage::Api.new(token: TOKEN)
8
+ @vendors = @samanage.vendors
9
+ end
10
+ it 'get_users: it returns API call of users' do
11
+ api_call = @samanage.get_vendors
12
+ expect(api_call).to be_a(Hash)
13
+ expect(api_call[:total_count]).to be_an(Integer)
14
+ expect(api_call).to have_key(:response)
15
+ expect(api_call).to have_key(:code)
16
+ end
17
+ it 'collects all vendors' do
18
+ vendors = @vendors
19
+ vendor_count = @samanage.get_vendors[:total_count]
20
+ expect(vendors).to be_an(Array)
21
+ expect(vendors.size).to eq(vendor_count)
22
+ end
23
+ it 'creates a vendor' do
24
+ vendor_name = Faker::Music.album
25
+ payload = {
26
+ vendor: {
27
+ name: vendor_name,
28
+ vendor_type: {name: 'SaaS Vendor'}
29
+ }
30
+ }
31
+ vendor_create = @samanage.create_vendor(payload: payload)
32
+
33
+ expect(vendor_create[:data]['id']).to be_an(Integer)
34
+ expect(vendor_create[:data]['name']).to eq(vendor_name)
35
+ expect(vendor_create[:code]).to eq(200)
36
+ end
37
+ it 'updates a valid vendor' do
38
+ sample_vendor_id = @vendors.sample['id']
39
+ new_name = Faker::Movie.quote
40
+ payload = {vendor: {name: new_name}}
41
+ vendor_update = @samanage.update_vendor(id: sample_vendor_id, payload: payload)
42
+
43
+ expect(new_name).to eq(vendor_update.dig(:data,'name'))
44
+ expect(vendor_update[:code]).to eq(200)
45
+ end
46
+ end
47
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: samanage
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.11
4
+ version: 2.1.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Walls
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-16 00:00:00.000000000 Z
11
+ date: 2019-04-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -74,6 +74,7 @@ files:
74
74
  - lib/samanage/api/time_tracks.rb
75
75
  - lib/samanage/api/users.rb
76
76
  - lib/samanage/api/utils.rb
77
+ - lib/samanage/api/vendors.rb
77
78
  - lib/samanage/error.rb
78
79
  - lib/samanage/language.rb
79
80
  - lib/samanage/url_builder.rb
@@ -101,6 +102,7 @@ files:
101
102
  - spec/api/samanage_time_tracks_spec.rb
102
103
  - spec/api/samanage_user_spec.rb
103
104
  - spec/api/samanage_util_spec.rb
105
+ - spec/api/samanage_vendors_spec.rb
104
106
  - spec/samanage_api_spec.rb
105
107
  - spec/samanage_category_spec.rb
106
108
  - spec/samanage_language_spec.rb