Skip to content

Commit 2decb4b

Browse files
committed
WIP - add test for ledger
1 parent a72ad15 commit 2decb4b

File tree

5 files changed

+127
-11
lines changed

5 files changed

+127
-11
lines changed

Diff for: Rakefile

+6-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,12 @@
33
require 'bundler/gem_tasks'
44
require 'minitest/test_task'
55

6-
Minitest::TestTask.create
6+
Minitest::TestTask.create(:test) do |t|
7+
t.libs << 'test'
8+
t.libs << 'lib'
9+
t.warning = false
10+
t.test_globs = ['./test/**/test_*.rb']
11+
end
712

813
require 'rubocop/rake_task'
914

Diff for: lib/blnk/ledger.rb

+3-5
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ class Ledger < OpenStruct
77

88
def self.find(id)
99
response = new.get_request(path: "/ledgers/#{id}")
10-
return response.parse unless response.status.success?
10+
return response unless response.status.success?
1111

1212
new response.parse
1313
end
1414

1515
def self.all
1616
response = new.get_request(path: '/ledgers')
17-
return response.parse unless response.status.success?
17+
return response unless response.status.success?
1818

1919
response.parse.map do |r|
2020
new r
@@ -27,9 +27,7 @@ def self.create(*)
2727

2828
def save
2929
response = post_request(path: '/ledgers', body: body_data)
30-
return response.parse unless response.status.success?
31-
32-
# self.class.new response.parse
30+
return response unless response.status.success?
3331

3432
response.parse.each_pair { |k, v| self[k] = v }
3533
self

Diff for: test/blnk/test_ledger.rb

+114
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
# frozen_string_literal: true
2+
3+
require 'test_helper'
4+
5+
def stub_find_ledger_request_with_error
6+
stub_request(:get, %r{/ledgers/(.*)})
7+
.to_return_json(body: { error: 'ledger with ID \'LEDGER_ID\' not found' }, status: 400)
8+
end
9+
10+
def ledger_response_body
11+
{
12+
ledger_id: 'ldg_f2db7af4-a445-41e3-b233-c052e4283a6b',
13+
name: 'ledger_name',
14+
created_at: '2024-06-15T08:55:03.943273Z',
15+
meta_data: {
16+
'account_id' => '9a521e1d-6f76-4260-b35f-6180a64e0331',
17+
'org_adm' => 'Lorem Ipsum dolor',
18+
'org_slug' => 'lorem-ipsum'
19+
}
20+
}
21+
end
22+
23+
def stub_find_ledger_request_with_success
24+
stub_request(:get, %r{/ledgers/(.*)})
25+
.to_return_json(body: ledger_response_body, status: 200)
26+
end
27+
28+
def stub_create_ledger_request_with_success
29+
stub_request(:post, %r{/ledgers})
30+
.to_return_json(body: ledger_response_body, status: 200)
31+
end
32+
33+
def stub_create_ledger_request_with_error
34+
stub_request(:post, %r{/ledgers})
35+
.to_return_json(body: { error: 'missing name' }, status: 400)
36+
end
37+
38+
def stub_all_ledger_request_with_error
39+
stub_request(:get, %r{/ledgers})
40+
.to_return_json(body: { error: 'internal_server_error' }, status: 500)
41+
end
42+
43+
def stub_all_ledger_request_with_success
44+
stub_request(:get, %r{/ledgers})
45+
.to_return_json(body: [ledger_response_body], status: 200)
46+
end
47+
48+
class TestLedger < Minitest::Test
49+
def test_that_ledger_not_found
50+
stub_find_ledger_request_with_error
51+
find = Blnk::Ledger.find 'LEDGER_ID'
52+
53+
assert find.status.bad_request?
54+
end
55+
56+
def test_that_ledger_find_success
57+
stub_find_ledger_request_with_success
58+
find = Blnk::Ledger.find 'LEDGER_ID'
59+
60+
assert find.is_a?(Blnk::Ledger)
61+
assert find.ledger_id.eql?(ledger_response_body[:ledger_id])
62+
end
63+
64+
def test_that_ledger_all_error
65+
stub_all_ledger_request_with_error
66+
67+
all = Blnk::Ledger.all
68+
69+
assert !all.status.success?
70+
end
71+
72+
def test_that_ledger_all_success
73+
stub_all_ledger_request_with_success
74+
75+
all = Blnk::Ledger.all
76+
77+
assert all.is_a?(Array)
78+
assert all.first.is_a?(Blnk::Ledger)
79+
assert all.first.ledger_id.eql?(ledger_response_body[:ledger_id])
80+
end
81+
82+
def test_that_ledger_create_errosr
83+
stub_create_ledger_request_with_error
84+
85+
create = Blnk::Ledger.create
86+
87+
assert create.status.bad_request?
88+
89+
create_with_new = Blnk::Ledger.new.save
90+
91+
assert create_with_new.status.bad_request?
92+
end
93+
94+
def test_that_ledger_create_success
95+
stub_create_ledger_request_with_success
96+
97+
create = Blnk::Ledger.create(name: 'ledger_name')
98+
99+
assert create.is_a?(Blnk::Ledger)
100+
assert create.ledger_id.eql?(ledger_response_body[:ledger_id])
101+
assert create.name.eql?(ledger_response_body[:name])
102+
end
103+
104+
def test_that_ledger_create_success_using_new
105+
stub_create_ledger_request_with_success
106+
107+
create_with_new = Blnk::Ledger.new name: 'ledger_name'
108+
create_with_new.save
109+
110+
assert create_with_new.is_a?(Blnk::Ledger)
111+
assert create_with_new.ledger_id.eql?(ledger_response_body[:ledger_id])
112+
assert create_with_new.name.eql?(ledger_response_body[:name])
113+
end
114+
end

Diff for: test/test_blnk.rb

-4
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,4 @@ class TestBlnk < Minitest::Test
66
def test_that_it_has_a_version_number
77
refute_nil ::Blnk::VERSION
88
end
9-
10-
def test_it_does_something_useful
11-
assert false
12-
end
139
end

Diff for: test/test_helper.rb

+4-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22

33
$LOAD_PATH.unshift File.expand_path('../lib', __dir__)
44
require 'blnk'
5-
5+
require 'webmock/minitest'
66
require 'minitest/autorun'
77
require 'minitest/reporters'
88
Minitest::Reporters.use! [Minitest::Reporters::DefaultReporter.new(color: true)]
9+
10+
Blnk.address = 'http://localhost:5001'
11+
Blnk.secret_token = 'secret_token'

0 commit comments

Comments
 (0)