Completed
Push — Laravel4 ( 02d48b...8c5149 )
by Travis
03:47 queued 03:02
created

BaseTester::checkPlayerProperties()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 24
Code Lines 14

Duplication

Lines 0
Ratio 0 %

Importance

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