summaryrefslogtreecommitdiff
path: root/cli/js/form_data_test.ts
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2019-10-04 20:28:51 -0400
committerGitHub <noreply@github.com>2019-10-04 20:28:51 -0400
commitb81e5db17aa8b3088d6034ddf86b79c69410f012 (patch)
tree579e4c23d60d1b0d038156bc28a04f74ea87b2f0 /cli/js/form_data_test.ts
parent9049213867d30f7df090a83b6baf3e0717a4d2d2 (diff)
Merge deno_cli_snapshots into deno_cli (#3064)
Diffstat (limited to 'cli/js/form_data_test.ts')
-rw-r--r--cli/js/form_data_test.ts179
1 files changed, 179 insertions, 0 deletions
diff --git a/cli/js/form_data_test.ts b/cli/js/form_data_test.ts
new file mode 100644
index 000000000..fe8b6cf32
--- /dev/null
+++ b/cli/js/form_data_test.ts
@@ -0,0 +1,179 @@
+// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
+import { test, assert, assertEquals } from "./test_util.ts";
+
+test(function formDataHasCorrectNameProp(): void {
+ assertEquals(FormData.name, "FormData");
+});
+
+test(function formDataParamsAppendSuccess(): void {
+ const formData = new FormData();
+ formData.append("a", "true");
+ assertEquals(formData.get("a"), "true");
+});
+
+test(function formDataParamsDeleteSuccess(): void {
+ const formData = new FormData();
+ formData.append("a", "true");
+ formData.append("b", "false");
+ assertEquals(formData.get("b"), "false");
+ formData.delete("b");
+ assertEquals(formData.get("a"), "true");
+ assertEquals(formData.get("b"), null);
+});
+
+test(function formDataParamsGetAllSuccess(): void {
+ const formData = new FormData();
+ formData.append("a", "true");
+ formData.append("b", "false");
+ formData.append("a", "null");
+ assertEquals(formData.getAll("a"), ["true", "null"]);
+ assertEquals(formData.getAll("b"), ["false"]);
+ assertEquals(formData.getAll("c"), []);
+});
+
+test(function formDataParamsGetSuccess(): void {
+ const formData = new FormData();
+ formData.append("a", "true");
+ formData.append("b", "false");
+ formData.append("a", "null");
+ formData.append("d", undefined);
+ formData.append("e", null);
+ assertEquals(formData.get("a"), "true");
+ assertEquals(formData.get("b"), "false");
+ assertEquals(formData.get("c"), null);
+ assertEquals(formData.get("d"), "undefined");
+ assertEquals(formData.get("e"), "null");
+});
+
+test(function formDataParamsHasSuccess(): void {
+ const formData = new FormData();
+ formData.append("a", "true");
+ formData.append("b", "false");
+ assert(formData.has("a"));
+ assert(formData.has("b"));
+ assert(!formData.has("c"));
+});
+
+test(function formDataParamsSetSuccess(): void {
+ const formData = new FormData();
+ formData.append("a", "true");
+ formData.append("b", "false");
+ formData.append("a", "null");
+ assertEquals(formData.getAll("a"), ["true", "null"]);
+ assertEquals(formData.getAll("b"), ["false"]);
+ formData.set("a", "false");
+ assertEquals(formData.getAll("a"), ["false"]);
+ formData.set("d", undefined);
+ assertEquals(formData.get("d"), "undefined");
+ formData.set("e", null);
+ assertEquals(formData.get("e"), "null");
+});
+
+test(function formDataSetEmptyBlobSuccess(): void {
+ const formData = new FormData();
+ formData.set("a", new Blob([]), "blank.txt");
+ formData.get("a");
+ /* TODO Fix this test.
+ assert(file instanceof File);
+ if (typeof file !== "string") {
+ assertEquals(file.name, "blank.txt");
+ }
+ */
+});
+
+test(function formDataParamsForEachSuccess(): void {
+ const init = [["a", "54"], ["b", "true"]];
+ const formData = new FormData();
+ for (const [name, value] of init) {
+ formData.append(name, value);
+ }
+ let callNum = 0;
+ formData.forEach(
+ (value, key, parent): void => {
+ assertEquals(formData, parent);
+ assertEquals(value, init[callNum][1]);
+ assertEquals(key, init[callNum][0]);
+ callNum++;
+ }
+ );
+ assertEquals(callNum, init.length);
+});
+
+test(function formDataParamsArgumentsCheck(): void {
+ const methodRequireOneParam = ["delete", "getAll", "get", "has", "forEach"];
+
+ const methodRequireTwoParams = ["append", "set"];
+
+ methodRequireOneParam.forEach(
+ (method): void => {
+ const formData = new FormData();
+ let hasThrown = 0;
+ let errMsg = "";
+ try {
+ formData[method]();
+ hasThrown = 1;
+ } catch (err) {
+ errMsg = err.message;
+ if (err instanceof TypeError) {
+ hasThrown = 2;
+ } else {
+ hasThrown = 3;
+ }
+ }
+ assertEquals(hasThrown, 2);
+ assertEquals(
+ errMsg,
+ `FormData.${method} requires at least 1 argument, but only 0 present`
+ );
+ }
+ );
+
+ methodRequireTwoParams.forEach(
+ (method: string): void => {
+ const formData = new FormData();
+ let hasThrown = 0;
+ let errMsg = "";
+
+ try {
+ formData[method]();
+ hasThrown = 1;
+ } catch (err) {
+ errMsg = err.message;
+ if (err instanceof TypeError) {
+ hasThrown = 2;
+ } else {
+ hasThrown = 3;
+ }
+ }
+ assertEquals(hasThrown, 2);
+ assertEquals(
+ errMsg,
+ `FormData.${method} requires at least 2 arguments, but only 0 present`
+ );
+
+ hasThrown = 0;
+ errMsg = "";
+ try {
+ formData[method]("foo");
+ hasThrown = 1;
+ } catch (err) {
+ errMsg = err.message;
+ if (err instanceof TypeError) {
+ hasThrown = 2;
+ } else {
+ hasThrown = 3;
+ }
+ }
+ assertEquals(hasThrown, 2);
+ assertEquals(
+ errMsg,
+ `FormData.${method} requires at least 2 arguments, but only 1 present`
+ );
+ }
+ );
+});
+
+test(function toStringShouldBeWebCompatibility(): void {
+ const formData = new FormData();
+ assertEquals(formData.toString(), "[object FormData]");
+});