Skip to content

Commit fc4c63b

Browse files
committed
Add new helper methods to get individual handlers / packaged bots.
1 parent cd6475d commit fc4c63b

File tree

12 files changed

+85
-61
lines changed

12 files changed

+85
-61
lines changed

src/DataTransferObjects/PackagedBotInstallDTO.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class PackagedBotInstallDTO implements Arrayable
2525
*/
2626
public function __construct(string $handler, array $data)
2727
{
28-
$this->handler = MessengerBots::getHandlers($handler);
28+
$this->handler = MessengerBots::getHandler($handler);
2929
$this->data = $this->formatData($data);
3030
}
3131

src/Facades/MessengerBots.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
* @method static array getHandlerClasses()
1414
* @method static array getUniqueHandlerClasses()
1515
* @method static \RTippin\Messenger\DataTransferObjects\BotActionHandlerDTO|\Illuminate\Support\Collection getHandlers(?string $handlerOrAlias = null)
16+
* @method static \RTippin\Messenger\DataTransferObjects\BotActionHandlerDTO getHandler(string $handlerOrAlias)
1617
* @method static \Illuminate\Support\Collection getAuthorizedHandlers()
1718
* @method static array getHandlerAliases()
1819
* @method static string|null findHandler(string $handlerOrAlias)
@@ -23,6 +24,7 @@
2324
* @method static void registerPackagedBots(array $packagedBots, bool $overwrite = false)
2425
* @method static array getPackagedBotClasses()
2526
* @method static \RTippin\Messenger\DataTransferObjects\PackagedBotDTO|\Illuminate\Support\Collection getPackagedBots(?string $packageOrAlias = null)
27+
* @method static \RTippin\Messenger\DataTransferObjects\PackagedBotDTO getPackagedBot(string $packageOrAlias = null)
2628
* @method static \Illuminate\Support\Collection getAuthorizedPackagedBots()
2729
* @method static array getPackagedBotAliases()
2830
* @method static string|null findPackagedBot(string $packageOrAlias)

src/Http/Controllers/Actions/InstallBotPackage.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public function __invoke(InstallBotRequest $request, Thread $thread): BotResourc
6262
$thread,
6363
]);
6464

65-
$package = $this->bots->getPackagedBots(
65+
$package = $this->bots->getPackagedBot(
6666
$request->validated()['alias']
6767
);
6868

src/MessengerBots.php

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,17 @@ public function getHandlers(?string $handlerOrAlias = null)
148148
);
149149
}
150150

151+
/**
152+
* Get an individual handler.
153+
*
154+
* @param string|null $handlerOrAlias
155+
* @return BotActionHandlerDTO|null
156+
*/
157+
public function getHandler(string $handlerOrAlias): ?BotActionHandlerDTO
158+
{
159+
return $this->getHandlers($handlerOrAlias);
160+
}
161+
151162
/**
152163
* Returns the handlers the end user is authorized to view/add.
153164
*
@@ -307,7 +318,7 @@ public function getPackagedBotClasses(): array
307318
* Get a collection of packaged bots, or an individual packaged bot.
308319
*
309320
* @param string|null $packageOrAlias
310-
* @return PackagedBotDTO|Collection|null
321+
* @return PackagedBotDTO|Collection<PackagedBotDTO>|null
311322
*/
312323
public function getPackagedBots(?string $packageOrAlias = null)
313324
{
@@ -322,6 +333,17 @@ public function getPackagedBots(?string $packageOrAlias = null)
322333
);
323334
}
324335

336+
/**
337+
* Get an individual packaged bot.
338+
*
339+
* @param string|null $packageOrAlias
340+
* @return PackagedBotDTO|null
341+
*/
342+
public function getPackagedBot(string $packageOrAlias): ?PackagedBotDTO
343+
{
344+
return $this->getPackagedBots($packageOrAlias);
345+
}
346+
325347
/**
326348
* Get all packaged bot aliases.
327349
*

src/Models/BotAction.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ public function getMatchMethod(): string
275275
*/
276276
public function getHandler(): ?BotActionHandlerDTO
277277
{
278-
return MessengerBots::getHandlers($this->handler);
278+
return MessengerBots::getHandler($this->handler);
279279
}
280280

