Skip to content

Commit a677fda

Browse files
committed
Add test cases
1 parent fd9928b commit a677fda

File tree

2 files changed

+163
-0
lines changed

2 files changed

+163
-0
lines changed

spec/line/bot/client_audience_spec.rb

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
require 'spec_helper'
2+
require 'json'
3+
require_relative 'mock_http_client'
4+
5+
describe Line::Bot::Client do
6+
def generate_client
7+
Line::Bot::Client.new do |config|
8+
config.channel_id = '1234567'
9+
config.channel_token = 'channelToken'
10+
config.channel_secret = 'channelSecret'
11+
config.httpclient = MockHTTPClient.new
12+
end
13+
end
14+
15+
it 'execute create_user_id_audience' do
16+
payload = {
17+
description: 'create_user_id_audience 1',
18+
audiences: [{id: 'u123abc'}]
19+
}
20+
21+
response = generate_client.create_user_id_audience(payload)
22+
23+
expect(response).to eq(
24+
method: :post,
25+
url: 'https://api.line.me/v2/bot/audienceGroup/upload',
26+
payload: payload.to_json
27+
)
28+
end
29+
30+
it 'execute update_user_id_audience' do
31+
payload = {
32+
audienceGroupId: 123,
33+
description: 'audience 1',
34+
audiences: [{id: 'u123abc'}]
35+
}
36+
37+
response = generate_client.update_user_id_audience(payload)
38+
39+
expect(response).to eq(
40+
method: :put,
41+
url: 'https://api.line.me/v2/bot/audienceGroup/upload',
42+
payload: payload.to_json
43+
)
44+
end
45+
46+
it 'execute create_click_audience' do
47+
payload = {
48+
description: 'audience 2',
49+
requestId: 'a523d8b2-4728-4ac5-ad4f-b176afd43267'
50+
}
51+
52+
response = generate_client.create_click_audience(payload)
53+
54+
expect(response).to eq(
55+
method: :post,
56+
url: 'https://api.line.me/v2/bot/audienceGroup/click',
57+
payload: payload.to_json
58+
)
59+
end
60+
61+
it 'execute create_impression_audience' do
62+
payload = {
63+
description: 'audience 3',
64+
requestId: 'a523d8b2-4728-4ac5-ad4f-b176afd43267'
65+
}
66+
67+
response = generate_client.create_impression_audience(payload)
68+
69+
expect(response).to eq(
70+
method: :post,
71+
url: 'https://api.line.me/v2/bot/audienceGroup/imp',
72+
payload: payload.to_json
73+
)
74+
end
75+
76+
it 'execute rename_audience' do
77+
response = generate_client.rename_audience(123, 'audience 10')
78+
79+
expect(response).to eq(
80+
method: :put,
81+
url: 'https://api.line.me/v2/bot/audienceGroup/123/updateDescription',
82+
payload: {description: 'audience 10'}.to_json
83+
)
84+
end
85+
86+
it 'execute delete_audience' do
87+
response = generate_client.delete_audience(123)
88+
89+
expect(response).to eq(
90+
method: :delete,
91+
url: 'https://api.line.me/v2/bot/audienceGroup/123',
92+
payload: nil
93+
)
94+
end
95+
96+
it 'execute get_audience' do
97+
response = generate_client.get_audience(123)
98+
99+
expect(response).to eq(
100+
method: :get,
101+
url: 'https://api.line.me/v2/bot/audienceGroup/123',
102+
payload: nil
103+
)
104+
end
105+
106+
it 'execute get_audiences' do
107+
params = {page: 2, status: 'READY'}
108+
response = generate_client.get_audiences(params)
109+
110+
expect(response).to eq(
111+
method: :get,
112+
url: 'https://api.line.me/v2/bot/audienceGroup/list?page=2&status=READY',
113+
payload: nil
114+
)
115+
end
116+
117+
it 'execute get_audience_authority_level' do
118+
response = generate_client.get_audience_authority_level
119+
120+
expect(response).to eq(
121+
method: :get,
122+
url: 'https://api.line.me/v2/bot/audienceGroup/authorityLevel',
123+
payload: nil
124+
)
125+
end
126+
127+
it 'execute update_audience_authority_level' do
128+
response = generate_client.update_audience_authority_level('PRIVATE')
129+
130+
expect(response).to eq(
131+
method: :put,
132+
url: 'https://api.line.me/v2/bot/audienceGroup/authorityLevel',
133+
payload: {authorityLevel: 'PRIVATE'}.to_json
134+
)
135+
end
136+
end

spec/line/bot/mock_http_client.rb

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
class MockHTTPClient
2+
def get(url, _header = {})
3+
build_mock_response(:get, url, nil)
4+
end
5+
6+
def post(url, payload, _header = {})
7+
build_mock_response(:post, url, payload)
8+
end
9+
10+
def put(url, payload, _header = {})
11+
build_mock_response(:put, url, payload)
12+
end
13+
14+
def delete(url, _header = {})
15+
build_mock_response(:delete, url, nil)
16+
end
17+
18+
private
19+
20+
def build_mock_response(method, url, payload)
21+
{
22+
method: method,
23+
url: url,
24+
payload: payload
25+
}
26+
end
27+
end

0 commit comments

Comments
 (0)