Skip to content

Commit 26068f6

Browse files
author
Alexandru Bucur
authored
Merge pull request #210 from dennisvdvliet/gh-170
Use MessageReponse mapper instead of Message when calling list endpoint
2 parents 830c52b + bbd3d90 commit 26068f6

File tree

6 files changed

+149
-13
lines changed

6 files changed

+149
-13
lines changed

.github/workflows/psalm.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ jobs:
1313
# Steps represent a sequence of tasks that will be executed as part of the job
1414
steps:
1515
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
16-
- uses: actions/checkout@v2
16+
- uses: actions/checkout@v3
1717

1818
- name: Psalm – Static Analysis for PHP
1919
uses: docker://vimeo/psalm-github-actions:4.18.1

.github/workflows/tests.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@ jobs:
1111
strategy:
1212
fail-fast: true
1313
matrix:
14-
php: [ '7.3', '7.4', '8.0', '8.1' ]
15-
stability: [ prefer-lowest, prefer-stable ]
14+
php: [ '7.4', '8.0', '8.1', '8.2' ]
15+
stability: [ prefer-stable ]
1616

1717
name: PHP ${{ matrix.php }} - ${{ matrix.stability }}
1818

1919
steps:
2020
- name: Checkout the code
21-
uses: actions/checkout@v2
21+
uses: actions/checkout@v3
2222

2323
- name: Setup PHP
2424
uses: shivammathur/setup-php@v2

src/MessageBird/Resources/Base.php

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -185,11 +185,16 @@ public function getList(?array $parameters = [])
185185
}
186186

187187
foreach ($items as $item) {
188-
/** @psalm-suppress UndefinedClass */
189-
$object = new $objectName($this->httpClient);
190-
191-
$message = $object->loadFromArray($item);
192-
$baseList->items[] = $message;
188+
if ($this->responseObject) {
189+
$responseObject = clone $this->responseObject;
190+
$baseList->items[] = $responseObject->loadFromStdclass($item);
191+
} else {
192+
/** @psalm-suppress UndefinedClass */
193+
$object = new $objectName($this->httpClient);
194+
195+
$message = $object->loadFromArray($item);
196+
$baseList->items[] = $message;
197+
}
193198
}
194199

195200
return $baseList;

tests/Integration/Contacts/ContactTest.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
use MessageBird\Objects\BaseList;
88
use MessageBird\Objects\Contact;
99
use MessageBird\Objects\Group;
10-
use MessageBird\Objects\Message;
10+
use MessageBird\Objects\MessageResponse;
11+
1112
use Tests\Integration\BaseTest;
1213

1314
class ContactTest extends BaseTest
@@ -155,7 +156,7 @@ public function testContactGetMessages(): void
155156
$messages = $this->client->contacts->getMessages("contact_id");
156157

157158
foreach ($messages->items as $message) {
158-
self::assertInstanceOf(Message::class, $message);
159+
self::assertInstanceOf(MessageResponse::class, $message);
159160
}
160161
}
161162
}

tests/Integration/Messages/MessagesTest.php

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,14 +100,28 @@ public function testFlashSmsMessage(): void
100100

101101
public function testListMessage(): void
102102
{
103-
$this->expectException(ServerException::class);
103+
$this->mockClient->expects(self::atLeastOnce())->method('performHttpRequest')->willReturn([
104+
200,
105+
'',
106+
file_get_contents(__DIR__ . '/get-list-response.json')
107+
]);
108+
104109
$this->mockClient->expects(self::once())->method('performHttpRequest')->with(
105110
"GET",
106111
'messages',
107112
['offset' => 100, 'limit' => 30],
108113
null
109114
);
110-
$this->client->messages->getList(['offset' => 100, 'limit' => 30]);
115+
116+
117+
$messageList = $this->client->messages->getList(['offset' => 100, 'limit' => 30]);
118+
119+
self::assertSame('7d8451f8', $messageList->items[0]->id);
120+
self::assertSame('https://rest.messagebird.com/messages/7d8451f8', $messageList->items[0]->href);
121+
122+
self::assertSame('7d8451f9', $messageList->items[1]->id);
123+
self::assertSame('https://rest.messagebird.com/messages/7d8451f9', $messageList->items[1]->href);
124+
111125
}
112126

