Skip to content

Commit 1de3233

Browse files
committed
IntegrationTest::testIntegration : use data provider + test refReference
1 parent 300242b commit 1de3233

File tree

13 files changed

+101
-67
lines changed

13 files changed

+101
-67
lines changed

_build/src/HtmlKernel.php

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,10 @@
22

33
namespace SymfonyDocs;
44

5+
use Doctrine\RST\References\Doc;
56
use Doctrine\RST\Directive;
67
use Doctrine\RST\Factory;
78
use Doctrine\RST\HTML\Kernel;
8-
use Highlight\Highlighter;
9-
use SymfonyDocs\CodeBlock\CodeBlockConsoleRenderer;
10-
use SymfonyDocs\CodeBlock\CodeBlockLanguageDetector;
11-
use SymfonyDocs\CodeBlock\CodeBlockRenderer;
12-
use SymfonyDocs\CodeBlock\CodeBlockWithLineNumbersRenderer;
139
use SymfonyDocs\Directive\CautionDirective;
1410
use SymfonyDocs\Directive\ClassDirective;
1511
use SymfonyDocs\Directive\CodeBlockDirective;
@@ -26,6 +22,7 @@
2622
use SymfonyDocs\Reference\NamespaceReference;
2723
use SymfonyDocs\Reference\PhpFunctionReference;
2824
use SymfonyDocs\Reference\PhpMethodReference;
25+
use SymfonyDocs\Reference\RefReference;
2926

3027
class HtmlKernel extends Kernel
3128
{
@@ -47,7 +44,7 @@ public function __construct(array $directives = [])
4744
$this->symfonyDocsFactory = new NodeFactory($this->getName());
4845
}
4946

50-
public function getFactory() :Factory
47+
public function getFactory(): Factory
5148
{
5249
return $this->symfonyDocsFactory;
5350
}
@@ -56,31 +53,35 @@ public function getDirectives(): array
5653
{
5754
$directives = parent::getDirectives();
5855

59-
return array_merge($directives, [
60-
new CautionDirective(),
61-
new ClassDirective(),
62-
new CodeBlockDirective(),
63-
new ConfigurationBlockDirective(),
64-
new IndexDirective(),
65-
new NoteDirective(),
66-
new RoleDirective(),
67-
new SeeAlsoDirective(),
68-
new SidebarDirective(),
69-
new TipDirective(),
70-
new VersionAddedDirective(),
71-
]);
56+
return array_merge(
57+
$directives,
58+
[
59+
new CautionDirective(),
60+
new ClassDirective(),
61+
new CodeBlockDirective(),
62+
new ConfigurationBlockDirective(),
63+
new IndexDirective(),
64+
new NoteDirective(),
65+
new RoleDirective(),
66+
new SeeAlsoDirective(),
67+
new SidebarDirective(),
68+
new TipDirective(),
69+
new VersionAddedDirective(),
70+
]
71+
);
7272
}
7373

7474
public function getReferences(): array
7575
{
76-
$references = parent::getReferences();
77-
78-
return array_merge($references, [
76+
return [
77+
new Doc(),
78+
// new Doc('ref'),
79+
new RefReference(),
7980
new ClassReference(),
8081
new MethodReference(),
8182
new NamespaceReference(),
8283
new PhpFunctionReference(),
8384
new PhpMethodReference(),
84-
]);
85+
];
8586
}
8687
}

_build/src/Reference/RefReference.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
namespace SymfonyDocs\Reference;
4+
5+
use Doctrine\RST\Environment;
6+
use Doctrine\RST\Reference;
7+
use Doctrine\RST\References\Resolver;
8+
use Doctrine\RST\References\ResolvedReference;
9+
10+
class RefReference extends Reference
11+
{
12+
public function getName(): string
13+
{
14+
return 'ref';
15+
}
16+
17+
public function resolve(Environment $environment, string $data): ResolvedReference
18+
{
19+
$resolver = new Resolver();
20+
dump($resolver->resolve($environment, $data));
21+
return $resolver->resolve($environment, $data);
22+
}
23+
}

_build/tests/IntegrationTest.php

Lines changed: 34 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -9,35 +9,33 @@
99
use Symfony\Component\Filesystem\Filesystem;
1010
use Symfony\Component\Finder\Finder;
1111
use SymfonyDocs\HtmlKernel;
12-
use Symfony\Component\DomCrawler\Crawler;
1312