281281
/**

src/Services/BotHandlerResolverService.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public function resolve(array $data, ?string $handlerOrAlias = null): ResolvedBo
5959
);
6060

6161
// Set the settings the handler defined
62-
$this->handlerDTO = $this->bots->getHandlers(
62+
$this->handlerDTO = $this->bots->getHandler(
6363
get_class($this->handler)
6464
);
6565

src/Services/ImageRenderService.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ public function renderPackagedBotAvatar(string $alias, string $size)
235235
return $this->renderDefaultImage('bot');
236236
}
237237

238-
$package = $this->bots->getPackagedBots($alias);
238+
$package = $this->bots->getPackagedBot($alias);
239239

240240
if (! $package->shouldInstallAvatar) {
241241
return $this->renderDefaultImage('bot');

tests/Actions/InstallPackagedBotTest.php

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public function it_throws_exception_if_bots_disabled()
3535
Messenger::setBots(false);
3636
MessengerBots::registerPackagedBots([FunBotPackage::class]);
3737
$thread = $this->createGroupThread($this->tippin);
38-
$package = MessengerBots::getPackagedBots(FunBotPackage::class);
38+
$package = MessengerBots::getPackagedBot(FunBotPackage::class);
3939

4040
$this->expectException(FeatureDisabledException::class);
4141
$this->expectExceptionMessage('Bots are currently disabled.');
@@ -48,7 +48,7 @@ public function it_installs_bot()
4848
{
4949
MessengerBots::registerPackagedBots([FunBotPackage::class]);
5050
$thread = $this->createGroupThread($this->tippin);
51-
$package = MessengerBots::getPackagedBots(FunBotPackage::class);
51+
$package = MessengerBots::getPackagedBot(FunBotPackage::class);
5252

5353
app(InstallPackagedBot::class)->execute($thread, $package);
5454

@@ -69,7 +69,7 @@ public function it_installs_bot_using_defined_parameters()
6969
SillyBotPackage::$enabled = false;
7070
MessengerBots::registerPackagedBots([SillyBotPackage::class]);
7171
$thread = $this->createGroupThread($this->tippin);
72-
$package = MessengerBots::getPackagedBots(SillyBotPackage::class);
72+
$package = MessengerBots::getPackagedBot(SillyBotPackage::class);
7373

7474
app(InstallPackagedBot::class)->execute($thread, $package);
7575

@@ -88,7 +88,7 @@ public function it_installs_actions()
8888
SillyBotHandler::$authorized = true;
8989
MessengerBots::registerPackagedBots([FunBotPackage::class]);
9090
$thread = $this->createGroupThread($this->tippin);
91-
$package = MessengerBots::getPackagedBots(FunBotPackage::class);
91+
$package = MessengerBots::getPackagedBot(FunBotPackage::class);
9292

9393
app(InstallPackagedBot::class)->execute($thread, $package);
9494

@@ -110,7 +110,7 @@ public function it_ignores_unauthorized_handlers()
110110
SillyBotHandler::$authorized = false;
111111
MessengerBots::registerPackagedBots([FunBotPackage::class]);
112112
$thread = $this->createGroupThread($this->tippin);
113-
$package = MessengerBots::getPackagedBots(FunBotPackage::class);
113+
$package = MessengerBots::getPackagedBot(FunBotPackage::class);
114114

115115
app(InstallPackagedBot::class)->execute($thread, $package);
116116

@@ -126,7 +126,7 @@ public function it_installs_bot_with_no_actions()
126126
SillyBotPackage::$installs = [];
127127
MessengerBots::registerPackagedBots([SillyBotPackage::class]);
128128
$thread = $this->createGroupThread($this->tippin);
129-
$package = MessengerBots::getPackagedBots(SillyBotPackage::class);
129+
$package = MessengerBots::getPackagedBot(SillyBotPackage::class);
130130

131131
app(InstallPackagedBot::class)->execute($thread, $package);
132132

@@ -143,7 +143,7 @@ public function it_clears_bot_actions_cache()
143143
SillyBotPackage::$installs = [];
144144
MessengerBots::registerPackagedBots([SillyBotPackage::class]);
145145
$thread = $this->createGroupThread($this->tippin);
146-
$package = MessengerBots::getPackagedBots(SillyBotPackage::class);
146+
$package = MessengerBots::getPackagedBot(SillyBotPackage::class);
147147
$cache = Cache::spy();
148148

149149
app(InstallPackagedBot::class)->execute($thread, $package);
@@ -158,7 +158,7 @@ public function it_installs_bot_avatar()
158158
SillyBotPackage::$avatar = __DIR__.'/../Fixtures/404.png';
159159
MessengerBots::registerPackagedBots([SillyBotPackage::class]);
160160
$thread = $this->createGroupThread($this->tippin);
161-
$package = MessengerBots::getPackagedBots(SillyBotPackage::class);
161+
$package = MessengerBots::getPackagedBot(SillyBotPackage::class);
162162

163163
$bot = app(InstallPackagedBot::class)->execute($thread, $package)->getBot();
164164

@@ -174,7 +174,7 @@ public function it_doesnt_install_bot_avatar_if_disabled()
174174
SillyBotPackage::$avatar = __DIR__.'/../Fixtures/404.png';
175175
MessengerBots::registerPackagedBots([SillyBotPackage::class]);
176176
$thread = $this->createGroupThread($this->tippin);
177-
$package = MessengerBots::getPackagedBots(SillyBotPackage::class);
177+
$package = MessengerBots::getPackagedBot(SillyBotPackage::class);
178178

179179
$bot = app(InstallPackagedBot::class)->execute($thread, $package)->getBot();
180180

@@ -188,7 +188,7 @@ public function it_fires_installed_event()
188188
SillyBotPackage::$installs = [];
189189
MessengerBots::registerPackagedBots([SillyBotPackage::class]);
190190
$thread = $this->createGroupThread($this->tippin);
191-
$package = MessengerBots::getPackagedBots(SillyBotPackage::class);
191+
$package = MessengerBots::getPackagedBot(SillyBotPackage::class);
192192
Event::fake([
193193
PackagedBotInstalledEvent::class,
194194
]);
@@ -211,7 +211,7 @@ public function it_dispatches_subscriber_job()
211211
Bus::fake();
212212
MessengerBots::registerPackagedBots([FunBotPackage::class]);
213213
$thread = $this->createGroupThread($this->tippin);
214-
$package = MessengerBots::getPackagedBots(FunBotPackage::class);
214+
$package = MessengerBots::getPackagedBot(FunBotPackage::class);
215215

216216
app(InstallPackagedBot::class)->execute($thread, $package);
217217

@@ -225,7 +225,7 @@ public function it_runs_subscriber_job_now()
225225
Bus::fake();
226226
MessengerBots::registerPackagedBots([FunBotPackage::class]);
227227
$thread = $this->createGroupThread($this->tippin);
228-
$package = MessengerBots::getPackagedBots(FunBotPackage::class);
228+
$package = MessengerBots::getPackagedBot(FunBotPackage::class);
229229
Messenger::setSystemMessageSubscriber('queued', false);
230230

231231
app(InstallPackagedBot::class)->execute($thread, $package);
@@ -240,7 +240,7 @@ public function it_doesnt_dispatch_subscriber_job_if_disabled()
240240
Bus::fake();
241241
MessengerBots::registerPackagedBots([FunBotPackage::class]);
242242
$thread = $this->createGroupThread($this->tippin);
243-
$package = MessengerBots::getPackagedBots(FunBotPackage::class);
243+
$package = MessengerBots::getPackagedBot(FunBotPackage::class);
244244
Messenger::setSystemMessageSubscriber('enabled', false);
245245

246246
app(InstallPackagedBot::class)->execute($thread, $package);

tests/HelperTrait.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ protected function makeResolvedBotHandlerDTO(string $handler,
133133
?string $payload = null): ResolvedBotHandlerDTO
134134
{
135135
return new ResolvedBotHandlerDTO(
136-
MessengerBots::getHandlers($handler),
136+
MessengerBots::getHandler($handler),
137137
$match,
138138
$enabled,
139139
$adminOnly,

tests/Messenger/MessengerBotsTest.php

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -158,9 +158,9 @@ public function it_can_get_all_handlers_sorting_by_name()
158158
$handlers = $this->bots->getHandlers();
159159

160160
$this->assertSame(3, $handlers->count());
161-
$this->assertSame('broken_bot', $this->bots->getHandlers()[0]->alias);
162-
$this->assertSame('fun_bot', $this->bots->getHandlers()[1]->alias);
163-
$this->assertSame('silly_bot', $this->bots->getHandlers()[2]->alias);
161+
$this->assertSame('broken_bot', $handlers[0]->alias);
162+
$this->assertSame('fun_bot', $handlers[1]->alias);
163+
$this->assertSame('silly_bot', $handlers[2]->alias);
164164
}
165165

166166
/** @test */
@@ -173,8 +173,8 @@ public function it_can_get_all_packaged_bots_sorting_by_name()
173173