113127
public function testReadMessage(): void
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
{
2+
"offset": 0,
3+
"limit": 10,
4+
"count": 10,
5+
"totalCount": 16,
6+
"links":
7+
{
8+
"first": "https://rest.messagebird.com/messages/?offset=0&limit=10&recipient=31653474496&from=2021-03-16T00%3A00%3A00%2B00%3A00",
9+
"previous": null,
10+
"next": "https://rest.messagebird.com/messages/?offset=10&limit=10&recipient=31653474496&from=2021-03-16T00%3A00%3A00%2B00%3A00",
11+
"last": "https://rest.messagebird.com/messages/?offset=10&limit=10&recipient=31653474496&from=2021-03-16T00%3A00%3A00%2B00%3A00"
12+
},
13+
"items":
14+
[
15+
{
16+
"id": "7d8451f8",
17+
"href": "https://rest.messagebird.com/messages/7d8451f8",
18+
"direction": "mt",
19+
"type": "sms",
20+
"originator": "+31612345678",
21+
"body": "Hi there",
22+
"reference": null,
23+
"validity": null,
24+
"gateway": 10,
25+
"typeDetails":
26+
{
27+
"verify": true
28+
},
29+
"datacoding": "plain",
30+
"mclass": 1,
31+
"scheduledDatetime": null,
32+
"createdDatetime": "2022-10-12T18:46:22+00:00",
33+
"recipients":
34+
{
35+
"totalCount": 1,
36+
"totalSentCount": 1,
37+
"totalDeliveredCount": 1,
38+
"totalDeliveryFailedCount": 0,
39+
"items":
40+
[
41+
{
42+
"recipient": 31612345678,
43+
"originator": null,
44+
"status": "delivered",
45+
"statusDatetime": "2022-10-12T18:46:24+00:00",
46+
"recipientCountry": "Netherlands",
47+
"recipientCountryPrefix": 31,
48+
"recipientOperator": "KPN",
49+
"messageLength": 20,
50+
"statusErrorCode": null,
51+
"statusReason": "successfully delivered",
52+
"price":
53+
{
54+
"amount": 0.076,
55+
"currency": "EUR"
56+
},
57+
"mccmnc": "20408",
58+
"mcc": "204",
59+
"mnc": "08",
60+
"messagePartCount": 1
61+
}
62+
]
63+
}
64+
},
65+
{
66+
"id": "7d8451f9",
67+
"href": "https://rest.messagebird.com/messages/7d8451f9",
68+
"direction": "mt",
69+
"type": "sms",
70+
"originator": "+31612345678",
71+
"body": "Hi there",
72+
"reference": null,
73+
"validity": null,
74+
"gateway": 10,
75+
"typeDetails":
76+
{
77+
"verify": true
78+
},
79+
"datacoding": "plain",
80+
"mclass": 1,
81+
"scheduledDatetime": null,
82+
"createdDatetime": "2022-10-12T18:46:22+00:00",
83+
"recipients":
84+
{
85+
"totalCount": 1,
86+
"totalSentCount": 1,
87+
"totalDeliveredCount": 1,
88+
"totalDeliveryFailedCount": 0,
89+
"items":
90+
[
91+
{
92+
"recipient": 31612345678,
93+
"originator": null,
94+
"status": "delivered",
95+
"statusDatetime": "2022-10-12T18:46:24+00:00",
96+
"recipientCountry": "Netherlands",
97+
"recipientCountryPrefix": 31,
98+
"recipientOperator": "KPN",
99+
"messageLength": 20,
100+
"statusErrorCode": null,
101+
"statusReason": "successfully delivered",
102+
"price":
103+
{
104+
"amount": 0.076,
105+
"currency": "EUR"
106+
},
107+
"mccmnc": "20408",
108+
"mcc": "204",
109+
"mnc": "08",
110+
"messagePartCount": 1
111+
}
112+
]
113+
}
114+
}
115+
]
116+
}

0 commit comments

Comments
 (0)