Skip to content

Commit a80e090

Browse files
committed
Add unit tests
1 parent 98126b2 commit a80e090

File tree

12 files changed

+412
-2
lines changed

12 files changed

+412
-2
lines changed

phpunit.xml.dist

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,11 @@
55
displayDetailsOnTestsThatTriggerWarnings="true"
66
colors="true">
77
<testsuites>
8-
<testsuite name="client">
9-
<directory>tests/Client</directory>
8+
<testsuite name="unit">
9+
<directory>tests/Unit</directory>
10+
</testsuite>
11+
<testsuite name="integration">
12+
<directory>tests/Integration</directory>
1013
</testsuite>
1114
</testsuites>
1215
<source>

tests/Unit/APIClientTest.php

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<?php
2+
3+
namespace Aternos\BlobBuild\Test\Unit;
4+
5+
use GuzzleHttp\Client;
6+
use GuzzleHttp\HandlerStack;
7+
use GuzzleHttp\Middleware;
8+
9+
class APIClientTest extends UnitTestCase
10+
{
11+
public function testSetUserAgent(): void
12+
{
13+
$this->client->setUserAgent('test-agent');
14+
$this->addResponse($this->getFixture("user/J3fftw.json"));
15+
$user = $this->client->getAuthenticatedUser();
16+
$this->assertEquals('J3fftw', $user->getData()->getName());
17+
18+
$history = array_shift($this->requestHistory);
19+
$this->assertEquals('test-agent', $history['request']->getHeaderLine('User-Agent'));
20+
}
21+
22+
public function testSetApiToken(): void
23+
{
24+
$this->client->setApiToken('test-token');
25+
$this->addResponse($this->getFixture("user/J3fftw.json"));
26+
$user = $this->client->getAuthenticatedUser();
27+
$this->assertEquals('J3fftw', $user->getData()->getName());
28+
29+
$history = array_shift($this->requestHistory);
30+
$this->assertEquals('Bearer test-token', $history['request']->getHeaderLine('Authorization'));
31+
}
32+
33+
public function testSetHttpClient(): void
34+
{
35+
$handlerStack = HandlerStack::create($this->httpMockHandler);
36+
$requestHistory = [];
37+
$handlerStack->push(Middleware::history($requestHistory));
38+
$client = new Client(['handler' => $handlerStack]);
39+
$this->client->setHttpClient($client);
40+
41+
$this->addResponse($this->getFixture("user/J3fftw.json"));
42+
$user = $this->client->getAuthenticatedUser();
43+
$this->assertEquals('J3fftw', $user->getData()->getName());
44+
45+
$this->assertCount(1, $requestHistory);
46+
}
47+
}

