Use NetscapeBookmarkUtils object instance instead of static calls

This commit is contained in:
ArthurHoaro 2020-06-17 15:55:31 +02:00
parent 3447d888d7
commit e8a10f312a
6 changed files with 145 additions and 107 deletions

View file

@ -11,6 +11,7 @@
use Shaarli\Formatter\FormatterFactory; use Shaarli\Formatter\FormatterFactory;
use Shaarli\History; use Shaarli\History;
use Shaarli\Http\HttpAccess; use Shaarli\Http\HttpAccess;
use Shaarli\Netscape\NetscapeBookmarkUtils;
use Shaarli\Plugin\PluginManager; use Shaarli\Plugin\PluginManager;
use Shaarli\Render\PageBuilder; use Shaarli\Render\PageBuilder;
use Shaarli\Render\PageCacheManager; use Shaarli\Render\PageCacheManager;
@ -118,6 +119,10 @@ public function build(): ShaarliContainer
return new HttpAccess(); return new HttpAccess();
}; };
$container['netscapeBookmarkUtils'] = function (ShaarliContainer $container): NetscapeBookmarkUtils {
return new NetscapeBookmarkUtils($container->bookmarkService, $container->conf, $container->history);
};
return $container; return $container;
} }
} }

View file

@ -10,6 +10,7 @@
use Shaarli\Formatter\FormatterFactory; use Shaarli\Formatter\FormatterFactory;
use Shaarli\History; use Shaarli\History;
use Shaarli\Http\HttpAccess; use Shaarli\Http\HttpAccess;
use Shaarli\Netscape\NetscapeBookmarkUtils;
use Shaarli\Plugin\PluginManager; use Shaarli\Plugin\PluginManager;
use Shaarli\Render\PageBuilder; use Shaarli\Render\PageBuilder;
use Shaarli\Render\PageCacheManager; use Shaarli\Render\PageCacheManager;
@ -30,6 +31,7 @@
* @property History $history * @property History $history
* @property HttpAccess $httpAccess * @property HttpAccess $httpAccess
* @property LoginManager $loginManager * @property LoginManager $loginManager
* @property NetscapeBookmarkUtils $netscapeBookmarkUtils
* @property PageBuilder $pageBuilder * @property PageBuilder $pageBuilder
* @property PageCacheManager $pageCacheManager * @property PageCacheManager $pageCacheManager
* @property PluginManager $pluginManager * @property PluginManager $pluginManager

View file

