Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
ecoologic committed Oct 20, 2023
1 parent 73457ea commit ea8e02c
Show file tree
Hide file tree
Showing 6 changed files with 103 additions and 3 deletions.
3 changes: 2 additions & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@ services:
volumes:
- .:/app
- vendor:/app/vendor
command: vendor/bin/phpunit --testsuite "Zendesk API Unit Test Suites"
# command: vendor/bin/phpunit --testsuite "Zendesk API Unit Test Suites"
# command: vendor/bin/phpunit tests/Zendesk/API/UnitTests/Traits/Utility/PaginationTest.php
command: vendor/bin/phpunit tests/Zendesk/API/UnitTests/Core/TicketsTest.php

volumes:
vendor:
1 change: 1 addition & 0 deletions src/Zendesk/API/Resources/Core/Locales.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ class Locales extends ResourceAbstract
*/
protected function setUpRoutes()
{
// TODO: these
$this->setRoutes([
'findAllPublic' => "{$this->resourceName}/public.json",
'findAllAgent' => "{$this->resourceName}/agent.json",
Expand Down
1 change: 1 addition & 0 deletions src/Zendesk/API/Traits/Utility/Pagination/CbpStrategy.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ public function getPage()
if ($this->afterCursor) {
$params['page[after]'] = $this->afterCursor;
}
// TODO: all methods $this->resourcesRoot->{$this->findMethod}($params)
$response = $this->resourcesRoot->findAll($params);
$this->afterCursor = $response->meta->has_more ? $response->meta->after_cursor : null;
return $response->{$this->resourcesKey};
Expand Down
20 changes: 20 additions & 0 deletions src/Zendesk/API/Traits/Utility/Pagination/ObpStrategy.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php

namespace Zendesk\API\Traits\Utility\Pagination;

class ObpStrategy extends PaginationStrategy
{
private $pageNumber = 0;

public function getPage()
{
++$this->pageNumber;
$params = ['page' => $this->pageNumber, 'page_size' => $this->pageSize];
$response = $this->resourcesRoot->findAll($params);
return $response->{$this->resourcesKey};
}

public function isEndOfPage() {
return true; // TODO: explain
}
}
26 changes: 25 additions & 1 deletion tests/Zendesk/API/UnitTests/Core/TicketsTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,30 @@ public function setUp()
parent::setUp();
}

/**
* Test the iterator
*/
public function testIterator()
{
$this->mockApiResponses([
new Response(200, [], json_encode([
'tickets' => [$this->testTicket],
'meta' => ['has_more' => true, 'after_cursor' => 'some_cursor']
])),
new Response(200, [], json_encode([
'tickets' => [$this->testTicket2],
'meta' => ['has_more' => false, 'after_cursor' => null]
]))
]);

$iterator = $this->client->tickets()->iterator();

$actual = iterator_to_array($iterator);
$this->assertCount(2, $actual);
$this->assertEquals($this->testTicket['subject'], $actual[0]->subject);
$this->assertEquals($this->testTicket2['subject'], $actual[1]->subject);
}

/**
* Tests if the client can call and build the tickets endpoint with the proper sideloads
*/
Expand Down Expand Up @@ -178,7 +202,7 @@ public function testCreateWithAttachment()
'postFields' => $postFields,
]);
}

/**
* Tests that we can create the ticket with an async parameter which will add `async=true` to the query parameters
*/
Expand Down
55 changes: 54 additions & 1 deletion tests/Zendesk/API/UnitTests/Traits/Utility/PaginationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ public function findAll($params)
}
}

// TODO: test resources
class PaginationTest extends BasicTest
{
public function testFetchesTickets()
Expand Down Expand Up @@ -76,3 +75,57 @@ public function testFetchesUsers()
], $users);
}
}

// agl "use (FindAll|Default)" src
// src/Zendesk/API/Resources/Core/Activities.php
// src/Zendesk/API/Resources/Core/AppInstallationLocations.php
// src/Zendesk/API/Resources/Core/AppInstallations.php
// src/Zendesk/API/Resources/Core/AppLocations.php
// src/Zendesk/API/Resources/Core/AuditLogs.php
// src/Zendesk/API/Resources/Core/Automations.php
// src/Zendesk/API/Resources/Core/Bookmarks.php
// src/Zendesk/API/Resources/Core/Brands.php
// src/Zendesk/API/Resources/Core/CustomRoles.php
// src/Zendesk/API/Resources/Core/DynamicContentItems.php
// src/Zendesk/API/Resources/Core/DynamicContentItemVariants.php
// src/Zendesk/API/Resources/Core/GroupMemberships.php
// src/Zendesk/API/Resources/Core/Groups.php
// src/Zendesk/API/Resources/Core/Locales.php
// src/Zendesk/API/Resources/Core/Macros.php
// src/Zendesk/API/Resources/Core/OAuthClients.php
// src/Zendesk/API/Resources/Core/OAuthTokens.php
// src/Zendesk/API/Resources/Core/OrganizationFields.php
// src/Zendesk/API/Resources/Core/OrganizationMemberships.php
// src/Zendesk/API/Resources/Core/Organizations.php
// src/Zendesk/API/Resources/Core/OrganizationSubscriptions.php
// src/Zendesk/API/Resources/Core/OrganizationTickets.php
// src/Zendesk/API/Resources/Core/RequestComments.php
// src/Zendesk/API/Resources/Core/Requests.php
// src/Zendesk/API/Resources/Core/SatisfactionRatings.php
// src/Zendesk/API/Resources/Core/Sessions.php
// src/Zendesk/API/Resources/Core/SharingAgreements.php
// src/Zendesk/API/Resources/Core/SlaPolicies.php
// src/Zendesk/API/Resources/Core/SupportAddresses.php
// src/Zendesk/API/Resources/Core/SuspendedTickets.php
// src/Zendesk/API/Resources/Core/Tags.php
// src/Zendesk/API/Resources/Core/Targets.php
// src/Zendesk/API/Resources/Core/TicketAudits.php
// src/Zendesk/API/Resources/Core/TicketComments.php
// src/Zendesk/API/Resources/Core/TicketFields.php
// src/Zendesk/API/Resources/Core/TicketFieldsOptions.php
// src/Zendesk/API/Resources/Core/TicketForms.php
// src/Zendesk/API/Resources/Core/TicketMetrics.php
// src/Zendesk/API/Resources/Core/Tickets.php
// src/Zendesk/API/Resources/Core/Translations.php
// src/Zendesk/API/Resources/Core/Triggers.php
// src/Zendesk/API/Resources/Core/TwitterHandles.php
// src/Zendesk/API/Resources/Core/UserFields.php
// src/Zendesk/API/Resources/Core/UserIdentities.php
// src/Zendesk/API/Resources/Core/Users.php
// src/Zendesk/API/Resources/Core/Views.php
// src/Zendesk/API/Resources/Core/Webhooks.php
// src/Zendesk/API/Resources/HelpCenter/Articles.php
// src/Zendesk/API/Resources/HelpCenter/Categories.php
// src/Zendesk/API/Resources/HelpCenter/Sections.php
// src/Zendesk/API/Resources/Voice/PhoneNumbers.php
// src/Zendesk/API/Traits/Resource/Defaults.php

0 comments on commit ea8e02c

Please sign in to comment.