3 namespace Drupal\Tests\video_embed_field\Unit;
5 use Drupal\Tests\UnitTestCase;
8 * Tests the provider manager is working.
10 * @group video_embed_field
12 class ProviderManagerTest extends UnitTestCase {
15 * Mock providers to use for the test.
19 protected $mockProviders = [
22 'title' => 'Provider A',
26 'title' => 'Provider B',
30 'title' => 'Provider C',
35 * Test URL parsing works as expected.
37 public function testOptionsList() {
38 $options = $this->getManagerMock()->getProvidersOptionList();
39 $this->assertEquals($options, [
40 'provider_a' => 'Provider A',
41 'provider_b' => 'Provider B',
42 'provider_c' => 'Provider C',
47 * Test filtering the definition list from user input via checkboxes.
49 * @dataProvider optionsWithExpectedProviders
51 public function testDefinitionListFromOptionsList($user_input, $expected_providers) {
52 $this->assertEquals($expected_providers, $this->getManagerMock()
53 ->loadDefinitionsFromOptionList($user_input));
57 * A data provider for user input with expected filtered providers.
60 * An array of test cases.
62 public function optionsWithExpectedProviders() {
64 'Empty input: all providers' => [
68 'Empty checkbox input: all providers' => [
79 'provider_b' => 'provider_b',
80 'provider_c' => 'provider_c',
83 'provider_b' => $this->mockProviders['provider_b'],
84 'provider_c' => $this->mockProviders['provider_c'],
89 'provider_a' => 'provider_a',
94 'provider_a' => $this->mockProviders['provider_a'],
101 * Get a mock provider manager.
103 protected function getManagerMock() {
104 $definitions = $this->mockProviders;
105 $manager = $this->getMockBuilder('Drupal\video_embed_field\ProviderManager')
106 ->disableOriginalConstructor()
107 ->setMethods(['getDefinitions', 'getDefinition', 'createInstance'])
110 ->method('getDefinitions')
111 ->willReturn($definitions);
113 ->method('getDefinition')
114 ->willReturnCallback(function ($value) use ($definitions) {
115 return $definitions[$value];
118 ->method('createInstance')
119 ->willReturnCallback(function ($name) {
120 return (object) ['id' => $name];