-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathUpdateConverterTwitterTest.php
111 lines (96 loc) · 4.16 KB
/
UpdateConverterTwitterTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
namespace Buffer\UpdateConverters;
use MongoDB\BSON\UTCDateTime;
class UpdateConverterTwitterTest extends \PHPUnit\Framework\TestCase
{
public function testFromTwitterStatus()
{
$twitterStatus = $this->makeTwitterStatus();
$update = UpdateConverterTwitter::convertFromSocialNetwork($twitterStatus);
// var_dump($update); exit;
$this->assertEquals('12345', $update['service_update_id']);
$this->assertEquals(new UTCDateTime(1000 * strtotime($twitterStatus->created_at)), $update['due_at']);
$this->assertEquals(new UTCDateTime(1000 * strtotime($twitterStatus->created_at)), $update['sent_at']);
$this->assertEquals('twitter', $update['profile_service']);
$this->assertEquals('twitter', $update['via']);
$this->assertEquals([
'retweets' => 5,
'favorites' => 10,
'mentions' => 0,
], $update['statistics']);
}
public function testFromTwitterStatusHasCorrectStatus()
{
$serviceUpdate = UpdateConverterTwitter::convertFromSocialNetwork($this->makeTwitterStatus());
$serviceReplyUpdate = UpdateConverterTwitter::convertFromSocialNetwork(
$this->makeTwitterStatus(['text' => '@someone just replying'])
);
$this->assertEquals($serviceUpdate['status'], 'service');
$this->assertEquals($serviceReplyUpdate['status'], 'service_reply');
}
public function testFromTwitterStatusImages()
{
$picUrl = 'https://pbs.twimg.com/media/Bnr1DieIEAAdITy.png';
$overrides = [
'entities' => [
'media' => [
[
'type' => 'photo',
'media_url_https' => $picUrl
]
]
]
];
$update = UpdateConverterTwitter::convertFromSocialNetwork($this->makeTwitterStatus($overrides));
$this->assertEquals($picUrl, $update['media']['photo']);
$this->assertEquals($picUrl . ':thumb', $update['media']['thumbnail']);
}
public function testSetRetweetData()
{
$overrides = [
'retweeted_status' => [
'id' => 470571408896962560,
'id_str' => '470571408896962560',
'created_at' => 'Tue May 27 16:53:03 +0000 2014',
'text' => 'just another tweet',
"user" => [
"id" => 425938818,
"id_str" => "425938818",
'screen_name' => 'somedude',
'name' => 'twitter name',
'profile_image_url' => 'http://pbs.twimg.com/profile_images/378800000359425267/e3896bf5350d36c6c5f4ce47dfd4f718_normal.jpeg',
'profile_image_url_https' => 'https://pbs.twimg.com/profile_images/378800000359425267/e3896bf5350d36c6c5f4ce47dfd4f718_normal.jpeg'
],
]
];
$status = $this->makeTwitterStatus($overrides);
$retweet = UpdateConverterTwitter::setRetweetData($status->retweeted_status);
$this->assertEquals('470571408896962560', $retweet['tweet_id']);
$this->assertEquals(425938818, $retweet['user_id']);
$this->assertEquals('somedude', $retweet['username']);
$this->assertEquals('twitter name', $retweet['profile_name']);
$this->assertEquals(
'http://pbs.twimg.com/profile_images/378800000359425267/e3896bf5350d36c6c5f4ce47dfd4f718_normal.jpeg',
$retweet['avatars']['http']
);
$this->assertEquals(
"https://twitter.com/somedude/status/470571408896962560",
$retweet['url']
);
}
// Helpers
private function makeTwitterStatus($overrides = [])
{
return json_decode(json_encode(array_replace([
'id_str' => '12345',
'created_at' => 'Sat May 24 05:49:07 +0000 2014',
'text' => 'Just a normal tweet',
'source' => '<a href="http://twitter.com/download/iphone" rel="nofollow">Twitter for iPhone</a>',
'user' => [
'followers_count' => 100,
],
'retweet_count' => 5,
'favorite_count' => 10,
], $overrides)));
}
}