1+ describe 'Group' do
2+
3+ it 'creates' do
4+
5+ http_client = double ( MessageBird ::HttpClient )
6+ client = MessageBird ::Client . new ( '' , http_client )
7+
8+ expect ( http_client )
9+ . to receive ( :request )
10+ . with ( :post , 'groups' , { :name => 'friends' } )
11+ . and_return ( '{}' )
12+
13+ client . group_create ( 'friends' )
14+
15+ end
16+
17+ it 'deletes' do
18+
19+ http_client = double ( MessageBird ::HttpClient )
20+ client = MessageBird ::Client . new ( '' , http_client )
21+
22+ expect ( http_client )
23+ . to receive ( :request )
24+ . with ( :delete , 'groups/group-id' , { } )
25+ . and_return ( '' )
26+
27+ client . group_delete ( 'group-id' )
28+
29+ end
30+
31+ it 'lists' do
32+
33+ http_client = double ( MessageBird ::HttpClient )
34+ client = MessageBird ::Client . new ( '' , http_client )
35+
36+ expect ( http_client )
37+ . to receive ( :request )
38+ . with ( :get , 'groups?limit=0&offset=0' , { } )
39+ . and_return ( '{"offset": 0,"limit": 10,"count": 2,"totalCount": 2,"links": {"first": "https://rest.messagebird.com/groups?offset=0&limit=10","previous": null,"next": null,"last": "https://rest.messagebird.com/groups?offset=0&limit=10"},"items": [{"id": "first-id","href": "https://rest.messagebird.com/groups/first-id","name": "First","contacts": {"totalCount": 3,"href": "https://rest.messagebird.com/groups/first-id/contacts"},"createdDatetime": "2018-07-25T11:47:42+00:00","updatedDatetime": "2018-07-25T14:03:09+00:00"},{"id": "second-id","href": "https://rest.messagebird.com/groups/second-id","name": "Second","contacts": {"totalCount": 4,"href": "https://rest.messagebird.com/groups/second-id/contacts"},"createdDatetime": "2018-07-25T11:47:39+00:00","updatedDatetime": "2018-07-25T14:03:09+00:00"}]}' )
40+
41+ list = client . group_list
42+
43+ expect ( list . count ) . to eq 2
44+ expect ( list [ 0 ] . id ) . to eq 'first-id'
45+
46+ end
47+
48+ it 'reads an existing' do
49+
50+ http_client = double ( MessageBird ::HttpClient )
51+ client = MessageBird ::Client . new ( '' , http_client )
52+
53+ expect ( http_client )
54+ . to receive ( :request )
55+ . with ( :get , 'groups/group-id' , { } )
56+ . and_return ( '{"id": "group-id","href": "https://rest.messagebird.com/groups/group-id","name": "Friends","contacts": {"totalCount": 3,"href": "https://rest.messagebird.com/groups/group-id"},"createdDatetime": "2018-07-25T12:16:10+00:00","updatedDatetime": "2018-07-25T12:16:23+00:00"}' )
57+
58+ group = client . group ( 'group-id' )
59+
60+ expect ( group . id ) . to eq 'group-id'
61+ expect ( group . name ) . to eq 'Friends'
62+
63+ end
64+
65+ it 'reads the contact reference' do
66+
67+ http_client = double ( MessageBird ::HttpClient )
68+ client = MessageBird ::Client . new ( '' , http_client )
69+
70+ expect ( http_client )
71+ . to receive ( :request )
72+ . with ( :get , 'groups/group-id' , { } )
73+ . and_return ( '{"id": "group-id","href": "https://rest.messagebird.com/groups/group-id","name": "Friends","contacts": {"totalCount": 3,"href": "https://rest.messagebird.com/groups/group-id/contacts"},"createdDatetime": "2018-07-25T12:16:10+00:00","updatedDatetime": "2018-07-25T12:16:23+00:00"}' )
74+
75+ group = client . group ( 'group-id' )
76+
77+ expect ( group . contacts . href ) . to eq 'https://rest.messagebird.com/groups/group-id/contacts'
78+ expect ( group . contacts . totalCount ) . to eq 3
79+
80+ end
81+
82+ it 'updates' do
83+
84+ http_client = double ( MessageBird ::HttpClient )
85+ client = MessageBird ::Client . new ( '' , http_client )
86+
87+ expect ( http_client )
88+ . to receive ( :request )
89+ . with ( :patch , 'groups/group-id' , { :name => 'family' } )
90+ . and_return ( '{}' )
91+
92+ client . group_update ( 'group-id' , 'family' )
93+
94+ end
95+
96+ it 'adds contacts' do
97+
98+ http_client = double ( MessageBird ::HttpClient )
99+ client = MessageBird ::Client . new ( '' , http_client )
100+
101+ expect ( http_client )
102+ . to receive ( :request )
103+ . with ( :get , 'groups/group-id?_method=PUT&ids[]=first-contact-id&ids[]=second-contact-id' , { } )
104+ . and_return ( '{}' )
105+
106+ client . group_add_contacts ( 'group-id' , [ 'first-contact-id' , 'second-contact-id' ] )
107+
108+ end
109+
110+ it 'adds single contact' do
111+
112+ http_client = double ( MessageBird ::HttpClient )
113+ client = MessageBird ::Client . new ( '' , http_client )
114+
115+ expect ( http_client )
116+ . to receive ( :request )
117+ . with ( :get , 'groups/group-id?_method=PUT&ids[]=contact-id' , { } )
118+ . and_return ( '{}' )
119+
120+ client . group_add_contacts ( 'group-id' , 'contact-id' )
121+
122+ end
123+
124+ it 'removes contact' do
125+
126+ http_client = double ( MessageBird ::HttpClient )
127+ client = MessageBird ::Client . new ( '' , http_client )
128+
129+ expect ( http_client )
130+ . to receive ( :request )
131+ . with ( :delete , 'groups/group-id/contacts/contact-id' , { } )
132+ . and_return ( '{}' )
133+
134+ client . group_delete_contact ( 'group-id' , 'contact-id' )
135+
136+ end
137+
138+ end
0 commit comments