gecko-dev/toolkit/components/jsdownloads/test/unit/test_Downloads.js
Mrinal Dhar 9c6bcee540 Bug 1113736 - Remove tail.js and add cleanup function call in head.js. r=paolo
--HG--
extra : commitid : KnJulAaqtPN
extra : rebase_source : b3e28bc8b0154751e94a88492207023b17b2064d
extra : amend_source : 120d225f23e4c88c3e6fcd02df42aa3e381b5b9e
2015-12-28 15:05:13 +00:00

195 lines
5.9 KiB
JavaScript

/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set ts=2 et sw=2 tw=80: */
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
/**
* Tests the functions located directly in the "Downloads" object.
*/
"use strict";
////////////////////////////////////////////////////////////////////////////////
//// Tests
/**
* Tests that the createDownload function exists and can be called. More
* detailed tests are implemented separately for the DownloadCore module.
*/
add_task(function* test_createDownload()
{
// Creates a simple Download object without starting the download.
yield Downloads.createDownload({
source: { url: "about:blank" },
target: { path: getTempFile(TEST_TARGET_FILE_NAME).path },
saver: { type: "copy" },
});
});
/**
* Tests createDownload for private download.
*/
add_task(function* test_createDownload_private()
{
let download = yield Downloads.createDownload({
source: { url: "about:blank", isPrivate: true },
target: { path: getTempFile(TEST_TARGET_FILE_NAME).path },
saver: { type: "copy" }
});
do_check_true(download.source.isPrivate);
});
/**
* Tests createDownload for normal (public) download.
*/
add_task(function* test_createDownload_public()
{
let tempPath = getTempFile(TEST_TARGET_FILE_NAME).path;
let download = yield Downloads.createDownload({
source: { url: "about:blank", isPrivate: false },
target: { path: tempPath },
saver: { type: "copy" }
});
do_check_false(download.source.isPrivate);
download = yield Downloads.createDownload({
source: { url: "about:blank" },
target: { path: tempPath },
saver: { type: "copy" }
});
do_check_false(download.source.isPrivate);
});
/**
* Tests createDownload for a pdf saver throws if only given a url.
*/
add_task(function* test_createDownload_pdf()
{
let download = yield Downloads.createDownload({
source: { url: "about:blank" },
target: { path: getTempFile(TEST_TARGET_FILE_NAME).path },
saver: { type: "pdf" },
});
try {
yield download.start();
do_throw("The download should have failed.");
} catch (ex) {
if (!(ex instanceof Downloads.Error) || !ex.becauseSourceFailed) {
throw ex;
}
}
do_check_false(download.succeeded);
do_check_true(download.stopped);
do_check_false(download.canceled);
do_check_true(download.error !== null);
do_check_true(download.error.becauseSourceFailed);
do_check_false(download.error.becauseTargetFailed);
do_check_false(yield OS.File.exists(download.target.path));
});
/**
* Tests "fetch" with nsIURI and nsIFile as arguments.
*/
add_task(function* test_fetch_uri_file_arguments()
{
let targetFile = getTempFile(TEST_TARGET_FILE_NAME);
yield Downloads.fetch(NetUtil.newURI(httpUrl("source.txt")), targetFile);
yield promiseVerifyContents(targetFile.path, TEST_DATA_SHORT);
});
/**
* Tests "fetch" with DownloadSource and DownloadTarget as arguments.
*/
add_task(function* test_fetch_object_arguments()
{
let targetPath = getTempFile(TEST_TARGET_FILE_NAME).path;
yield Downloads.fetch({ url: httpUrl("source.txt") }, { path: targetPath });
yield promiseVerifyContents(targetPath, TEST_DATA_SHORT);
});
/**
* Tests "fetch" with string arguments.
*/
add_task(function* test_fetch_string_arguments()
{
let targetPath = getTempFile(TEST_TARGET_FILE_NAME).path;
yield Downloads.fetch(httpUrl("source.txt"), targetPath);
yield promiseVerifyContents(targetPath, TEST_DATA_SHORT);
targetPath = getTempFile(TEST_TARGET_FILE_NAME).path;
yield Downloads.fetch(new String(httpUrl("source.txt")),
new String(targetPath));
yield promiseVerifyContents(targetPath, TEST_DATA_SHORT);
});
/**
* Tests that the getList function returns the same list when called multiple
* times with the same argument, but returns different lists when called with
* different arguments. More detailed tests are implemented separately for the
* DownloadList module.
*/
add_task(function* test_getList()
{
let publicListOne = yield Downloads.getList(Downloads.PUBLIC);
let privateListOne = yield Downloads.getList(Downloads.PRIVATE);
let publicListTwo = yield Downloads.getList(Downloads.PUBLIC);
let privateListTwo = yield Downloads.getList(Downloads.PRIVATE);
do_check_eq(publicListOne, publicListTwo);
do_check_eq(privateListOne, privateListTwo);
do_check_neq(publicListOne, privateListOne);
});
/**
* Tests that the getSummary function returns the same summary when called
* multiple times with the same argument, but returns different summaries when
* called with different arguments. More detailed tests are implemented
* separately for the DownloadSummary object in the DownloadList module.
*/
add_task(function* test_getSummary()
{
let publicSummaryOne = yield Downloads.getSummary(Downloads.PUBLIC);
let privateSummaryOne = yield Downloads.getSummary(Downloads.PRIVATE);
let publicSummaryTwo = yield Downloads.getSummary(Downloads.PUBLIC);
let privateSummaryTwo = yield Downloads.getSummary(Downloads.PRIVATE);
do_check_eq(publicSummaryOne, publicSummaryTwo);
do_check_eq(privateSummaryOne, privateSummaryTwo);
do_check_neq(publicSummaryOne, privateSummaryOne);
});
/**
* Tests that the getSystemDownloadsDirectory returns a non-empty download
* directory string.
*/
add_task(function* test_getSystemDownloadsDirectory()
{
let downloadDir = yield Downloads.getSystemDownloadsDirectory();
do_check_neq(downloadDir, "");
});
/**
* Tests that the getPreferredDownloadsDirectory returns a non-empty download
* directory string.
*/
add_task(function* test_getPreferredDownloadsDirectory()
{
let downloadDir = yield Downloads.getPreferredDownloadsDirectory();
do_check_neq(downloadDir, "");
});
/**
* Tests that the getTemporaryDownloadsDirectory returns a non-empty download
* directory string.
*/
add_task(function* test_getTemporaryDownloadsDirectory()
{
let downloadDir = yield Downloads.getTemporaryDownloadsDirectory();
do_check_neq(downloadDir, "");
});