Completed
Push — v2 ( 9de304...bf6a94 )
by Joschi
05:08
created

MicroformatsFeedTrait   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 99
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 4

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 2
lcom 0
cbo 4
dl 0
loc 99
rs 10
c 1
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
B getApplicationFeedItem() 0 81 1
A getFeedItem() 0 4 1
1
<?php
2
3
/**
4
 * micrometa
5
 *
6
 * @category Jkphl
7
 * @package Jkphl\Micrometa
8
 * @subpackage Jkphl\Micrometa\Tests
9
 * @author Joschi Kuphal <[email protected]> / @jkphl
10
 * @copyright Copyright © 2017 Joschi Kuphal <[email protected]> / @jkphl
11
 * @license http://opensource.org/licenses/MIT The MIT License (MIT)
12
 */
13
14
/***********************************************************************************
15
 *  The MIT License (MIT)
16
 *
17
 *  Copyright © 2017 Joschi Kuphal <[email protected]> / @jkphl
18
 *
19
 *  Permission is hereby granted, free of charge, to any person obtaining a copy of
20
 *  this software and associated documentation files (the "Software"), to deal in
21
 *  the Software without restriction, including without limitation the rights to
22
 *  use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
23
 *  the Software, and to permit persons to whom the Software is furnished to do so,
24
 *  subject to the following conditions:
25
 *
26
 *  The above copyright notice and this permission notice shall be included in all
27
 *  copies or substantial portions of the Software.
28
 *
29
 *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
30
 *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
31
 *  FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
32
 *  COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
33
 *  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
34
 *  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
35
 ***********************************************************************************/
36
37
namespace Jkphl\Micrometa\Tests;
38
39
use Jkphl\Micrometa\Application\Factory\PropertyListFactory;
40
use Jkphl\Micrometa\Application\Item\Item as ApplicationItem;
41
use Jkphl\Micrometa\Application\Value\StringValue;
42
use Jkphl\Micrometa\Infrastructure\Factory\MicroformatsFactory;
43
use Jkphl\Micrometa\Infrastructure\Parser\Microformats;
44
use Jkphl\Micrometa\Ports\Item\Item;
45
46
/**
47
 * Trait MicroformatsFeedTrait
48
 *
49
 * @package Jkphl\Micrometa
50
 * @subpackage Jkphl\Micrometa\Tests
51
 */
52
trait MicroformatsFeedTrait
53
{
54
    /**
55
     * Create and return an h-feed Microformats applocation item
56
     *
57
     * @return ApplicationItem h-feed application item
58
     */
59
    protected function getApplicationFeedItem()
60
    {
61
        $authorItem = new ApplicationItem(
62
            Microformats::FORMAT,
63
            new PropertyListFactory(),
64
            (object)['profile' => MicroformatsFactory::MF2_PROFILE_URI, 'name' => 'h-card'],
65
            [
66
                (object)[
67
                    'profile' => MicroformatsFactory::MF2_PROFILE_URI,
68
                    'name' => 'name',
69
                    'values' => [
70
                        new StringValue('John Doe')
71
                    ]
72
                ],
73
                (object)[
74
                    'profile' => MicroformatsFactory::MF2_PROFILE_URI,
75
                    'name' => 'email',
76
                    'values' => [
77
                        new StringValue('[email protected]')
78
                    ]
79
                ]
80
            ]
81
        );
82
83
        $entryItem = new ApplicationItem(
84
            Microformats::FORMAT,
85
            new PropertyListFactory(),
86
            (object)['profile' => MicroformatsFactory::MF2_PROFILE_URI, 'name' => 'h-entry'],
87
            [
88
                (object)[
89
                    'profile' => MicroformatsFactory::MF2_PROFILE_URI,
90
                    'name' => 'name',
91
                    'values' => [
92
                        new StringValue('Famous blog post')
93
                    ]
94
                ],
95
                (object)[
96
                    'profile' => MicroformatsFactory::MF2_PROFILE_URI,
97
                    'name' => 'author',
98
                    'values' => [
99
                        $authorItem
100
                    ]
101
                ]
102
            ]
103
        );
104
105
        $feedItem = new ApplicationItem(
106
            Microformats::FORMAT,
107
            new PropertyListFactory(),
108
            (object)['profile' => MicroformatsFactory::MF2_PROFILE_URI, 'name' => 'h-feed'],
109
            [
110
                (object)[
111
                    'profile' => MicroformatsFactory::MF2_PROFILE_URI,
112
                    'name' => 'name',
113
                    'values' => [
114
                        new StringValue('John Doe\'s Blog')
115
                    ]
116
                ],
117
                (object)[
118
                    'profile' => MicroformatsFactory::MF2_PROFILE_URI,
119
                    'name' => 'author',
120
                    'values' => [
121
                        $authorItem
122
                    ]
123
                ],
124
                (object)[
125
                    'profile' => MicroformatsFactory::MF2_PROFILE_URI,
126
                    'name' => 'custom-property',
127
                    'values' => [
128
                        new StringValue('Property for alias testing')
129
                    ]
130
                ],
131
            ],
132
            [$entryItem, $entryItem],
133
            'feed-id',
134
            'feed-language',
135
            'feed-value'
136
        );
137
138
        return $feedItem;
139
    }
140
141
    /**
142
     * Create and return an h-feed Microformats item
143
     *
144
     * @return Item h-feed item
145
     */
146
    protected function getFeedItem()
147
    {
148
        return new Item($this->getApplicationFeedItem());
149
    }
150
}
151