summaryrefslogtreecommitdiffstats
path: root/toolkit/components/jsdownloads/test/unit/test_Downloads.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/jsdownloads/test/unit/test_Downloads.js')
-rw-r--r--toolkit/components/jsdownloads/test/unit/test_Downloads.js194
1 files changed, 194 insertions, 0 deletions
diff --git a/toolkit/components/jsdownloads/test/unit/test_Downloads.js b/toolkit/components/jsdownloads/test/unit/test_Downloads.js
new file mode 100644
index 000000000..2027beee1
--- /dev/null
+++ b/toolkit/components/jsdownloads/test/unit/test_Downloads.js
@@ -0,0 +1,194 @@
+/* -*- 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, "");
+});