tests/Unit/BuildTest.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
namespace Aternos\BlobBuild\Test\Unit;
4+
5+
use Aternos\BlobBuild\Client\Build;
6+
7+
class BuildTest extends UnitTestCase
8+
{
9+
public function testGetProject(): void
10+
{
11+
$build = $this->getBuild();
12+
$this->assertSoundMufflerBuild($build->getData());
13+
14+
$this->addResponse($this->getFixture("projects/SoundMuffler.json"));
15+
$project = $build->getProject();
16+
$this->assertSoundMuffler($project->getData());
17+
}
18+
19+
protected function getBuild(): Build
20+
{
21+
$this->addResponse($this->getFixture("builds/SoundMuffler/latest.json"));
22+
return $this->client->getLatestProjectBuildInChannel("SoundMuffler", "Dev");
23+
}
24+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"success": true,
3+
"message": "Success",
4+
"data": {
5+
"Dev": [
6+
{
7+
"projectName": "SoundMuffler",
8+
"releaseChannel": "Dev",
9+
"buildId": 1,
10+
"build_id": 1,
11+
"checksum": "6228088d899da856a1542c725105aa86eac9c48cc8b97d0cf07972bc55276b45",
12+
"fileDownloadUrl": "https://blob.build/dl/SoundMuffler/Dev/1",
13+
"file_download_url": "https://blob.build/dl/SoundMuffler/Dev/1",
14+
"supportedVersions": "1.20+",
15+
"dependencies": [
16+
"ProtocolLib",
17+
"Slimefun"
18+
],
19+
"releaseNotes": "are we on blob builds now?",
20+
"commitHash": "e341d090b0cd666aff0104ebf85a97380a977745",
21+
"commitLink": "https://github.com/Slimefun-Addon-Community/SoundMuffler/commit/e341d090b0cd666aff0104ebf85a97380a977745"
22+
}
23+
]
24+
}
25+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"success": true,
3+
"message": "Success",
4+
"data": {
5+
"projectName": "SoundMuffler",
6+
"releaseChannel": "Dev",
7+
"buildId": 1,
8+
"build_id": 1,
9+
"checksum": "6228088d899da856a1542c725105aa86eac9c48cc8b97d0cf07972bc55276b45",
10+
"fileDownloadUrl": "https://blob.build/dl/SoundMuffler/Dev/latest",
11+
"file_download_url": "https://blob.build/dl/SoundMuffler/Dev/latest",
12+
"supportedVersions": "1.20+",
13+
"dependencies": [
14+
"ProtocolLib",
15+
"Slimefun"
16+
],
17+
"releaseNotes": "are we on blob builds now?",
18+
"commitHash": "e341d090b0cd666aff0104ebf85a97380a977745",
19+
"commitLink": "https://github.com/Slimefun-Addon-Community/SoundMuffler/commit/e341d090b0cd666aff0104ebf85a97380a977745"
20+
}
21+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"success": true,
3+
"message": "Success",
4+
"data": {
5+
"name": "SoundMuffler",
6+
"description": "SoundMuffler is a Slimefun4 Addon that is created to stop the horrible noices from mob farms, piston machines and many other things that make sound. By using a SoundMuffler you are able to reduce the sound or even stop the sounds in an area.",
7+
"repoLink": "https://github.com/Slimefun-Addon-Community/SoundMuffler",
8+
"wikiLink": null,
9+
"releaseChannels": [
10+
"Dev"
11+
],
12+
"defaultReleaseChannel": {
13+
"name": "Dev",
14+
"supportedVersions": "1.20+",
15+
"dependencies": [
16+
"Slimefun",
17+
"ProtocolLib"
18+
],
19+
"fileNaming": "$project.jar"
20+
}
21+
}
22+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
{
2+
"success": true,
3+
"message": "Success",
4+
"data": [
5+
{
6+
"owner": "balugaq",
7+
"name": "SlimefunTimeit",
8+
"description": "Display the slimefun ticks visually",
9+
"repoLink": "https://github.com/balugaq/SlimefunTimeit",
10+
"wikiLink": null,
11+
"releaseChannels": [
12+
"Dev"
13+
],
14+
"defaultReleaseChannel": {
15+
"name": "Dev",
16+
"supportedVersions": "1.20+",
17+
"dependencies": [],
18+
"fileNaming": "$project.jar"
19+
}
20+
},
21+
{
22+
"owner": "J3fftw",
23+
"name": "SoundMuffler",
24+
"description": "SoundMuffler is a Slimefun4 Addon that is created to stop the horrible noices from mob farms, piston machines and many other things that make sound. By using a SoundMuffler you are able to reduce the sound or even stop the sounds in an area.",
25+
"repoLink": "https://github.com/Slimefun-Addon-Community/SoundMuffler",
26+
"wikiLink": null,
27+
"releaseChannels": [
28+
"Dev"
29+
],
30+
"defaultReleaseChannel": {
31+
"name": "Dev",
32+
"supportedVersions": "1.20+",
33+
"dependencies": [
34+
"Slimefun",
35+
"ProtocolLib"
36+
],
37+
"fileNaming": "$project.jar"
38+
}
39+
}
40+
]
41+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"success": true,
3+
"message": "Success",
4+
"data": [
5+
{
6+
"owner": "J3fftw",
7+
"name": "SoundMuffler",
8+
"description": "SoundMuffler is a Slimefun4 Addon that is created to stop the horrible noices from mob farms, piston machines and many other things that make sound. By using a SoundMuffler you are able to reduce the sound or even stop the sounds in an area.",
9+
"repoLink": "https://github.com/Slimefun-Addon-Community/SoundMuffler",
10+
"wikiLink": null,
11+
"releaseChannels": [
12+
"Dev"
13+
],
14+
"defaultReleaseChannel": {
15+
"name": "Dev",
16+
"supportedVersions": "1.20+",
17+
"dependencies": [
18+
"Slimefun",
19+
"ProtocolLib"
20+
],
21+
"fileNaming": "$project.jar"
22+
}
23+
}
24+
]
25+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"success": true,
3+
"message": "Success",
4+
"data": {
5+
"name": "J3fftw",
6+
"oauthProvider": "github",
7+
"oauthId": "8468451",
8+
"apiToken": "KcehKsHohfxnyuHHW6LYwMFhDYQaD9CtjCtktnm2PdasPvenmBrYeQFcBwXagbZd",
9+
"flags": 0,
10+
"betaFlags": []
11+
}
12+
}

tests/Unit/ProjectTest.php

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
<?php
2+
3+
namespace Aternos\BlobBuild\Test\Unit;
4+
5+
use Aternos\BlobBuild\Client\Build;
6+
use Aternos\BlobBuild\Client\Project;
7+
use Aternos\BlobBuild\Client\ProjectListItem;
8+
use Aternos\BlobBuild\Model\Build as BuildModel;
9+
use Aternos\BlobBuild\Model\Project as ProjectModel;
10+
use Aternos\BlobBuild\Model\ProjectListItem as ProjectListItemModel;
11+
12+
class ProjectTest extends UnitTestCase
13+
{
14+
public function testSearch(): void
15+
{
16+
$this->addResponse($this->getFixture("projects/list/sound.json"));
17+
$projects = $this->client->searchProjects("sound");
18+
$this->assertNotEmpty($projects);
19+
$this->assertCount(1, $projects);
20+
$this->assertInstanceOf(ProjectListItem::class, $projects[0]);
21+
22+
$project = $projects[0];
23+
$this->assertSoundMuffler($project->getData());
24+
$this->assertEquals("https://blob.build/project/SoundMuffler", $project->getPageUrl());
25+
26+
$this->addResponse($this->getFixture("builds/SoundMuffler/latest.json"));
27+
$build = $project->getLatestBuildInDefaultChannel();
28+
$this->assertSoundMufflerBuild($build->getData());
29+
}
30+
31+
public function testGetProject(): void
32+
{
33+
$this->assertSoundMuffler($this->getProject()->getData());
34+
}
35+
36+
public function testGetPageUrl(): void
37+
{
38+
$project = $this->getProject();
39+
$this->assertEquals("https://blob.build/project/SoundMuffler", $project->getPageUrl());
40+
}
41+
42+
public function testGetBuilds(): void
43+
{
44+
$project = $this->getProject();
45+
46+
$this->addResponse($this->getFixture("builds/SoundMuffler/all.json"));
47+
$builds = $project->getBuilds();
48+
$this->assertArrayHasKey("Dev", $builds);
49+
$this->assertCount(1, $builds["Dev"]);
50+
$build = $builds["Dev"][0];
51+
$this->assertInstanceOf(Build::class, $build);
52+
$this->assertSoundMufflerBuild($build->getData());
53+
}
54+
55+
public function testGetLatestBuildInChannel(): void
56+
{
57+
$project = $this->getProject();
58+
59+
$this->addResponse($this->getFixture("builds/SoundMuffler/latest.json"));
60+
$build = $project->getLatestBuildInChannel("Dev");
61+
$this->assertSoundMufflerBuild($build->getData());
62+
}
63+
64+
public function testGetLatestBuildInDefaultChannel(): void
65+
{
66+
$project = $this->getProject();
67+
68+
$this->addResponse($this->getFixture("builds/SoundMuffler/latest.json"));
69+
$build = $project->getLatestBuildInDefaultChannel();
70+
$this->assertSoundMufflerBuild($build->getData());
71+
}
72+
73+
public function testGetBuild(): void
74+
{
75+
$project = $this->getProject();
76+
77+
$this->addResponse($this->getFixture("builds/SoundMuffler/latest.json"));
78+
$build = $project->getBuild("Dev", 1);
79+
$this->assertSoundMufflerBuild($build->getData());
80+
}
81+
82+
protected function getProject(): Project
83+
{
84+
$this->addResponse($this->getFixture("projects/SoundMuffler.json"));
85+
return $this->client->getProject("SoundMuffler");
86+
}
87+
}

0 commit comments

Comments
 (0)