Skip to content
This repository has been archived by the owner on Feb 15, 2021. It is now read-only.

Commit

Permalink
Merge 208e260 into cbe0604
Browse files Browse the repository at this point in the history
  • Loading branch information
nleroy committed Nov 17, 2015
2 parents cbe0604 + 208e260 commit f497a51
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 1 deletion.
28 changes: 27 additions & 1 deletion src/EntryAPI.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ class EntryAPI extends OAuthProtectedService

const TRANSLATION_CREATED = 'TranslationCreated';

const TRANSLATION_WITHDRAWN = 'TranslationWithdrawn';

const KEYWORD_WITHDRAWN = 'KeywordWithdrawn';

const KEYWORD_PRIVATE = 'PrivateKeyword';
Expand Down Expand Up @@ -152,6 +154,29 @@ public function translate($eventId, Language $language, $fields)
return $rsp;
}

/**
* @param $eventId
* @param Language $language
* @return static
* @throws UnexpectedTranslationErrorException
*/
public function deleteTranslation($eventId, Language $language)
{
$request = $this->getClient()->delete(
$this->eventTranslationPath($eventId)
);

$request->getQuery()->set('lang', $language->getCode());

$response = $request->send();

$rsp = Rsp::fromResponseBody($response->getBody(true));

$this->guardTranslationResponseIsSuccessful($rsp);

return $rsp;
}

/**
* @param string $eventId
* @param Keyword $keyword
Expand Down Expand Up @@ -576,7 +601,8 @@ private function guardTranslationResponseIsSuccessful(Rsp $rsp)
{
$validCodes = [
self::TRANSLATION_CREATED,
self::TRANSLATION_MODIFIED
self::TRANSLATION_MODIFIED,
self::TRANSLATION_WITHDRAWN,
];
if (!in_array($rsp->getCode(), $validCodes)) {
throw new UnexpectedTranslationErrorException($rsp);
Expand Down
47 changes: 47 additions & 0 deletions test/EntryAPITest.php
Original file line number Diff line number Diff line change
Expand Up @@ -342,6 +342,53 @@ public function it_can_apply_labels()
);
}

/**
* @test
*/
public function it_can_delete_a_translation()
{
$response = (new Response(200))->setBody(
file_get_contents(__DIR__ . '/samples/TranslationWithdrawn.xml')
);
$this->mockPlugin->addResponse($response);

$xml = file_get_contents(__DIR__ . '/samples/valid_event.xml');

$eventId = '004aea08-e13d-48c9-b9eb-a18f20e6d44e';

$language = new Language('en');

$rsp = $this->entryAPI->deleteTranslation($eventId, $language);

$requests = $this->mockPlugin->getReceivedRequests();

/** @var RequestInterface|MessageInterface|EntityEnclosingRequestInterface $request */
$request = reset($requests);

$this->assertEquals(
'DELETE',
$request->getMethod()
);

$this->assertEquals(
'http://example.com/event/004aea08-e13d-48c9-b9eb-a18f20e6d44e/translations?lang=en',
$request->getUrl()
);

$expectedRsp = new Rsp(
'0.1',
Rsp::LEVEL_INFO,
'TranslationWithdrawn',
'http://test.rest.uitdatabank.be/api/v3/event/004aea08-e13d-48c9-b9eb-a18f20e6d44e',
''
);

$this->assertEquals(
$expectedRsp,
$rsp
);
}

public function createCulturefeedItemEvent($cdbid)
{
$event = new CultureFeed_Cdb_Item_Event();
Expand Down
5 changes: 5 additions & 0 deletions test/samples/TranslationWithdrawn.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<rsp level="INFO" version="0.1">
<code>TranslationWithdrawn</code>
<link>http://test.rest.uitdatabank.be/api/v3/event/004aea08-e13d-48c9-b9eb-a18f20e6d44e</link>
</rsp>

0 comments on commit f497a51

Please sign in to comment.