drupal-london-meetup/snippets.lua
2024-11-20 13:23:17 +00:00

205 lines
3.7 KiB
Lua

require("luasnip.session.snippet_collection").clear_snippets("php")
require("luasnip.session.snippet_collection").clear_snippets("yaml")
local ls = require("luasnip")
local s = ls.snippet
local t = ls.text_node
local fmt = require("luasnip.extras.fmt").fmt
local fmta = require("luasnip.extras.fmt").fmta
ls.add_snippets("php", {
s(
"createnodes",
fmt(
[[
$this->createNode(['type' => 'talk']);
$this->createNode(['type' => 'talk']);
]],
{}
)
),
s(
"pagecontroller",
fmta(
[[
<<?php
declare(strict_types=1);
namespace Drupal\opdavies_talks\Controller;
final class TalksPageController {
public function __invoke(): array {
return [];
}
}
]],
{}
)
),
s(
"repocount",
fmt(
[[
public function __construct(private EntityTypeManagerInterface $entityTypeManager) {{
}}
public function getCount(): int {{
$talks = $this->entityTypeManager->getStorage('node')->loadByProperties();
return count($talks);
}}
]],
{}
)
),
s(
"repotestclass",
fmta(
[[
<<?php
namespace Drupal\Tests\opdavies_talks\Kernel\Repository;
use Drupal\KernelTests\Core\Entity\EntityKernelTestBase;
final class TalkNodeRepositoryTest extends EntityKernelTestBase {
protected static $modules = ['opdavies_talks'];
}
]],
{}
)
),
s(
"repotestcount",
fmt(
[[
public function test_it_returns_a_count(): void {{
$talkRepository = $this->container->get(TalkNodeRepository::class);
self::assertSame(2, $talkRepository->getCount());
}}
]],
{}
)
),
s(
"showconstructor",
fmta(
[[
public function __construct(private TalkNodeRepository $talkRepository) {
}
]],
{}
)
),
s(
"showcount",
fmt(
[[
$talkCount = 2;
return ['#markup' => $this->t('<span data-talk-count>:count talks</span>', [':count' => $talkCount])];
]],
{}
)
),
s("showrepository", t("$talkCount = $this->talkRepository->getCount();")),
s(
"test200response",
fmt(
[[
public function test_it_returns_a_200_response_code(): void {{
$this->drupalGet('/talks');
$session = $this->assertSession();
$session->statusCodeEquals(Response::HTTP_OK);
}}
]],
{}
)
),
s(
"testclass",
fmt(
[[
<?php
namespace Drupal\Tests\opdavies_talks\Functional;
use Drupal\Tests\BrowserTestBase;
class TalksPageTest extends BrowserTestBase {{
public $defaultTheme = 'stark';
}}
]],
{}
)
),
s(
"testcount",
fmt(
[[
public function test_it_displays_the_talk_count(): void {{
$this->drupalGet('/talks');
$session = $this->assertSession();
$session->responseContains('<span data-talk-count>2 talks</span>');
}}
]],
{}
)
),
s("testmodules", t("protected static $modules = ['opdavies_talks'];")),
})
ls.add_snippets("yaml", {
s(
"talkpage",
fmt(
[[
opdavies_talks.page:
path: /talks
defaults:
_controller: Drupal\opdavies_talks\Controller\TalksPageController
_title: Talks
requirements:
_permission: access content
]],
{}
)
),
s(
"talkservices",
fmt(
[[
services:
Drupal\opdavies_talks\Controller\TalksPageController:
autowire: true
Drupal\opdavies_talks\Repository\TalkNodeRepository: []
]],
{}
)
),
})