1413
class IntegrationTest extends TestCase
1514
{
16-
public function testIntegration()
15+
/**
16+
* @dataProvider integrationProvider
17+
*/
18+
public function testIntegration(string $folder)
1719
{
1820
$kernel = new HtmlKernel();
1921
$builder = new Builder($kernel);
2022
$fs = new Filesystem();
2123
$fs->remove(__DIR__.'/_output');
2224

2325
$builder->build(
24-
__DIR__.'/fixtures/source',
26+
sprintf('%s/fixtures/source/%s', __DIR__, $folder),
2527
__DIR__.'/_output',
2628
true // verbose
2729
);
2830

2931
$finder = new Finder();
30-
$finder->in(__DIR__.'/fixtures/expected/')
32+
$finder->in(sprintf('%s/fixtures/expected/%s', __DIR__, $folder))
3133
->files()
3234
->depth('>=0');
3335

3436
$indenter = new Indenter();
3537
foreach ($finder as $expectedFile) {
3638
$relativePath = $expectedFile->getRelativePathname();
37-
if ($relativePath !== 'tables.html') {
38-
continue;
39-
}
40-
4139
$actualFilename = __DIR__.'/_output/'.$relativePath;
4240
$this->assertFileExists($actualFilename);
4341

@@ -47,6 +45,21 @@ public function testIntegration()
4745
}
4846
}
4947

48+
public function integrationProvider()
49+
{
50+
// yield 'main' => [
51+
// 'folder' => 'main'
52+
// ];
53+
54+
yield 'toctree' => [
55+
'folder' => 'toctree'
56+
];
57+
58+
yield 'refReference' => [
59+
'folder' => 'refReference'
60+
];
61+
}
62+
5063
/**
5164
* @dataProvider parserUnitBlockProvider
5265
*/
@@ -71,78 +84,55 @@ public function testParseUnitBlock(string $blockName)
7184
public function parserUnitBlockProvider()
7285
{
7386
yield 'tables' => [
74-
'documentName' => 'tables'
87+
'documentName' => 'tables',
7588
];
7689

7790
yield 'caution' => [
78-
'documentName' => 'caution'
91+
'documentName' => 'caution',
7992
];
8093

8194
yield 'note' => [
82-
'documentName' => 'note'
95+
'documentName' => 'note',
8396
];
8497

8598
yield 'seealso' => [
86-
'documentName' => 'seealso'
99+
'documentName' => 'seealso',
87100
];
88101

89102
yield 'tip' => [
90-
'documentName' => 'tip'
103+
'documentName' => 'tip',
91104
];
92105

93106
yield 'versionadded' => [
94-
'documentName' => 'versionadded'
107+
'documentName' => 'versionadded',
95108
];
96109

97110
yield 'class' => [
98-
'documentName' => 'class'
111+
'documentName' => 'class',
99112
];
100113

101114
yield 'configuration-block' => [
102-
'documentName' => 'configuration-block'
115+
'documentName' => 'configuration-block',
103116
];
104117

105118
yield 'code-block' => [
106-
'documentName' => 'code-block'
119+
'documentName' => 'code-block',
107120
];
108121

109122
yield 'sidebar' => [
110-
'documentName' => 'sidebar'
123+
'documentName' => 'sidebar',
111124
];
112125

113126
yield 'note-code-block-nested' => [
114-
'documentName' => 'note-code-block-nested'
127+
'documentName' => 'note-code-block-nested',
115128
];
116129

117130
yield 'sidebar-code-block-nested' => [
118-
'documentName' => 'sidebar-code-block-nested'
131+
'documentName' => 'sidebar-code-block-nested',
119132
];
120133

121134
yield 'literal' => [
122-
'documentName' => 'literal'
135+
'documentName' => 'literal',
123136
];
124137
}
125-
126-
public function testTocTree()
127-
{
128-
$kernel = new HtmlKernel();
129-
$builder = new Builder($kernel);
130-
$fs = new Filesystem();
131-
$fs->remove(__DIR__.'/_output/toctree');
132-
133-
$builder->build(
134-
__DIR__.'/fixtures/source/toctree',
135-
__DIR__.'/_output/toctree',
136-
true // verbose
137-
);
138-
139-
$indenter = new Indenter();
140-
141-
$expectedFile = sprintf('%s/fixtures/expected/toctree/index.html', __DIR__);
142-
$outputFile = sprintf('%s/_output/toctree/index.html', __DIR__);
143-
$this->assertSame(
144-
$indenter->indent(file_get_contents($expectedFile)),
145-
$indenter->indent(file_get_contents($outputFile))
146-
);
147-
}
148138
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<meta charset="utf-8" />
5+
</head>
6+
<body>
7+
<p><a href="file.html#ref-test">A ref test</a>.</p>
8+
</body>
9+
</html>
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
File
2+
====
3+
4+
.. _ref-test:
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
2+
:ref:`A ref test <ref-test>`.
3+
4+
.. toctree::
5+
:hidden:
6+
7+
file

0 commit comments

Comments
 (0)