Skip to content

Commit

Permalink
Merge pull request #316 from creative-commoners/pulls/4.0/candeletetest
Browse files Browse the repository at this point in the history
MNT Add extension in finally block
  • Loading branch information
GuySartorelli authored Aug 12, 2024
2 parents 04c0dab + 1f9eb57 commit e19de2b
Showing 1 changed file with 30 additions and 27 deletions.
57 changes: 30 additions & 27 deletions tests/php/Controllers/LinkFieldControllerTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -537,38 +537,41 @@ public function testLinkArchive(
int $expectedCode
): void {
TestPhoneLink::$fail = $fail;
if ($fail == 'can-delete') {
if ($fail === 'can-delete') {
// Remove the Versioned extension because there's logic in LinkFieldController
// to use either canArchive() or canDelete() based on the presence of the Versioned extension
// Note that you must remove the extension on the base class rather than a TestOnly subclass
Link::remove_extension(Versioned::class);
}
$owner = $this->getFixtureLinkOwner();
$ownerID = $owner->ID;
$ownerClass = urlencode($owner->ClassName);
$ownerRelation = 'Link';
$ownerLinkID = $owner->LinkID;
$id = $this->getID($idType);
$fixtureID = $this->getFixtureLink()->ID;
if ($id === -1) {
$url = "/admin/linkfield/delete?ownerID=$ownerID&ownerClass=$ownerClass&ownerRelation=$ownerRelation";
} else {
$url = "/admin/linkfield/delete/$id?ownerID=$ownerID&ownerClass=$ownerClass&ownerRelation=$ownerRelation";
}
$headers = [];
if ($fail !== 'csrf-token') {
$headers = array_merge($headers, $this->csrfTokenheader());
}
$response = $this->mainSession->sendRequest('DELETE', $url, [], $headers);
$this->assertSame('application/json', $response->getHeader('Content-type'));
$this->assertSame($expectedCode, $response->getStatusCode());
if ($expectedCode >= 400) {
$this->assertNotNull(TestPhoneLink::get()->byID($fixtureID));
} else {
$this->assertNull(TestPhoneLink::get()->byID($fixtureID));
}
if ($fail == 'can-delete') {
Link::add_extension(Versioned::class);
try {
$owner = $this->getFixtureLinkOwner();
$ownerID = $owner->ID;
$ownerClass = urlencode($owner->ClassName);
$ownerRelation = 'Link';
$ownerLinkID = $owner->LinkID;
$id = $this->getID($idType);
$fixtureID = $this->getFixtureLink()->ID;
if ($id === -1) {
$url = "/admin/linkfield/delete?ownerID=$ownerID&ownerClass=$ownerClass&ownerRelation=$ownerRelation";
} else {
$url = "/admin/linkfield/delete/$id?ownerID=$ownerID&ownerClass=$ownerClass&ownerRelation=$ownerRelation";
}
$headers = [];
if ($fail !== 'csrf-token') {
$headers = array_merge($headers, $this->csrfTokenheader());
}
$response = $this->mainSession->sendRequest('DELETE', $url, [], $headers);
$this->assertSame('application/json', $response->getHeader('Content-type'));
$this->assertSame($expectedCode, $response->getStatusCode());
if ($expectedCode >= 400) {
$this->assertNotNull(TestPhoneLink::get()->byID($fixtureID));
} else {
$this->assertNull(TestPhoneLink::get()->byID($fixtureID));
}
} finally {
if ($fail === 'can-delete') {
Link::add_extension(Versioned::class);
}
}
}

Expand Down

0 comments on commit e19de2b

Please sign in to comment.