tsubaiso-sdk 1.2.1 → 1.2.5
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 +5 -5
- data/lib/tsubaiso_api.rb +67 -0
- data/test/test_tsubaiso_api.rb +105 -0
- data/test/test_tsubaiso_sdk.rb +2 -2
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 7692d60351cf486110092b0504852ade90ab4c232a945033989859b3086733f6
|
4
|
+
data.tar.gz: d1a24ea0e75784def364657a318f67b7d1994ba1ef90cc3e14537090f552e90f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c7aada144d360b894e23fc6f65aee45f19b56e5abbc8d4a9a652bcec5a052d91d62c7f96b1f0c928e431350e2a08e339597b89a06c760eb808b51b5746fbae80
|
7
|
+
data.tar.gz: e7c8d1a4964791d2c013fb8d72a2f9570db1d7955cd19fc717e46bb0bb5196fed886e3ccbe2f89b419cefc34543cc23d43e29e534bbd5e65ff55c76bd4261dd3
|
data/lib/tsubaiso_api.rb
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
# ..
|
2
|
+
class TsubaisoAPI
|
3
|
+
require "net/http"
|
4
|
+
require "json"
|
5
|
+
|
6
|
+
def initialize(options = {})
|
7
|
+
@base_url = options[:base_url] || 'https://tsubaiso.net'
|
8
|
+
@access_token = options[:access_token]
|
9
|
+
end
|
10
|
+
|
11
|
+
def list(resource, params = {})
|
12
|
+
api_request(url_parse(resource + '/list'), "GET", params)
|
13
|
+
end
|
14
|
+
|
15
|
+
def show(resource, params = {})
|
16
|
+
api_request(url_parse(resource + "/show/#{params[:id]}"), "GET", params)
|
17
|
+
end
|
18
|
+
|
19
|
+
def create(resource, params = {})
|
20
|
+
api_request(url_parse(resource + '/create'), "POST", params)
|
21
|
+
end
|
22
|
+
|
23
|
+
def update(resource, params = {})
|
24
|
+
api_request(url_parse(resource + '/update'), "POST", params)
|
25
|
+
end
|
26
|
+
|
27
|
+
def destroy(resource, params = {})
|
28
|
+
api_request(url_parse(resource + '/destroy'), "POST", params)
|
29
|
+
end
|
30
|
+
|
31
|
+
def get(url, params = {})
|
32
|
+
api_request(url_parse(url), "GET", params)
|
33
|
+
end
|
34
|
+
|
35
|
+
def post(url, params = {})
|
36
|
+
api_request(url_parse(url), "POST", params)
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def api_request(uri, http_verb, params)
|
42
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
43
|
+
initheader = {'Content-Type' => 'application/json', "Accept" => "application/json"}
|
44
|
+
http.use_ssl = true if @base_url =~ /^https/
|
45
|
+
if http_verb == "GET"
|
46
|
+
request = Net::HTTP::Get.new(uri.path, initheader)
|
47
|
+
else
|
48
|
+
request = Net::HTTP::Post.new(uri.path, initheader)
|
49
|
+
end
|
50
|
+
request["Access-Token"] = @access_token
|
51
|
+
request.body = params.to_json
|
52
|
+
response = http.request(request)
|
53
|
+
if response.body
|
54
|
+
begin
|
55
|
+
{ status: response.code, json: JSON.parse(response.body) }
|
56
|
+
rescue
|
57
|
+
response.body
|
58
|
+
end
|
59
|
+
else
|
60
|
+
{ status: response.code, json: {}.to_json }
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def url_parse(end_point)
|
65
|
+
URI.parse(@base_url + end_point)
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'minitest/autorun'
|
3
|
+
require 'time'
|
4
|
+
require './lib/tsubaiso_api'
|
5
|
+
|
6
|
+
class TsubaisoAPITest < Minitest::Test
|
7
|
+
|
8
|
+
def setup
|
9
|
+
@api = TsubaisoAPI.new({ base_url: ENV["SDK_BASE_URL"], access_token: ENV["SDK_ACCESS_TOKEN"] })
|
10
|
+
@customer_1000 = { name: "テスト株式会社", name_kana: "テストカブシキガイシャ", code: "10000", tax_type_for_remittance_charge: "3", used_in_ar: 1, used_in_ap: 1, is_valid: 1 }
|
11
|
+
|
12
|
+
@sale_201608 = { price_including_tax: 10800, realization_timestamp: "2016-08-01", customer_master_code: "101", dept_code: "SETSURITSU", reason_master_code: "SALES", dc: 'd', memo: "irfan test", tax_code: 1007, scheduled_memo: "This is a scheduled memo.", scheduled_receive_timestamp: "2016-09-25", data_partner: { link_url: "www.example.com/1", id_code: "1"} }
|
13
|
+
|
14
|
+
@sale_201702 = { price_including_tax: 10800, realization_timestamp: "2017-02-28", customer_master_code: "105", reason_master_code: "SALES", dc: 'd', memo: "", tax_code: 18, scheduled_memo: "This is a scheduled memo.", scheduled_receive_timestamp: "2017-03-25", data_partner: { link_url: "www.example.com/8", id_code: "8"} }
|
15
|
+
|
16
|
+
@reimbursement_1 = { applicant: "Matsuno", application_term: "2016-03-01", staff_code: "EP2000", memo: "aaaaaaaa" }
|
17
|
+
@reimbursement_tx_1 = { transaction_timestamp: "2016-03-01", price_value: 10000, dc:"c", reason_code:"SUPPLIES", brief:"everyting going well", memo:"easy", data_partner: { link_url: "www.example.com/5", id_code: "5"} }
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_list
|
21
|
+
cm = @api.create('customer_masters', @customer_1000)
|
22
|
+
assert_equal 200, cm[:status].to_i
|
23
|
+
assert @customer_1000[:code], cm[:json]['code']
|
24
|
+
|
25
|
+
list_customers = @api.list('customer_masters')
|
26
|
+
assert_equal 200, list_customers[:status].to_i
|
27
|
+
|
28
|
+
assert list_customers[:json]&.any? { |x| x['code'] == @customer_1000[:code] }
|
29
|
+
ensure
|
30
|
+
@api.destroy('customer_masters', id: cm[:json]['id']) if cm[:json]['id']
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_show
|
34
|
+
ar = @api.create('ar_receipts', @sale_201608)
|
35
|
+
assert 200, ar[:status].to_i
|
36
|
+
assert @sale_201608[:customer_master_code], ar[:json]["customer_master_code"]
|
37
|
+
|
38
|
+
show_ar = @api.show('ar_receipts', id: ar[:json]['id'])
|
39
|
+
assert successful?(show_ar[:status])
|
40
|
+
assert_equal show_ar[:json], ar[:json]
|
41
|
+
ensure
|
42
|
+
@api.destroy('ar_receipts', id: ar[:json]['id']) if ar[:json]['id']
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_create_and_destroy
|
46
|
+
ar = @api.create('ar_receipts', @sale_201608)
|
47
|
+
assert successful?(ar[:status])
|
48
|
+
assert @sale_201608[:customer_master_code], ar[:json]['customer_master_code']
|
49
|
+
|
50
|
+
cm = @api.create('customer_masters', @customer_1000)
|
51
|
+
assert successful?(cm[:status])
|
52
|
+
assert @customer_1000[:code], cm[:json]['code']
|
53
|
+
|
54
|
+
reim = @api.create('reimbursements', @reimbursement_1)
|
55
|
+
assert successful?(reim[:status])
|
56
|
+
assert @reimbursement_1[:staff_code], reim[:json]['staff_code']
|
57
|
+
|
58
|
+
reim_tx = @api.create('reimbursement_transactions', @reimbursement_tx_1)
|
59
|
+
assert successful?(reim[:status])
|
60
|
+
assert @reimbursement_tx_1[:reason_code], reim_tx[:json]['reason_code']
|
61
|
+
ensure
|
62
|
+
@api.destroy('ar_receipts', id: ar[:json]['id']) if ar[:json]['id']
|
63
|
+
@api.destroy('customer_masters', id: cm[:json]['id']) if cm[:json]['id']
|
64
|
+
@api.destroy('reimbursements', id: reim[:json]['id']) if reim[:json]['id']
|
65
|
+
@api.destroy('reimbursement_transactions', id: reim_tx[:json]['id']) if reim_tx[:json]['id']
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_get_and_post
|
69
|
+
time = Time.mktime(@sale_201702[:realization_timestamp])
|
70
|
+
balance_before = @api.get('ar_receipts/balance', { year: time.year, month: time.month })
|
71
|
+
assert successful?(balance_before[:status])
|
72
|
+
assert balance_before[:json].count > 0
|
73
|
+
|
74
|
+
ar1 = @api.post('ar_receipts/create', @sale_201702)
|
75
|
+
assert successful?(ar1[:status])
|
76
|
+
assert_equal @sale_201702[:scheduled_memo], ar1[:json]['scheduled_memo']
|
77
|
+
|
78
|
+
cm = @api.post('customer_masters/create', @customer_1000)
|
79
|
+
assert successful?(cm[:status])
|
80
|
+
assert_equal @customer_1000[:code], cm[:json]['code']
|
81
|
+
|
82
|
+
balance_after = @api.get('ar_receipts/balance', { year: time.year, month: time.month })
|
83
|
+
assert successful?(balance_after[:status])
|
84
|
+
assert balance_after[:json].count > 0
|
85
|
+
ensure
|
86
|
+
@api.destroy('ar_receipts', id: ar1[:json]['id']) if ar1[:json]['id']
|
87
|
+
@api.destroy('customer_masters', id: cm[:json]['id']) if cm[:json]['id']
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_update
|
91
|
+
cm = @api.create('customer_masters', @customer_1000)
|
92
|
+
cm_updated = @api.update('customer_masters', { id: cm[:json]['id'], name: 'TEST_NEW_UPDATED' })
|
93
|
+
assert successful?(cm_updated[:status])
|
94
|
+
assert cm_updated[:json]['name'] == 'TEST_NEW_UPDATED'
|
95
|
+
assert cm_updated[:json]['id'] == cm[:json]['id']
|
96
|
+
ensure
|
97
|
+
@api.destroy('customer_masters', id: cm[:json]['id']) if cm[:json]['id']
|
98
|
+
end
|
99
|
+
|
100
|
+
private
|
101
|
+
|
102
|
+
def successful?(status)
|
103
|
+
status.to_i == 200
|
104
|
+
end
|
105
|
+
end
|
data/test/test_tsubaiso_sdk.rb
CHANGED
@@ -27,8 +27,8 @@ class TsubaisoSDKTest < Minitest::Test
|
|
27
27
|
credit: {account_code: 135, price_including_tax: 1000, tax_type: 1, sales_tax: 100} ], data_partner: { link_url: "www.example.com/7", id_code: "7"} }
|
28
28
|
@dept_1= {sort_no: 12345678, code: 'test_code', name: 'テスト部門', name_abbr: 'テストブモン', color: '#ffffff', memo: 'テストメモ', start_date: '2016-01-01', finish_date: '2016-01-02'}
|
29
29
|
@tag_1 = {code: 'test_code', name: 'テストタグ', sort_no: 10000, tag_group_code: "DEFAULT", start_ymd: '2016-01-01', finish_ymd: '2016-12-31'}
|
30
|
-
@journal_distribution_1 = { title: 'title', start_date: "
|
31
|
-
criteria: "dept", target_timestamp: "2017-02-01", distribution_conditions: { "SETSURITSU" => "1", "
|
30
|
+
@journal_distribution_1 = { title: 'title', start_date: "2012-07-01", finish_date: "2012-07-31", account_codes: ["135~999","604"], dept_code: "SETSURITSU", memo: "",
|
31
|
+
criteria: "dept", target_timestamp: "2017-02-01", distribution_conditions: { "SETSURITSU" => "1", "COMMON" => "1" } }
|
32
32
|
end
|
33
33
|
|
34
34
|
def test_failed_request
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tsubaiso-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tsubaiso, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-10-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -58,8 +58,10 @@ extra_rdoc_files: []
|
|
58
58
|
files:
|
59
59
|
- README.md
|
60
60
|
- Rakefile
|
61
|
+
- lib/tsubaiso_api.rb
|
61
62
|
- lib/tsubaiso_sdk.rb
|
62
63
|
- sample.rb
|
64
|
+
- test/test_tsubaiso_api.rb
|
63
65
|
- test/test_tsubaiso_sdk.rb
|
64
66
|
homepage: https://github.com/tsubaiso/tsubaiso-sdk-ruby
|
65
67
|
licenses:
|
@@ -81,7 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
81
83
|
version: '0'
|
82
84
|
requirements: []
|
83
85
|
rubyforge_project:
|
84
|
-
rubygems_version: 2.6
|
86
|
+
rubygems_version: 2.7.6
|
85
87
|
signing_key:
|
86
88
|
specification_version: 4
|
87
89
|
summary: SDK for the Tsubaiso API
|