Skip to content

Commit

Permalink
fix issue #6 : merge-fields pagination > 10
Browse files Browse the repository at this point in the history
  • Loading branch information
Nightbr committed Dec 17, 2016
1 parent 28255af commit 45616b1
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 1 deletion.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
bin
vendor
docs
composer.lock
58 changes: 57 additions & 1 deletion spec/Subscriber/ListRepositorySpec.php
Original file line number Diff line number Diff line change
Expand Up @@ -84,12 +84,68 @@ function it_finds_merge_tags(MailChimp $mailchimp)
'merge_fields' => [
['tag' => 'EMAIL', 'name' => 'email'],
['tag' => 'FOO', 'name' => 'Bar'],
]
],
'total_items' => 2
]);

$this->getMergeFields(123)->shouldReturn([['tag' => 'EMAIL', 'name' => 'email'], ['tag' => 'FOO', 'name' => 'Bar']]);
}

function it_finds_merge_tags_more_than_10(MailChimp $mailchimp)
{
$mailchimp
->get("lists/123/merge-fields")
->willReturn(
[
'merge_fields' => [
['tag' => 'FOO1', 'name' => 'Bar'],
['tag' => 'FOO2', 'name' => 'Bar'],
['tag' => 'FOO3', 'name' => 'Bar'],
['tag' => 'FOO4', 'name' => 'Bar'],
['tag' => 'FOO5', 'name' => 'Bar'],
['tag' => 'FOO6', 'name' => 'Bar'],
['tag' => 'FOO8', 'name' => 'Bar'],
['tag' => 'FOO9', 'name' => 'Bar'],
['tag' => 'FOO10', 'name' => 'Bar'],
],
'total_items' => 13
]);

$mailchimp
->get("lists/123/merge-fields", array("count" => 13))
->willReturn(
[
'merge_fields' => [
['tag' => 'FOO1', 'name' => 'Bar'],
['tag' => 'FOO2', 'name' => 'Bar'],
['tag' => 'FOO3', 'name' => 'Bar'],
['tag' => 'FOO4', 'name' => 'Bar'],
['tag' => 'FOO5', 'name' => 'Bar'],
['tag' => 'FOO6', 'name' => 'Bar'],
['tag' => 'FOO8', 'name' => 'Bar'],
['tag' => 'FOO9', 'name' => 'Bar'],
['tag' => 'FOO10', 'name' => 'Bar'],
['tag' => 'FOO12', 'name' => 'Bar'],
['tag' => 'FOO13', 'name' => 'Bar'],
],
'total_items' => 13
]);

$this->getMergeFields(123)->shouldReturn([
['tag' => 'FOO1', 'name' => 'Bar'],
['tag' => 'FOO2', 'name' => 'Bar'],
['tag' => 'FOO3', 'name' => 'Bar'],
['tag' => 'FOO4', 'name' => 'Bar'],
['tag' => 'FOO5', 'name' => 'Bar'],
['tag' => 'FOO6', 'name' => 'Bar'],
['tag' => 'FOO8', 'name' => 'Bar'],
['tag' => 'FOO9', 'name' => 'Bar'],
['tag' => 'FOO10', 'name' => 'Bar'],
['tag' => 'FOO12', 'name' => 'Bar'],
['tag' => 'FOO13', 'name' => 'Bar'],
]);
}

function it_deletes_a_merge_tag(MailChimp $mailchimp)
{
$mailchimp->delete("lists/123/merge-fields/foo")->shouldBeCalled();
Expand Down
6 changes: 6 additions & 0 deletions src/Subscriber/ListRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
class ListRepository
{
const SUBSCRIBER_BATCH_SIZE = 300;
const MAILCHIMP_DEFAULT_COUNT_LIMIT = 10;

public function __construct(MailChimp $mailchimp)
{
Expand Down Expand Up @@ -317,6 +318,11 @@ public function getMergeFields($listId)
{
$result = $this->mailchimp->get("lists/$listId/merge-fields");

# Handle mailchimp default count limit
if($result['total_items'] > self::MAILCHIMP_DEFAULT_COUNT_LIMIT){
$result = $this->mailchimp->get("lists/$listId/merge-fields", array("count" => $result['total_items']));
}

if(!$this->mailchimp->success()){
throw new \RuntimeException($this->mailchimp->getLastError());
}
Expand Down

0 comments on commit 45616b1

Please sign in to comment.