CurriculumVitaeGetterFromExampleXMLFileTest   A
last analyzed

Complexity

Total Complexity 11

Size/Duplication

Total Lines 375
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 281
dl 0
loc 375
rs 10
c 0
b 0
f 0
wmc 11

11 Methods

Rating   Name   Duplication   Size   Complexity  
A setUp() 0 2 1
A testGetFollowMe() 0 37 1
A testGetExperiencesEN() 0 42 1
A testGetLookingFor() 0 22 1
A testGetDropDownLanguages() 0 7 1
B testGetSkills() 0 85 1
A testGetLanguageSkills() 0 34 1
A assertCVInterface() 0 3 1
A testGetMiscellaneous() 0 20 1
A testGetExperiencesFR() 0 43 1
A testGetEducations() 0 53 1
1
<?php
2
3
/*
4
 * This file is part of the FabienCrassat\CurriculumVitaeBundle Symfony bundle.
5
 *
6
 * (c) Fabien Crassat <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace FabienCrassat\CurriculumVitaeBundle\Tests\Entity;
13
14
use FabienCrassat\CurriculumVitaeBundle\Entity\CurriculumVitae;
15
16
class CurriculumVitaeGetterFromExampleXMLFileTest extends \PHPUnit\Framework\TestCase
17
{
18
    private $curriculumVitae;
19
    private $lang;
20
    private $interface;
21
    private $arrayToCompare;
22
23
    public function setUp() {
24
        $this->lang = 'en';
25
    }
26
27
    public function testGetDropDownLanguages() {
28
        $this->interface      = 'getDropDownLanguages';
29
        $this->arrayToCompare = [
30
            'en' => 'English',
31
            'fr' => 'Français'];
32
33
        $this->assertCVInterface();
34
    }
35
36
    public function testGetFollowMe() {
37
        $this->interface      = 'getFollowMe';
38
        $this->arrayToCompare = [
39
            'linkedin' => [
40
                'title' => 'Linked In',
41
                'url'   => 'http://www.linkedin.com',
42
                'icon'  => 'bundles/fabiencrassatcurriculumvitae/img/linkedin.png'],
43
            'viadeo' => [
44
                'title' => 'Viadeo',
45
                'url'   => 'http://www.viadeo.com',
46
                'icon'  => 'bundles/fabiencrassatcurriculumvitae/img/viadeo.png'],
47
            'monster' => [
48
                'title' => 'Monster',
49
                'url'   => 'http://beknown.com',
50
                'icon'  => 'bundles/fabiencrassatcurriculumvitae/img/monster.png'],
51
            'twitter' => [
52
                'title' => 'Twitter',
53
                'url'   => 'https://twitter.com',
54
                'icon'  => 'bundles/fabiencrassatcurriculumvitae/img/twitter.png'],
55
            'googleplus' => [
56
                'title' => 'Google+',
57
                'url'   => 'https://plus.google.com',
58
                'icon'  => 'bundles/fabiencrassatcurriculumvitae/img/googleplus.png'],
59
            'facebook' => [
60
                'title' => 'Facebook',
61
                'url'   => 'https://www.facebook.com',
62
                'icon'  => 'bundles/fabiencrassatcurriculumvitae/img/facebook.png'],
63
            'scrum' => [
64
                'title' => 'Scrum',
65
                'url'   => 'http://www.scrumalliance.org',
66
                'icon'  => 'bundles/fabiencrassatcurriculumvitae/img/scrum-alliance.png']
67
        ];
68
69
        $this->assertCVInterface();
70
71
        $this->lang = 'fr';
72
        $this->assertCVInterface();
73
    }
74
75
    public function testGetLookingFor() {
76
        $this->interface = 'getLookingFor';
77
78
        $this->arrayToCompare = [
79
            'experience'   => 'Curriculum Vitae Title',
80
            'presentation' => 'Sed ultrices urna condimentum, luctus nisi sit amet, vehicula dolor. Proin at augue sapien. Phasellus nec sem euismod, ultrices orci sit amet, ultrices turpis. Phasellus ut libero tellus. Maecenas nec neque sagittis, scelerisque orci sed, posuere ligula. Curabitur euismod malesuada purus, ac semper quam. Suspendisse consequat, est a volutpat molestie, metus risus porta est, id interdum turpis justo ac lorem. Mauris id mollis nisi, ut hendrerit augue. Vestibulum aliquet felis aliquet risus porttitor, aliquam porttitor nibh euismod.'
81
        ];
82
        $this->assertCVInterface();
83
84
        $this->lang           = 'fr';
85
        $this->arrayToCompare = [
86
            'experience'   => 'Titre du curriculum vitae',
87
            'presentation' => 'Mauris rutrum justo ac bibendum ultrices. Mauris a dolor a diam'
88
            .' tempus ornare vel non urna. Donec a dui vel nunc ultrices porta non vitae felis.'
89
            .' Ut blandit ullamcorper orci. Quisque quis justo vitae nisl auctor laoreet non eget'
90
            .' mauris. Sed volutpat enim est, vitae vulputate nibh laoreet gravida. Duis nec'
91
            .' tincidunt ante. Nullam metus turpis, accumsan nec laoreet et, consectetur et'
92
            .' ligula. Curabitur convallis feugiat lorem, sit amet tincidunt arcu sollicitudin'
93
            .' vel. Aliquam erat volutpat. In odio elit, accumsan in facilisis at, ultricies'
94
            .' quis justo.'
95
        ];
96
        $this->assertCVInterface();
97
    }
98
99
    public function testGetExperiencesEN() {
100
        $this->interface = 'getExperiences';
101
102
        $this->arrayToCompare = [
103
            'FirstExperience' => [
104
                'date'    => 'Jan 2007 - Present',
105
                'job'     => 'My current job',
106
                'society' => [
107
                    'name'    => 'My Company',
108
                    'address' => 'the address of the company',
109
                    'siteurl' => 'http://www.MyCompany.com'],
110
                'missions' => [
111
                    'item' => [
112
                        0 => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
113
                        1 => 'Suspendisse nec mauris eu orci dapibus mollis ac ac mi.']]],
114
            'SecondExperience' => [
115
                'collapse' => 'false',
116
                'date'     => 'Sept - Dec 2006',
117
                'job'      => 'My previous job',
118
                'society'  => [
119
                    'name'    => 'My Other Company',
120
                    'address' => 'the address of the company',
121
                    'siteurl' => 'http://www.MyOtherCompany.com']],
122
            'ThirdExperience' => [
123
                'date'    => 'Summer 2006',
124
                'job'     => 'A summer job',
125
                'society' => [
126
                    'name'    => 'A company wihtout site',
127
                    'address' => 'the address of the company'],
128
                'missions' => [
129
                    'item' => [
130
                        0 => 'Suspendisse et arcu eget est feugiat elementum.']]],
131
            'FourthExperience' => [
132
                'collapse' => 'true',
133
                'date'     => 'Before 2006',
134
                'job'      => 'The job of my life',
135
                'society'  => 'A society with a name per language',
136
                'missions' => [
137
                    'item' => [
138
                        0 => 'In et felis leo. Donec viverra vestibulum eros in sagittis.']]]
139
        ];
140
        $this->assertCVInterface();
141
    }
142
143
    public function testGetExperiencesFR() {
144
        $this->interface = 'getExperiences';
145
146
        $this->lang           = 'fr';
147
        $this->arrayToCompare = [
148
            'FirstExperience' => [
149
                'date'    => 'Jan. 2007 - Aujourd\'hui',
150
                'job'     => 'Mon poste actuel',
151
                'society' => [
152
                    'name'    => 'My Company',
153
                    'address' => 'the address of the company',
154
                    'siteurl' => 'http://www.MyCompany.com'],
155
                'missions' => [
156
                    'item' => [
157
                        0 => 'Donec gravida enim viverra tempor dignissim.',
158
                        1 => 'Sed a eros at mauris placerat adipiscing.']]],
159
            'SecondExperience' => [
160
                'collapse' => 'false',
161
                'date'     => 'Sept - Dec 2006',
162
                'job'      => 'Mon poste précédent',
163
                'society'  => [
164
                    'name'    => 'Mon autre compagnie',
165
                    'address' => 'l\'adresse de la compagnie',
166
                    'siteurl' => 'http://www.MyOtherCompany.com']],
167
            'ThirdExperience' => [
168
                'date'    => 'Summer 2006',
169
                'job'     => 'Un travail d\'été',
170
                'society' => [
171
                    'name'    => 'Une compagnie sans site',
172
                    'address' => 'l\'adresse de la compagnie'],
173
                'missions' => [
174
                    'item' => [
175
                        0 => 'Suspendisse et arcu eget est feugiat elementum.']]],
176
            'FourthExperience' => [
177
                'collapse' => 'true',
178
                'date'     => 'Before 2006',
179
                'job'      => 'Le job de ma vie',
180
                'society'  => 'Une société avec un nom par langue',
181
                'missions' => [
182
                    'item' => [
183
                        0 => 'In et felis leo. Donec viverra vestibulum eros in sagittis.']]]
184
        ];
185
        $this->assertCVInterface();
186
    }
187
188
    public function testGetSkills() {
189
        $this->interface = 'getSkills';
190
191
        $this->arrayToCompare = [
192
            'Functional' => [
193
                'title' => 'Skills',
194
                'lines' => [
195
                    'success' => [
196
                        'percentage' => 90,
197
                        'class'      => 'success',
198
                        'striped'    => 'true',
199
                        'label'      => 'Increasing Skills',
200
                    ],
201
                    'otherSucess' => [
202
                        'percentage' => 90,
203
                        'class'      => 'success',
204
                        'label'      => 'success',
205
                    ],
206
                    'info' => [
207
                        'percentage' => 40,
208
                        'class'      => 'info',
209
                        'striped'    => 'false',
210
                        'label'      => 'info',
211
                    ],
212
                    'warning' => [
213
                        'percentage' => 20,
214
                        'class'      => 'warning',
215
                        'label'      => 'warning',
216
                    ],
217
                    'danger' => [
218
                        'percentage' => 10,
219
                        'class'      => 'danger',
220
                        'label'      => 'danger',
221
                    ],
222
                    'noClass' => [
223
                        'percentage' => 5,
224
                        'label'      => 'noClass',
225
                    ],
226
                    'nothing' => [
227
                        'label' => 'nothing',
228
                    ]
229
                ]
230
            ],
231
            'OtherSkill' => [
232
                'title' => 'One other',
233
                'lines' => [
234
                    'success' => [
235
                        'percentage' => 90,
236
                        'class'      => 'success',
237
                        'striped'    => 'false',
238
                        'label'      => 'Skills List',
239
                    ],
240
                    'info' => [
241
                        'percentage' => 40,
242
                        'class'      => 'info',
243
                        'striped'    => 'false',
244
                        'label'      => 'Label',
245
                    ],
246
                    'warning' => [
247
                        'percentage' => 20,
248
                        'class'      => 'warning',
249
                        'striped'    => 'false',
250
                        'label'      => 'Label',
251
                    ],
252
                    'danger' => [
253
                        'percentage' => 10,
254
                        'class'      => 'danger',
255
                        'striped'    => 'true',
256
                        'label'      => 'Label',
257
                    ]
258
                ]
259
            ]
260
        ];
261
        $this->assertCVInterface();
262
263
        $this->lang = 'fr';
264
        // Only set the french labels
265
        $arrayToChange                                            = $this->arrayToCompare;
266
        $arrayToChange['Functional']['title']                     = 'Compétences';
267
        $arrayToChange['Functional']['lines']['success']['label'] = 'Compétences grandissantes';
268
        $arrayToChange['OtherSkill']['title']                     = 'Une autre';
269
        $arrayToChange['OtherSkill']['lines']['success']['label'] = 'Liste de Compétences';
270
271
        $this->arrayToCompare = $arrayToChange;
272
        $this->assertCVInterface();
273
    }
274
275
    public function testGetEducations() {
276
        $this->interface = 'getEducations';
277
278
        $this->arrayToCompare = [
279
            'University' => [
280
                'date'         => '2002 - 2005',
281
                'education'    => 'My diploma in my university',
282
                'descriptions' => ['item' => [
283
                    0 => 'Quisque eu sapien tortor. Morbi erat lorem, facilisis tempor pulvinar eu, sollicitudin a tellus. Phasellus consequat viverra mattis. Vestibulum convallis ornare eros, ac placerat neque. Aliquam viverra iaculis ex, egestas ornare ipsum fringilla id. Fusce turpis leo, iaculis id vestibulum sed, pharetra malesuada velit. Ut risus leo, consectetur eu pretium id, convallis in nisi. Sed vel varius nulla. Sed id scelerisque est.'
284
                ]]
285
            ],
286
            'HighSchool' => [
287
                'collapse'     => 'false',
288
                'date'         => 'June 2002',
289
                'education'    => 'My diploma in my high school',
290
                'descriptions' => ['item' => [
291
                    0 => 'Duis egestas ipsum nulla, et maximus ligula mollis sed. Phasellus aliquet ac orci in fermentum. Donec cursus id tellus ac sagittis. Praesent et elit tincidunt sem lobortis porttitor. Suspendisse lorem purus, gravida et tellus in, ultrices ornare libero. In bibendum consectetur enim nec commodo. Sed non neque sodales, mollis arcu et, dapibus purus.',
292
                    1 => 'Duis faucibus tortor nec enim auctor ultrices non vitae erat. Suspendisse in scelerisque ipsum. Proin eu neque rutrum, condimentum ligula vitae, tempor metus. Quisque non massa at nibh maximus rutrum ut ac ligula. Fusce dolor mi, imperdiet tincidunt molestie non, volutpat quis mauris. In aliquet laoreet dolor in pharetra. Pellentesque feugiat mollis turpis, vel faucibus metus suscipit sed.'
293
                ]]
294
            ],
295
            'FirstSchool' => [
296
                'collapse'  => 'true',
297
                'date'      => 'June 2000',
298
                'education' => 'My diploma in my first school'
299
            ]
300
        ];
301
        $this->assertCVInterface();
302
303
        $this->lang           = 'fr';
304
        $this->arrayToCompare = [
305
            'University' => [
306
                'date'         => '2002 - 2005',
307
                'education'    => 'Mon diplôme dans mon université',
308
                'descriptions' => ['item' => [
309
                    0 => 'Suspendisse pellentesque eros eget enim pulvinar maximus. Mauris tristique hendrerit arcu eleifend pharetra. Donec et ultricies lorem. Maecenas non ipsum iaculis, efficitur mi nec, gravida felis. Etiam facilisis tincidunt justo. Nulla nibh mi, vulputate vitae lectus a, egestas porta magna. Nulla nec nisl gravida, venenatis mauris sit amet, tincidunt ligula. Praesent dignissim lectus accumsan ullamcorper suscipit.',
310
                    1 => 'Vestibulum elementum cursus sagittis. Donec tristique nisl ac urna varius, vitae tempor dui sagittis. Aliquam libero urna, ultricies eu luctus sit amet, fermentum nec sapien. Phasellus ultrices felis at tempus tincidunt. Nullam at augue non justo lacinia vestibulum. Morbi vel dui eget enim consectetur ultrices faucibus sed turpis. Integer maximus enim eu mollis dignissim. Fusce aliquet est nibh, non lacinia urna hendrerit ac.'
311
                ]]
312
            ],
313
            'HighSchool' => [
314
                'collapse'     => 'false',
315
                'date'         => 'Juin 2002',
316
                'education'    => 'Mon diplôme dans mon lycée',
317
                'descriptions' => ['item' => [
318
                    0 => 'Aenean pellentesque, arcu eu commodo mollis, lacus augue vehicula justo, nec interdum nisl quam eu arcu. Aliquam ultricies purus vitae justo accumsan congue. Aliquam fermentum in arcu nec auctor. Cras tincidunt dapibus scelerisque. Duis pretium ac massa ac varius. Vivamus eget imperdiet risus. Mauris feugiat nisi non lectus laoreet, vitae ultrices ex dapibus. Aliquam non sagittis ex. Phasellus eget congue diam.'
319
                ]]
320
            ],
321
            'FirstSchool' => [
322
                'collapse'  => 'true',
323
                'date'      => 'Juin 2000',
324
                'education' => 'Mon diplôme dans mon collège'
325
            ]
326
        ];
327
        $this->assertCVInterface();
328
    }
329
330
    public function testGetLanguageSkills() {
331
        $this->interface = 'getLanguageSkills';
332
333
        $frenchFlag  = 'bundles/fabiencrassatcurriculumvitae/img/Flag-of-France.png';
334
        $englishFlag = 'bundles/fabiencrassatcurriculumvitae/img/Flag-of-United-Kingdom.png';
335
336
        $this->arrayToCompare = [
337
            'French' => [
338
                'title'       => 'French',
339
                'description' => 'My French level of the skill.',
340
                'icon'        => $frenchFlag
341
            ],
342
            'English' => [
343
                'title'       => 'English',
344
                'description' => 'My English level of the skill.',
345
                'icon'        => $englishFlag
346
            ]
347
        ];
348
        $this->assertCVInterface();
349
350
        $this->lang           = 'fr';
351
        $this->arrayToCompare = [
352
            'French' => [
353
                'title'       => 'Français',
354
                'description' => 'Mon niveau de Français.',
355
                'icon'        => $frenchFlag
356
            ],
357
            'English' => [
358
                'title'       => 'Anglais',
359
                'description' => 'Mon niveau d\'Anglais.',
360
                'icon'        => $englishFlag
361
            ]
362
        ];
363
        $this->assertCVInterface();
364
    }
365
366
    public function testGetMiscellaneous() {
367
        $this->interface = 'getMiscellaneous';
368
369
        $this->arrayToCompare = [
370
            'Practical' => [
371
                'title'         => 'Practices',
372
                'miscellaneous' => 'My practices'
373
            ]
374
        ];
375
        $this->assertCVInterface();
376
377
        $this->lang           = 'fr';
378
        $this->arrayToCompare = [
379
            'Practical' => [
380
                'title'         => 'Pratiques',
381
                'miscellaneous' => 'Mes pratiques',
382
                'description'   => 'Integer rutrum congue odio. Donec ut sem sed ligula blandit rutrum consequat in quam. Donec quis pharetra lacus. Pellentesque turpis neque, dignissim non erat quis, tincidunt tempus arcu. Praesent eget blandit odio. Nullam et felis vitae nulla tincidunt efficitur at vel nulla. Nam rhoncus eu est mattis gravida. Nam id vulputate ex. Pellentesque aliquam arcu eu lacinia commodo.'
383
            ]
384
        ];
385
        $this->assertCVInterface();
386
    }
387
388
    private function assertCVInterface($pathToFile = '/../../Resources/data/example.xml') {
389
        $this->curriculumVitae = new CurriculumVitae(__DIR__.$pathToFile, $this->lang);
390
        $this->assertEquals($this->arrayToCompare, $this->curriculumVitae->{$this->interface}());
391
    }
392
}
393