Skip to content

Commit caa5df2

Browse files
committed
Add Message#private? and #stream?
1 parent 81bbfca commit caa5df2

File tree

2 files changed

+51
-0
lines changed

2 files changed

+51
-0
lines changed

lib/wonder_llama/message.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
module WonderLlama
22
class Message
3+
PRIVATE_TYPE = 'private'.freeze
4+
STREAM_TYPE = 'stream'.freeze
5+
36
attr_reader :client, :params
47

58
def initialize(client:, params:)
@@ -19,6 +22,14 @@ def id
1922
self[:id]
2023
end
2124

25+
def private?
26+
type == PRIVATE_TYPE
27+
end
28+
29+
def stream?
30+
type == STREAM_TYPE
31+
end
32+
2233
def to
2334
self[:to]
2435
end

spec/message_spec.rb

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,18 @@
1717
}
1818
end
1919

20+
describe 'PRIVATE_TYPE' do
21+
subject { described_class::PRIVATE_TYPE }
22+
it { is_expected.to eq('private') }
23+
it { is_expected.to be_frozen }
24+
end
25+
26+
describe 'STREAM_TYPE' do
27+
subject { described_class::STREAM_TYPE }
28+
it { is_expected.to eq('stream') }
29+
it { is_expected.to be_frozen }
30+
end
31+
2032
describe '#[]' do
2133
subject { message[:foo] }
2234
it { is_expected.to eq('bar') }
@@ -42,6 +54,34 @@
4254
it { is_expected.to eq(params.transform_keys(&:to_sym)) }
4355
end
4456

57+
describe '#private?' do
58+
subject { message.private? }
59+
60+
context 'with a private message' do
61+
before { params['type'] = described_class::PRIVATE_TYPE }
62+
it { is_expected.to eq(true) }
63+
end
64+
65+
context 'with a stream message' do
66+
before { params['type'] = described_class::STREAM_TYPE }
67+
it { is_expected.to eq(false) }
68+
end
69+
end
70+
71+
describe '#stream?' do
72+
subject { message.stream? }
73+
74+
context 'with a stream message' do
75+
before { params['type'] = described_class::STREAM_TYPE }
76+
it { is_expected.to eq(true) }
77+
end
78+
79+
context 'with a private message' do
80+
before { params['type'] = described_class::PRIVATE_TYPE }
81+
it { is_expected.to eq(false) }
82+
end
83+
end
84+
4585
describe '#to' do
4686
subject { message.to }
4787
it { is_expected.to eq('social') }

0 commit comments

Comments
 (0)