namespace Shaarli\Bookmark;
-use PHPUnit\Framework\TestCase;
use Shaarli\Bookmark\Exception\InvalidBookmarkException;
+use Shaarli\TestCase;
/**
* Class BookmarkTest
$this->assertTrue($bookmark->isNote());
}
+ /**
+ * Test fromArray() with a link with a custom tags separator
+ */
+ public function testFromArrayCustomTagsSeparator()
+ {
+ $data = [
+ 'id' => 1,
+ 'tags' => ['tag1', 'tag2', 'chair'],
+ ];
+
+ $bookmark = (new Bookmark())->fromArray($data, '@');
+ $this->assertEquals($data['id'], $bookmark->getId());
+ $this->assertEquals($data['tags'], $bookmark->getTags());
+ $this->assertEquals('tag1@tag2@chair', $bookmark->getTagsString('@'));
+ }
+
+
/**
* Test validate() with a valid minimal bookmark
*/
$this->assertEquals(1, $bookmark->getId());
$this->assertEquals('abc', $bookmark->getShortUrl());
$this->assertEquals($date, $bookmark->getCreated());
- $this->assertEquals('?abc', $bookmark->getUrl());
- $this->assertEquals('?abc', $bookmark->getTitle());
+ $this->assertEquals('/shaare/abc', $bookmark->getUrl());
+ $this->assertEquals('/shaare/abc', $bookmark->getTitle());
$this->assertEquals('', $bookmark->getDescription());
$this->assertEquals([], $bookmark->getTags());
$this->assertEquals('', $bookmark->getTagsString());
$exception = $e;
}
$this->assertNotNull($exception);
- $this->assertContains('- ID: '. PHP_EOL, $exception->getMessage());
- }
-
- /**
- * Test validate() with a a bookmark with a non integer ID.
- */
- public function testValidateNotValidStringId()
- {
- $bookmark = new Bookmark();
- $bookmark->setId('str');
- $bookmark->setShortUrl('abc');
- $bookmark->setCreated(\DateTime::createFromFormat('Ymd_His', '20190514_200102'));
- $exception = null;
- try {
- $bookmark->validate();
- } catch (InvalidBookmarkException $e) {
- $exception = $e;
- }
- $this->assertNotNull($exception);
- $this->assertContains('- ID: str'. PHP_EOL, $exception->getMessage());
+ $this->assertContainsPolyfill('- ID: '. PHP_EOL, $exception->getMessage());
}
/**
$exception = $e;
}
$this->assertNotNull($exception);
- $this->assertContains('- ShortUrl: '. PHP_EOL, $exception->getMessage());
+ $this->assertContainsPolyfill('- ShortUrl: '. PHP_EOL, $exception->getMessage());
}
/**
$exception = $e;
}
$this->assertNotNull($exception);
- $this->assertContains('- Created: '. PHP_EOL, $exception->getMessage());
- }
-
- /**
- * Test validate() with a a bookmark with a bad created datetime.
- */
- public function testValidateNotValidBadCreated()
- {
- $bookmark = new Bookmark();
- $bookmark->setId(1);
- $bookmark->setShortUrl('abc');
- $bookmark->setCreated('hi!');
- $exception = null;
- try {
- $bookmark->validate();
- } catch (InvalidBookmarkException $e) {
- $exception = $e;
- }
- $this->assertNotNull($exception);
- $this->assertContains('- Created: Not a DateTime object'. PHP_EOL, $exception->getMessage());
+ $this->assertContainsPolyfill('- Created: '. PHP_EOL, $exception->getMessage());
}
/**
{
$bookmark = new Bookmark();
- $str = 'tag1 tag2 tag3.tag3-2, tag4 , -tag5 ';
+ $str = 'tag1 tag2 tag3.tag3-2 tag4 -tag5 ';
$bookmark->setTagsString($str);
$this->assertEquals(
[
$array = [
'tag1 ',
' tag2',
- 'tag3.tag3-2,',
- ', tag4',
- ', ',
+ 'tag3.tag3-2',
+ ' tag4',
+ ' ',
'-tag5 ',
];
$bookmark->setTags($array);
$bookmark->deleteTag('nope');
$this->assertEquals(['tag1', 'tag2', 'chair'], $bookmark->getTags());
}
+
+ /**
+ * Test shouldUpdateThumbnail() with bookmarks needing an update.
+ */
+ public function testShouldUpdateThumbnail(): void
+ {
+ $bookmark = (new Bookmark())->setUrl('http://domain.tld/with-image');
+
+ static::assertTrue($bookmark->shouldUpdateThumbnail());
+
+ $bookmark = (new Bookmark())
+ ->setUrl('http://domain.tld/with-image')
+ ->setThumbnail('unknown file')
+ ;
+
+ static::assertTrue($bookmark->shouldUpdateThumbnail());
+ }
+
+ /**
+ * Test shouldUpdateThumbnail() with bookmarks that should not update.
+ */
+ public function testShouldNotUpdateThumbnail(): void
+ {
+ $bookmark = (new Bookmark());
+
+ static::assertFalse($bookmark->shouldUpdateThumbnail());
+
+ $bookmark = (new Bookmark())
+ ->setUrl('ftp://domain.tld/other-protocol', ['ftp'])
+ ;
+
+ static::assertFalse($bookmark->shouldUpdateThumbnail());
+
+ $bookmark = (new Bookmark())
+ ->setUrl('http://domain.tld/with-image')
+ ->setThumbnail(__FILE__)
+ ;
+
+ static::assertFalse($bookmark->shouldUpdateThumbnail());
+
+ $bookmark = (new Bookmark())->setUrl('/shaare/abcdef');
+
+ static::assertFalse($bookmark->shouldUpdateThumbnail());
+ }
}