@ -16,10 +16,24 @@
/** /**
* Utilities to import and export bookmarks using the Netscape format * Utilities to import and export bookmarks using the Netscape format
* TODO: Not static, use a container.
*/ */
class NetscapeBookmarkUtils class NetscapeBookmarkUtils
{ {
/** @var BookmarkServiceInterface */
protected $bookmarkService;
/** @var ConfigManager */
protected $conf;
/** @var History */
protected $history;
public function __construct(BookmarkServiceInterface $bookmarkService, ConfigManager $conf, History $history)
{
$this->bookmarkService = $bookmarkService;
$this->conf = $conf;
$this->history = $history;
}
/** /**
* Filters bookmarks and adds Netscape-formatted fields * Filters bookmarks and adds Netscape-formatted fields
@ -28,18 +42,16 @@ class NetscapeBookmarkUtils
* - timestamp link addition date, using the Unix epoch format * - timestamp link addition date, using the Unix epoch format
* - taglist comma-separated tag list * - taglist comma-separated tag list
* *
* @param BookmarkServiceInterface $bookmarkService Link datastore
* @param BookmarkFormatter $formatter instance * @param BookmarkFormatter $formatter instance
* @param string $selection Which bookmarks to export: (all|private|public) * @param string $selection Which bookmarks to export: (all|private|public)
* @param bool $prependNoteUrl Prepend note permalinks with the server's URL * @param bool $prependNoteUrl Prepend note permalinks with the server's URL
* @param string $indexUrl Absolute URL of the Shaarli index page * @param string $indexUrl Absolute URL of the Shaarli index page
* *
* @return array The bookmarks to be exported, with additional fields * @return array The bookmarks to be exported, with additional fields
*@throws Exception Invalid export selection
* *
* @throws Exception Invalid export selection
*/ */
public static function filterAndFormat( public function filterAndFormat(
$bookmarkService,
$formatter, $formatter,
$selection, $selection,
$prependNoteUrl, $prependNoteUrl,
@ -51,7 +63,7 @@ public static function filterAndFormat(
} }
$bookmarkLinks = array(); $bookmarkLinks = array();
foreach ($bookmarkService->search([], $selection) as $bookmark) { foreach ($this->bookmarkService->search([], $selection) as $bookmark) {
$link = $formatter->format($bookmark); $link = $formatter->format($bookmark);
$link['taglist'] = implode(',', $bookmark->getTags()); $link['taglist'] = implode(',', $bookmark->getTags());
if ($bookmark->isNote() && $prependNoteUrl) { if ($bookmark->isNote() && $prependNoteUrl) {
@ -64,53 +76,15 @@ public static function filterAndFormat(
return $bookmarkLinks; return $bookmarkLinks;
} }
/**
* Generates an import status summary
*
* @param string $filename name of the file to import
* @param int $filesize size of the file to import
* @param int $importCount how many bookmarks were imported
* @param int $overwriteCount how many bookmarks were overwritten
* @param int $skipCount how many bookmarks were skipped
* @param int $duration how many seconds did the import take
*
* @return string Summary of the bookmark import status
*/
private static function importStatus(
$filename,
$filesize,
$importCount = 0,
$overwriteCount = 0,
$skipCount = 0,
$duration = 0
) {
$status = sprintf(t('File %s (%d bytes) '), $filename, $filesize);
if ($importCount == 0 && $overwriteCount == 0 && $skipCount == 0) {
$status .= t('has an unknown file format. Nothing was imported.');
} else {
$status .= vsprintf(
t(
'was successfully processed in %d seconds: '
. '%d bookmarks imported, %d bookmarks overwritten, %d bookmarks skipped.'
),
[$duration, $importCount, $overwriteCount, $skipCount]
);
}
return $status;
}
/** /**
* Imports Web bookmarks from an uploaded Netscape bookmark dump * Imports Web bookmarks from an uploaded Netscape bookmark dump
* *
* @param array $post Server $_POST parameters * @param array $post Server $_POST parameters
* @param array $files Server $_FILES parameters * @param array $files Server $_FILES parameters
* @param BookmarkServiceInterface $bookmarkService Loaded LinkDB instance
* @param ConfigManager $conf instance
* @param History $history History instance
* *
* @return string Summary of the bookmark import status * @return string Summary of the bookmark import status
*/ */
public static function import($post, $files, $bookmarkService, $conf, $history) public function import($post, $files)
{ {
$start = time(); $start = time();
$filename = $files['filetoupload']['name']; $filename = $files['filetoupload']['name'];
@ -141,11 +115,11 @@ public static function import($post, $files, $bookmarkService, $conf, $history)
true, // nested tag support true, // nested tag support
$defaultTags, // additional user-specified tags $defaultTags, // additional user-specified tags
strval(1 - $defaultPrivacy), // defaultPub = 1 - defaultPrivacy strval(1 - $defaultPrivacy), // defaultPub = 1 - defaultPrivacy
$conf->get('resource.data_dir') // log path, will be overridden $this->conf->get('resource.data_dir') // log path, will be overridden
); );
$logger = new Logger( $logger = new Logger(
$conf->get('resource.data_dir'), $this->conf->get('resource.data_dir'),
!$conf->get('dev.debug') ? LogLevel::INFO : LogLevel::DEBUG, !$this->conf->get('dev.debug') ? LogLevel::INFO : LogLevel::DEBUG,
[ [
'prefix' => 'import.', 'prefix' => 'import.',
'extension' => 'log', 'extension' => 'log',
@ -171,7 +145,7 @@ public static function import($post, $files, $bookmarkService, $conf, $history)
$private = 0; $private = 0;
} }
$link = $bookmarkService->findByUrl($bkm['uri']); $link = $this->bookmarkService->findByUrl($bkm['uri']);
$existingLink = $link !== null; $existingLink = $link !== null;
if (! $existingLink) { if (! $existingLink) {
$link = new Bookmark(); $link = new Bookmark();
@ -193,20 +167,21 @@ public static function import($post, $files, $bookmarkService, $conf, $history)
} }
$link->setTitle($bkm['title']); $link->setTitle($bkm['title']);
$link->setUrl($bkm['uri'], $conf->get('security.allowed_protocols')); $link->setUrl($bkm['uri'], $this->conf->get('security.allowed_protocols'));
$link->setDescription($bkm['note']); $link->setDescription($bkm['note']);
$link->setPrivate($private); $link->setPrivate($private);
$link->setTagsString($bkm['tags']); $link->setTagsString($bkm['tags']);
$bookmarkService->addOrSet($link, false); $this->bookmarkService->addOrSet($link, false);
$importCount++; $importCount++;
} }
$bookmarkService->save(); $this->bookmarkService->save();
$history->importLinks(); $this->history->importLinks();
$duration = time() - $start; $duration = time() - $start;
return self::importStatus(
return $this->importStatus(
$filename, $filename,
$filesize, $filesize,
$importCount, $importCount,
@ -215,4 +190,39 @@ public static function import($post, $files, $bookmarkService, $conf, $history)
$duration $duration
); );
} }
/**
* Generates an import status summary
*
* @param string $filename name of the file to import
* @param int $filesize size of the file to import
* @param int $importCount how many bookmarks were imported
* @param int $overwriteCount how many bookmarks were overwritten
* @param int $skipCount how many bookmarks were skipped
* @param int $duration how many seconds did the import take
*
* @return string Summary of the bookmark import status
*/
protected function importStatus(
$filename,
$filesize,
$importCount = 0,
$overwriteCount = 0,
$skipCount = 0,
$duration = 0
) {
$status = sprintf(t('File %s (%d bytes) '), $filename, $filesize);
if ($importCount == 0 && $overwriteCount == 0 && $skipCount == 0) {
$status .= t('has an unknown file format. Nothing was imported.');
} else {
$status .= vsprintf(
t(
'was successfully processed in %d seconds: '
. '%d bookmarks imported, %d bookmarks overwritten, %d bookmarks skipped.'
),
[$duration, $importCount, $overwriteCount, $skipCount]
);
}
return $status;
}
} }

View file

@ -662,13 +662,8 @@ function renderPage($conf, $pluginManager, $bookmarkService, $history, $sessionM
if (! $sessionManager->checkToken($_POST['token'])) { if (! $sessionManager->checkToken($_POST['token'])) {
die('Wrong token.'); die('Wrong token.');
} }
$status = NetscapeBookmarkUtils::import( $netscapeBookmarkUtils = new NetscapeBookmarkUtils($bookmarkService, $conf, $history);
$_POST, $status = $netscapeBookmarkUtils->import($_POST, $_FILES);
$_FILES,
$bookmarkService,
$conf,
$history
);
echo '<script>alert("'.$status.'");document.location=\'./?do=' echo '<script>alert("'.$status.'");document.location=\'./?do='
.Router::$PAGE_IMPORT .'\';</script>'; .Router::$PAGE_IMPORT .'\';</script>';
exit; exit;

View file

@ -1,11 +1,12 @@
<?php <?php
namespace Shaarli\Netscape; namespace Shaarli\Netscape;
use PHPUnit\Framework\TestCase;
use Shaarli\Bookmark\BookmarkFileService; use Shaarli\Bookmark\BookmarkFileService;
use Shaarli\Bookmark\LinkDB;
use Shaarli\Config\ConfigManager; use Shaarli\Config\ConfigManager;
use Shaarli\Formatter\FormatterFactory;
use Shaarli\Formatter\BookmarkFormatter; use Shaarli\Formatter\BookmarkFormatter;
use Shaarli\Formatter\FormatterFactory;
use Shaarli\History; use Shaarli\History;
require_once 'tests/utils/ReferenceLinkDB.php'; require_once 'tests/utils/ReferenceLinkDB.php';
@ -13,13 +14,18 @@
/** /**
* Netscape bookmark export * Netscape bookmark export
*/ */
class BookmarkExportTest extends \PHPUnit\Framework\TestCase class BookmarkExportTest extends TestCase
{ {
/** /**
* @var string datastore to test write operations * @var string datastore to test write operations
*/ */
protected static $testDatastore = 'sandbox/datastore.php'; protected static $testDatastore = 'sandbox/datastore.php';
/**
* @var ConfigManager instance.
*/
protected static $conf;
/** /**
* @var \ReferenceLinkDB instance. * @var \ReferenceLinkDB instance.
*/ */
@ -35,19 +41,38 @@ class BookmarkExportTest extends \PHPUnit\Framework\TestCase
*/ */
protected static $formatter; protected static $formatter;
/**
* @var History instance
*/
protected static $history;
/**
* @var NetscapeBookmarkUtils
*/
protected $netscapeBookmarkUtils;
/** /**
* Instantiate reference data * Instantiate reference data
*/ */
public static function setUpBeforeClass() public static function setUpBeforeClass()
{ {
$conf = new ConfigManager('tests/utils/config/configJson'); static::$conf = new ConfigManager('tests/utils/config/configJson');
$conf->set('resource.datastore', self::$testDatastore); static::$conf->set('resource.datastore', static::$testDatastore);
self::$refDb = new \ReferenceLinkDB(); static::$refDb = new \ReferenceLinkDB();
self::$refDb->write(self::$testDatastore); static::$refDb->write(static::$testDatastore);
$history = new History('sandbox/history.php'); static::$history = new History('sandbox/history.php');
self::$bookmarkService = new BookmarkFileService($conf, $history, true); static::$bookmarkService = new BookmarkFileService(static::$conf, static::$history, true);
$factory = new FormatterFactory($conf, true); $factory = new FormatterFactory(static::$conf, true);
self::$formatter = $factory->getFormatter('raw'); static::$formatter = $factory->getFormatter('raw');
}
public function setUp(): void
{
$this->netscapeBookmarkUtils = new NetscapeBookmarkUtils(
static::$bookmarkService,
static::$conf,
static::$history
);
} }
/** /**
@ -57,8 +82,7 @@ public static function setUpBeforeClass()
*/ */
public function testFilterAndFormatInvalid() public function testFilterAndFormatInvalid()
{ {
NetscapeBookmarkUtils::filterAndFormat( $this->netscapeBookmarkUtils->filterAndFormat(
self::$bookmarkService,
self::$formatter, self::$formatter,
'derp', 'derp',
false, false,
@ -71,8 +95,7 @@ public function testFilterAndFormatInvalid()
*/ */
public function testFilterAndFormatAll() public function testFilterAndFormatAll()
{ {
$links = NetscapeBookmarkUtils::filterAndFormat( $links = $this->netscapeBookmarkUtils->filterAndFormat(
self::$bookmarkService,
self::$formatter, self::$formatter,
'all', 'all',
false, false,
@ -97,8 +120,7 @@ public function testFilterAndFormatAll()
*/ */
public function testFilterAndFormatPrivate() public function testFilterAndFormatPrivate()
{ {
$links = NetscapeBookmarkUtils::filterAndFormat( $links = $this->netscapeBookmarkUtils->filterAndFormat(
self::$bookmarkService,
self::$formatter, self::$formatter,
'private', 'private',
false, false,
@ -123,8 +145,7 @@ public function testFilterAndFormatPrivate()
*/ */
public function testFilterAndFormatPublic() public function testFilterAndFormatPublic()
{ {
$links = NetscapeBookmarkUtils::filterAndFormat( $links = $this->netscapeBookmarkUtils->filterAndFormat(
self::$bookmarkService,
self::$formatter, self::$formatter,
'public', 'public',
false, false,
@ -149,8 +170,7 @@ public function testFilterAndFormatPublic()
*/ */
public function testFilterAndFormatDoNotPrependNoteUrl() public function testFilterAndFormatDoNotPrependNoteUrl()
{ {
$links = NetscapeBookmarkUtils::filterAndFormat( $links = $this->netscapeBookmarkUtils->filterAndFormat(
self::$bookmarkService,
self::$formatter, self::$formatter,
'public', 'public',
false, false,
@ -168,8 +188,7 @@ public function testFilterAndFormatDoNotPrependNoteUrl()
public function testFilterAndFormatPrependNoteUrl() public function testFilterAndFormatPrependNoteUrl()
{ {
$indexUrl = 'http://localhost:7469/shaarli/'; $indexUrl = 'http://localhost:7469/shaarli/';
$links = NetscapeBookmarkUtils::filterAndFormat( $links = $this->netscapeBookmarkUtils->filterAndFormat(
self::$bookmarkService,
self::$formatter, self::$formatter,
'public', 'public',
true, true,

View file

@ -1,11 +1,12 @@
<?php <?php
namespace Shaarli\Netscape; namespace Shaarli\Netscape;
use DateTime; use DateTime;
use PHPUnit\Framework\TestCase;
use Shaarli\Bookmark\Bookmark; use Shaarli\Bookmark\Bookmark;
use Shaarli\Bookmark\BookmarkFilter;
use Shaarli\Bookmark\BookmarkFileService; use Shaarli\Bookmark\BookmarkFileService;
use Shaarli\Bookmark\LinkDB; use Shaarli\Bookmark\BookmarkFilter;
use Shaarli\Config\ConfigManager; use Shaarli\Config\ConfigManager;
use Shaarli\History; use Shaarli\History;
@ -31,7 +32,7 @@ function file2array($filename)
/** /**
* Netscape bookmark import * Netscape bookmark import
*/ */
class BookmarkImportTest extends \PHPUnit\Framework\TestCase class BookmarkImportTest extends TestCase
{ {
/** /**
* @var string datastore to test write operations * @var string datastore to test write operations
@ -63,6 +64,11 @@ class BookmarkImportTest extends \PHPUnit\Framework\TestCase
*/ */
protected $history; protected $history;
/**
* @var NetscapeBookmarkUtils
*/
protected $netscapeBookmarkUtils;
/** /**
* @var string Save the current timezone. * @var string Save the current timezone.
*/ */
@ -91,6 +97,7 @@ protected function setUp()
$this->conf->set('resource.datastore', self::$testDatastore); $this->conf->set('resource.datastore', self::$testDatastore);
$this->history = new History(self::$historyFilePath); $this->history = new History(self::$historyFilePath);
$this->bookmarkService = new BookmarkFileService($this->conf, $this->history, true); $this->bookmarkService = new BookmarkFileService($this->conf, $this->history, true);
$this->netscapeBookmarkUtils = new NetscapeBookmarkUtils($this->bookmarkService, $this->conf, $this->history);
} }
/** /**
@ -115,7 +122,7 @@ public function testImportEmptyData()
$this->assertEquals( $this->assertEquals(
'File empty.htm (0 bytes) has an unknown file format.' 'File empty.htm (0 bytes) has an unknown file format.'
.' Nothing was imported.', .' Nothing was imported.',
NetscapeBookmarkUtils::import(null, $files, null, $this->conf, $this->history) $this->netscapeBookmarkUtils->import(null, $files)
); );
$this->assertEquals(0, $this->bookmarkService->count()); $this->assertEquals(0, $this->bookmarkService->count());
} }
@ -128,7 +135,7 @@ public function testImportNoDoctype()
$files = file2array('no_doctype.htm'); $files = file2array('no_doctype.htm');
$this->assertEquals( $this->assertEquals(
'File no_doctype.htm (350 bytes) has an unknown file format. Nothing was imported.', 'File no_doctype.htm (350 bytes) has an unknown file format. Nothing was imported.',
NetscapeBookmarkUtils::import(null, $files, null, $this->conf, $this->history) $this->netscapeBookmarkUtils->import(null, $files)
); );
$this->assertEquals(0, $this->bookmarkService->count()); $this->assertEquals(0, $this->bookmarkService->count());
} }
@ -142,7 +149,7 @@ public function testImportLowecaseDoctype()
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File lowercase_doctype.htm (386 bytes) was successfully processed in %d seconds:' 'File lowercase_doctype.htm (386 bytes) was successfully processed in %d seconds:'
.' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', .' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
NetscapeBookmarkUtils::import(null, $files, $this->bookmarkService, $this->conf, $this->history) $this->netscapeBookmarkUtils->import(null, $files)
); );
$this->assertEquals(2, $this->bookmarkService->count()); $this->assertEquals(2, $this->bookmarkService->count());
} }
@ -157,7 +164,7 @@ public function testImportInternetExplorerEncoding()
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File internet_explorer_encoding.htm (356 bytes) was successfully processed in %d seconds:' 'File internet_explorer_encoding.htm (356 bytes) was successfully processed in %d seconds:'
.' 1 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', .' 1 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
NetscapeBookmarkUtils::import([], $files, $this->bookmarkService, $this->conf, $this->history) $this->netscapeBookmarkUtils->import([], $files)
); );
$this->assertEquals(1, $this->bookmarkService->count()); $this->assertEquals(1, $this->bookmarkService->count());
$this->assertEquals(0, $this->bookmarkService->count(BookmarkFilter::$PRIVATE)); $this->assertEquals(0, $this->bookmarkService->count(BookmarkFilter::$PRIVATE));
@ -185,7 +192,7 @@ public function testImportNested()
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_nested.htm (1337 bytes) was successfully processed in %d seconds:' 'File netscape_nested.htm (1337 bytes) was successfully processed in %d seconds:'
.' 8 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', .' 8 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
NetscapeBookmarkUtils::import([], $files, $this->bookmarkService, $this->conf, $this->history) $this->netscapeBookmarkUtils->import([], $files)
); );
$this->assertEquals(8, $this->bookmarkService->count()); $this->assertEquals(8, $this->bookmarkService->count());
$this->assertEquals(2, $this->bookmarkService->count(BookmarkFilter::$PRIVATE)); $this->assertEquals(2, $this->bookmarkService->count(BookmarkFilter::$PRIVATE));
@ -306,7 +313,7 @@ public function testImportDefaultPrivacyNoPost()
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:' 'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:'
.' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', .' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
NetscapeBookmarkUtils::import([], $files, $this->bookmarkService, $this->conf, $this->history) $this->netscapeBookmarkUtils->import([], $files)
); );
$this->assertEquals(2, $this->bookmarkService->count()); $this->assertEquals(2, $this->bookmarkService->count());
@ -349,7 +356,7 @@ public function testImportKeepPrivacy()
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:' 'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:'
.' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', .' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
NetscapeBookmarkUtils::import($post, $files, $this->bookmarkService, $this->conf, $this->history) $this->netscapeBookmarkUtils->import($post, $files)
); );
$this->assertEquals(2, $this->bookmarkService->count()); $this->assertEquals(2, $this->bookmarkService->count());
@ -392,7 +399,7 @@ public function testImportAsPublic()
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:' 'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:'
.' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', .' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
NetscapeBookmarkUtils::import($post, $files, $this->bookmarkService, $this->conf, $this->history) $this->netscapeBookmarkUtils->import($post, $files)
); );
$this->assertEquals(2, $this->bookmarkService->count()); $this->assertEquals(2, $this->bookmarkService->count());
$this->assertEquals(0, $this->bookmarkService->count(BookmarkFilter::$PRIVATE)); $this->assertEquals(0, $this->bookmarkService->count(BookmarkFilter::$PRIVATE));
@ -410,7 +417,7 @@ public function testImportAsPrivate()
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:' 'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:'
.' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', .' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
NetscapeBookmarkUtils::import($post, $files, $this->bookmarkService, $this->conf, $this->history) $this->netscapeBookmarkUtils->import($post, $files)
); );
$this->assertEquals(2, $this->bookmarkService->count()); $this->assertEquals(2, $this->bookmarkService->count());
$this->assertEquals(2, $this->bookmarkService->count(BookmarkFilter::$PRIVATE)); $this->assertEquals(2, $this->bookmarkService->count(BookmarkFilter::$PRIVATE));
@ -430,7 +437,7 @@ public function testOverwriteAsPublic()
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:' 'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:'
.' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', .' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
NetscapeBookmarkUtils::import($post, $files, $this->bookmarkService, $this->conf, $this->history) $this->netscapeBookmarkUtils->import($post, $files)
); );
$this->assertEquals(2, $this->bookmarkService->count()); $this->assertEquals(2, $this->bookmarkService->count());
$this->assertEquals(2, $this->bookmarkService->count(BookmarkFilter::$PRIVATE)); $this->assertEquals(2, $this->bookmarkService->count(BookmarkFilter::$PRIVATE));
@ -445,7 +452,7 @@ public function testOverwriteAsPublic()
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:' 'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:'
.' 2 bookmarks imported, 2 bookmarks overwritten, 0 bookmarks skipped.', .' 2 bookmarks imported, 2 bookmarks overwritten, 0 bookmarks skipped.',
NetscapeBookmarkUtils::import($post, $files, $this->bookmarkService, $this->conf, $this->history) $this->netscapeBookmarkUtils->import($post, $files)
); );
$this->assertEquals(2, $this->bookmarkService->count()); $this->assertEquals(2, $this->bookmarkService->count());
$this->assertEquals(0, $this->bookmarkService->count(BookmarkFilter::$PRIVATE)); $this->assertEquals(0, $this->bookmarkService->count(BookmarkFilter::$PRIVATE));
@ -465,7 +472,7 @@ public function testOverwriteAsPrivate()
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:' 'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:'
.' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', .' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
NetscapeBookmarkUtils::import($post, $files, $this->bookmarkService, $this->conf, $this->history) $this->netscapeBookmarkUtils->import($post, $files)
); );
$this->assertEquals(2, $this->bookmarkService->count()); $this->assertEquals(2, $this->bookmarkService->count());
$this->assertEquals(0, $this->bookmarkService->count(BookmarkFilter::$PRIVATE)); $this->assertEquals(0, $this->bookmarkService->count(BookmarkFilter::$PRIVATE));
@ -480,7 +487,7 @@ public function testOverwriteAsPrivate()
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:' 'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:'
.' 2 bookmarks imported, 2 bookmarks overwritten, 0 bookmarks skipped.', .' 2 bookmarks imported, 2 bookmarks overwritten, 0 bookmarks skipped.',
NetscapeBookmarkUtils::import($post, $files, $this->bookmarkService, $this->conf, $this->history) $this->netscapeBookmarkUtils->import($post, $files)
); );
$this->assertEquals(2, $this->bookmarkService->count()); $this->assertEquals(2, $this->bookmarkService->count());
$this->assertEquals(2, $this->bookmarkService->count(BookmarkFilter::$PRIVATE)); $this->assertEquals(2, $this->bookmarkService->count(BookmarkFilter::$PRIVATE));
@ -498,7 +505,7 @@ public function testSkipOverwrite()
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:' 'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:'
.' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', .' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
NetscapeBookmarkUtils::import($post, $files, $this->bookmarkService, $this->conf, $this->history) $this->netscapeBookmarkUtils->import($post, $files)
); );
$this->assertEquals(2, $this->bookmarkService->count()); $this->assertEquals(2, $this->bookmarkService->count());
$this->assertEquals(0, $this->bookmarkService->count(BookmarkFilter::$PRIVATE)); $this->assertEquals(0, $this->bookmarkService->count(BookmarkFilter::$PRIVATE));
@ -508,7 +515,7 @@ public function testSkipOverwrite()
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:' 'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:'
.' 0 bookmarks imported, 0 bookmarks overwritten, 2 bookmarks skipped.', .' 0 bookmarks imported, 0 bookmarks overwritten, 2 bookmarks skipped.',
NetscapeBookmarkUtils::import($post, $files, $this->bookmarkService, $this->conf, $this->history) $this->netscapeBookmarkUtils->import($post, $files)
); );
$this->assertEquals(2, $this->bookmarkService->count()); $this->assertEquals(2, $this->bookmarkService->count());
$this->assertEquals(0, $this->bookmarkService->count(BookmarkFilter::$PRIVATE)); $this->assertEquals(0, $this->bookmarkService->count(BookmarkFilter::$PRIVATE));
@ -527,7 +534,7 @@ public function testSetDefaultTags()
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:' 'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:'
.' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', .' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
NetscapeBookmarkUtils::import($post, $files, $this->bookmarkService, $this->conf, $this->history) $this->netscapeBookmarkUtils->import($post, $files)
); );
$this->assertEquals(2, $this->bookmarkService->count()); $this->assertEquals(2, $this->bookmarkService->count());
$this->assertEquals(0, $this->bookmarkService->count(BookmarkFilter::$PRIVATE)); $this->assertEquals(0, $this->bookmarkService->count(BookmarkFilter::$PRIVATE));
@ -548,7 +555,7 @@ public function testSanitizeDefaultTags()
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:' 'File netscape_basic.htm (482 bytes) was successfully processed in %d seconds:'
.' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', .' 2 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
NetscapeBookmarkUtils::import($post, $files, $this->bookmarkService, $this->conf, $this->history) $this->netscapeBookmarkUtils->import($post, $files)
); );
$this->assertEquals(2, $this->bookmarkService->count()); $this->assertEquals(2, $this->bookmarkService->count());
$this->assertEquals(0, $this->bookmarkService->count(BookmarkFilter::$PRIVATE)); $this->assertEquals(0, $this->bookmarkService->count(BookmarkFilter::$PRIVATE));
@ -573,7 +580,7 @@ public function testImportSameDate()
$this->assertStringMatchesFormat( $this->assertStringMatchesFormat(
'File same_date.htm (453 bytes) was successfully processed in %d seconds:' 'File same_date.htm (453 bytes) was successfully processed in %d seconds:'
.' 3 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.', .' 3 bookmarks imported, 0 bookmarks overwritten, 0 bookmarks skipped.',
NetscapeBookmarkUtils::import(array(), $files, $this->bookmarkService, $this->conf, $this->history) $this->netscapeBookmarkUtils->import(array(), $files)
); );
$this->assertEquals(3, $this->bookmarkService->count()); $this->assertEquals(3, $this->bookmarkService->count());
$this->assertEquals(0, $this->bookmarkService->count(BookmarkFilter::$PRIVATE)); $this->assertEquals(0, $this->bookmarkService->count(BookmarkFilter::$PRIVATE));
@ -589,14 +596,14 @@ public function testImportCreateUpdateHistory()
'overwrite' => 'true', 'overwrite' => 'true',
]; ];
$files = file2array('netscape_basic.htm'); $files = file2array('netscape_basic.htm');
NetscapeBookmarkUtils::import($post, $files, $this->bookmarkService, $this->conf, $this->history); $this->netscapeBookmarkUtils->import($post, $files);
$history = $this->history->getHistory(); $history = $this->history->getHistory();
$this->assertEquals(1, count($history)); $this->assertEquals(1, count($history));
$this->assertEquals(History::IMPORT, $history[0]['event']); $this->assertEquals(History::IMPORT, $history[0]['event']);
$this->assertTrue(new DateTime('-5 seconds') < $history[0]['datetime']); $this->assertTrue(new DateTime('-5 seconds') < $history[0]['datetime']);
// re-import as private, enable overwriting // re-import as private, enable overwriting
NetscapeBookmarkUtils::import($post, $files, $this->bookmarkService, $this->conf, $this->history); $this->netscapeBookmarkUtils->import($post, $files);
$history = $this->history->getHistory(); $history = $this->history->getHistory();
$this->assertEquals(2, count($history)); $this->assertEquals(2, count($history));
$this->assertEquals(History::IMPORT, $history[0]['event']); $this->assertEquals(History::IMPORT, $history[0]['event']);