Completed
Pull Request — master (#75)
by Ernest
01:17
created

BaseTester::checkItemProperties()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
3
use Orchestra\Testbench\TestCase;
4
use Syntax\SteamApi\Client;
5
6
class BaseTester extends TestCase {
7
8
    protected $id32      = 'STEAM_1:1:31085444';
9
10
    protected $id64      = 76561198022436617;
11
12
    protected $id3       = '[U:1:62170889]';
13
14
    protected $altId64   = 76561197979958413;
15
16
    protected $appId     = 620;
17
18
    protected $packageId = 76710;
19
20
    protected $itemid = 440;
21
22
    protected $groupId   = 103582791429521412;
23
24
    protected $groupName = 'Valve';
25
26
    protected $steamClient;
27
28
    public function setUp()
29
    {
30
        parent::setUp();
31
        $this->steamClient = new Client();
32
    }
33
34
    /** @test */
35
    public function empty_test()
36
    {
37
    }
38
39
    protected function assertObjectHasAttributes($attributes, $object)
40
    {
41
        foreach ($attributes as $attribute) {
42
            $this->assertObjectHasAttribute($attribute, $object);
43
        }
44
    }
45
46
    protected function checkSteamIdsProperties($steamId)
47
    {
48
        $attributes = [
49
            'id32', 'id64', 'id3', 'communityId', 'steamId'
50
        ];
51
        $this->assertObjectHasAttributes($attributes, $steamId);
52
    }
53
54
    protected function checkPlayerProperties($friendsList)
55
    {
56
        $attributes = [
57
            'steamId', 'steamIds', 'communityVisibilityState', 'profileState', 'lastLogoff', 'profileUrl', 'realName', 'primaryClanId', 'timecreated'
58
        ];
59
        $this->assertObjectHasAttributes($attributes, $friendsList[0]);
60
61
        $attributes = [
62
            'avatar', 'avatarMedium', 'avatarFull', 'avatarUrl', 'avatarMediumUrl', 'avatarFullUrl',
63
        ];
64
        $this->assertObjectHasAttributes($attributes, $friendsList[0]);
65
66
        $attributes = [
67
            'personaName', 'personaState', 'personaStateId', 'personaStateFlags'
68
        ];
69
        $this->assertObjectHasAttributes($attributes, $friendsList[0]);
70
71
        $attributes = [
72
            'locCountryCode', 'locStateCode', 'locCityId', 'location'
73
        ];
74
        $this->assertObjectHasAttributes($attributes, $friendsList[0]);
75
76
        $this->checkSteamIdsProperties($friendsList[0]->steamIds);
77
    }
78
79
    protected function checkAchievementProperties($achievement)
80
    {
81
        $attributes = [
82
            'apiName', 'achieved', 'name', 'description'
83
        ];
84
        $this->assertObjectHasAttributes($attributes, $achievement);
85
    }
86
87
    protected function checkAppProperties($app)
88
    {
89
        $this->checkMainAppProperties($app);
90
        $this->checkGeneralAppProperties($app);
91
        $this->checkNestedAppProperties($app);
92
    }
93
94
    protected function checkPackageProperties($package)
95
    {
96
        $this->checkNestedPackageProperties($package);
97
    }
98
99
    protected function checkGroupProperties($group)
100
    {
101
        $this->checkGroupMainSummaryProperties($group);
102
        $this->checkGroupDetailProperties($group);
103
        $this->checkGroupMemberDetailsProperties($group);
104
        $this->checkGroupMemberProperties($group);
105
    }
106
107
    /**
108
     * @param $app
109
     */
110
    private function checkMainAppProperties($app)
111
    {
112
        $attributes = [
113
            'id', 'type', 'name', 'controllerSupport', 'description', 'about', 'fullgame', 'header', 'website'
114
        ];
115
        $this->assertObjectHasAttributes($attributes, $app);
116
    }
117
118
    /**
119
     * @param $app
120
     */
121
    private function checkGeneralAppProperties($app)
122
    {
123
        $attributes = [
124
            'pcRequirements', 'legal', 'developers', 'publishers', 'price', 'platforms', 'metacritic', 'categories', 'genres', 'release'
125
        ];
126
        $this->assertObjectHasAttributes($attributes, $app);
127
    }
128
129
    /**
130
     * @param $app
131
     */
132
    private function checkNestedAppProperties($app)
133
    {
134
        $this->assertObjectHasAttribute('minimum', $app->pcRequirements);
135
136
        $attributes = ['currency', 'initial', 'final', 'discount_percent'];
137
        $this->assertObjectHasAttributes($attributes, $app->price);
138
139
        $attributes = ['windows', 'mac', 'linux'];
140
        $this->assertObjectHasAttributes($attributes, $app->platforms);
141
142
        $attributes = ['score', 'url'];
143
        $this->assertObjectHasAttributes($attributes, $app->metacritic);
144
    }
145
146
    /**
147
     * @param $packahe
148
     */
149
    private function checkNestedPackageProperties($packahe)
150
    {
151
        $attributes = ['currency', 'initial', 'final', 'discount_percent', 'individual'];
152
        $this->assertObjectHasAttributes($attributes, $packahe->price);
153
154
        $attributes = ['windows', 'mac', 'linux'];
155
        $this->assertObjectHasAttributes($attributes, $packahe->platforms);
156
    }
157
158
    /**
159
     * @param $item
160
     */
161
    private function checkItemProperties($item)
162
    {
163
        $attributes = ['id', 'originalId', 'level', 'quality', 'quantity'];
164
        $this->assertObjectHasAttributes($attributes, $item->item);
165
    }
166
167
    /**
168
     * @param $group
169
     */
170
    private function checkGroupMainSummaryProperties($group)
171
    {
172
        $this->assertObjectHasAttribute('groupID64', $group);
173
        $this->assertObjectHasAttribute('groupDetails', $group);
174
        $this->assertObjectHasAttribute('memberDetails', $group);
175
        $this->assertObjectHasAttribute('startingMember', $group);
176
        $this->assertObjectHasAttribute('members', $group);
177
    }
178
179
    /**
180
     * @param $group
181
     */
182
    private function checkGroupDetailProperties($group)
183
    {
184
        $this->assertObjectHasAttribute('name', $group->groupDetails);
185
        $this->assertObjectHasAttribute('url', $group->groupDetails);
186
        $this->assertObjectHasAttribute('headline', $group->groupDetails);
187
        $this->assertObjectHasAttribute('summary', $group->groupDetails);
188
        $this->assertObjectHasAttribute('avatarIcon', $group->groupDetails);
189
        $this->assertObjectHasAttribute('avatarMedium', $group->groupDetails);
190
        $this->assertObjectHasAttribute('avatarFull', $group->groupDetails);
191
        $this->assertObjectHasAttribute('avatarIconUrl', $group->groupDetails);
192
        $this->assertObjectHasAttribute('avatarMediumUrl', $group->groupDetails);
193
        $this->assertObjectHasAttribute('avatarFullUrl', $group->groupDetails);
194
    }
195
196
    /**
197
     * @param $group
198
     */
199
    private function checkGroupMemberDetailsProperties($group)
200
    {
201
        $this->assertObjectHasAttribute('count', $group->memberDetails);
202
        $this->assertObjectHasAttribute('inChat', $group->memberDetails);
203
        $this->assertObjectHasAttribute('inGame', $group->memberDetails);
204
        $this->assertObjectHasAttribute('online', $group->memberDetails);
205
    }
206
207
    /**
208
     * @param $group
209
     */
210
    private function checkGroupMemberProperties($group)
211
    {
212
        $startingMember = $group->members->get($group->startingMember);
213
214
        $this->assertObjectHasAttribute('id32', $startingMember);
215
        $this->assertObjectHasAttribute('id64', $startingMember);
216
        $this->assertObjectHasAttribute('id3', $startingMember);
217
    }
218
219
}