Passed
Branch tests (8e1d8e)
by Nicolas
02:56
created

PlanParserTest::testParseToHtml()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 33
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 33
rs 8.8571
cc 1
eloc 7
nc 1
nop 0
1
<?php
2
3
namespace Tests\Cp\Parser;
4
5
use Cp\Http\HeaderParser;
6
use Cp\Parser\PlanParser;
7
use PHPHtmlParser\Dom;
8
9
/**
10
 * Class PlanParserTest
11
 */
12
class PlanParserTest extends \PHPUnit_Framework_TestCase
13
{
14
    /**
15
     * Test parse html to json object
16
     */
17
    public function testParseToJson()
18
    {
19
        $url = __DIR__.'/../../fixtures/html/Plan-10km-3-seances-6semaines.htm';
20
        $planParser = new PlanParser(new Dom(), new HeaderParser());
21
22
        $expected = [
23
            'name' => 'Plans entrainement 10 km en 50 / 55 minutes',
24
            'type' => 'Plan 10 km avec 3 séances / 6 semaines',
25
            'weeks' => [
26
                [
27
                    'name' => 'Semaine 1',
28
                    'trainings' => [
29
                        [
30
                            'type' => 'EF',
31
                            'content' => 'Footing de 45 minutes',
32
                        ],
33
                        [
34
                            'type' => 'VMA-105',
35
                            'content' => 'Footing de 20-30 minutes suivi de 2 séries de 30"-30" à 100-105%VMA avec 3 minutes de récupération entre chaque série.',
36
                        ],
37
                        [
38
                            'type' => 'SL-80/85',
39
                            'content' => 'Sortie longue de 1h20 dont 2 fois 10minutes à 80-85%FCM avec une récupération de 2 minutes entre chaque effort',
40
                        ],
41
                    ],
42
                ],
43
            ],
44
        ];
45
46
        $this->assertEquals(json_encode($expected), $planParser->parseToJson($url));
47
    }
48
49
    /**
50
     * @expectedException \Exception
51
     */
52
    public function testParseToJsonWithException()
53
    {
54
        $url = __DIR__.'/../../fixtures/html/wrong-page.htm';
55
        $planParser = new PlanParser(new Dom(), new HeaderParser());
56
57
        $planParser->parseToJson($url);
58
    }
59
60
    /**
61
     * Test to parse plan on Html
62
     */
63
    public function testParseToHtml()
64
    {
65
        $url = __DIR__.'/../../fixtures/html/Plan-10km-3-seances-6semaines.htm';
66
        $planParser = new PlanParser(new Dom(), new HeaderParser());
67
68
        $htmlContent = '<table>
69
            <thead>
70
                <tr>
71
                    <td>&nbsp;</td>
72
                    <td class="semaine">Semaine 1</td>
73
                </tr>
74
            </thead>
75
            <tbody>
76
                <tr>
77
                    <td class="fonce">EF</td>
78
                    <td>Footing de <strong>45 minutes</strong></td>
79
                </tr>
80
                <tr>
81
                    <td class="fonce">VMA-105</td>
82
                    <td>Footing de 20-30 minutes suivi de <strong>2 séries de 30"-30" à 100-105%VMA</strong> avec 3 minutes de récupération entre chaque série.</td>
83
                </tr>
84
                <tr>
85
                    <td class="fonce">SL-80/85</td>
86
                    <td>Sortie longue de <strong>1h20</strong> dont <strong>2 fois 10minutes à 80-85%FCM</strong> avec une récupération de 2 minutes entre chaque effort</td>
87
                </tr>
88
            </tbody>
89
        </table>';
90
91
        $expected = preg_replace('/>([\t|\s]+)</', '><', $htmlContent);
92
        $actual = preg_replace('/>([\t|\s]+)</', '><', $planParser->parseToHtml($url));
93
94
        $this->assertEquals($expected, $actual);
95
    }
96
}
97