174174
$packages = $this->bots->getPackagedBots();
175175

176-
$this->assertSame('fun_package', $packages->first()->alias);
177-
$this->assertSame('silly_package', $packages->last()->alias);
176+
$this->assertSame('fun_package', $packages[0]->alias);
177+
$this->assertSame('silly_package', $packages[1]->alias);
178178
}
179179

180180
/** @test */
@@ -185,11 +185,11 @@ public function it_can_get_single_handler()
185185
SillyBotHandler::class,
186186
]);
187187

188-
$this->assertSame('silly_bot', $this->bots->getHandlers('silly_bot')->alias);
189-
$this->assertSame('silly_bot', $this->bots->getHandlers(SillyBotHandler::class)->alias);
190-
$this->assertSame('fun_bot', $this->bots->getHandlers('fun_bot')->alias);
191-
$this->assertSame('fun_bot', $this->bots->getHandlers(FunBotHandler::class)->alias);
192-
$this->assertNull($this->bots->getHandlers('unknown'));
188+
$this->assertSame('silly_bot', $this->bots->getHandler('silly_bot')->alias);
189+
$this->assertSame('silly_bot', $this->bots->getHandler(SillyBotHandler::class)->alias);
190+
$this->assertSame('fun_bot', $this->bots->getHandler('fun_bot')->alias);
191+
$this->assertSame('fun_bot', $this->bots->getHandler(FunBotHandler::class)->alias);
192+
$this->assertNull($this->bots->getHandler('unknown'));
193193
}
194194

195195
/** @test */
@@ -200,11 +200,11 @@ public function it_can_get_single_packaged_bot()
200200
FunBotPackage::class,
201201
]);
202202

203-
$this->assertSame('fun_package', $this->bots->getPackagedBots('fun_package')->alias);
204-
$this->assertSame('fun_package', $this->bots->getPackagedBots(FunBotPackage::class)->alias);
205-
$this->assertSame('silly_package', $this->bots->getPackagedBots('silly_package')->alias);
206-
$this->assertSame('silly_package', $this->bots->getPackagedBots(SillyBotPackage::class)->alias);
207-
$this->assertNull($this->bots->getPackagedBots('unknown'));
203+
$this->assertSame('fun_package', $this->bots->getPackagedBot('fun_package')->alias);
204+
$this->assertSame('fun_package', $this->bots->getPackagedBot(FunBotPackage::class)->alias);
205+
$this->assertSame('silly_package', $this->bots->getPackagedBot('silly_package')->alias);
206+
$this->assertSame('silly_package', $this->bots->getPackagedBot(SillyBotPackage::class)->alias);
207+
$this->assertNull($this->bots->getPackagedBot('unknown'));
208208
}
209209

210210
/** @test */

0 commit comments

Comments
 (0)