Completed
Push — master ( f62796...881be3 )
by Travis
11s
created

BaseTester::checkNestedPackageProperties()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

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