From fd329798d108ccad3473a9f4994e9efbb0f90612 Mon Sep 17 00:00:00 2001 From: Vladimir Enchev Date: Mon, 13 Jul 2015 17:25:55 +0300 Subject: [PATCH] fetch tests added --- CrossPlatformModules.csproj | 1 + apps/tests/fetch-tests.ts | 273 ++++++++++++++++++++++++++++++++++++ apps/tests/testRunner.ts | 1 + 3 files changed, 275 insertions(+) create mode 100644 apps/tests/fetch-tests.ts diff --git a/CrossPlatformModules.csproj b/CrossPlatformModules.csproj index bf4f8b10b..454f62a88 100644 --- a/CrossPlatformModules.csproj +++ b/CrossPlatformModules.csproj @@ -171,6 +171,7 @@ + diff --git a/apps/tests/fetch-tests.ts b/apps/tests/fetch-tests.ts new file mode 100644 index 000000000..945d06932 --- /dev/null +++ b/apps/tests/fetch-tests.ts @@ -0,0 +1,273 @@ +/* tslint:disable:no-unused-variable */ +import TKUnit = require("./TKUnit"); +import fetchModule = require("fetch"); +import types = require("utils/types"); + +// +// # Fetch module +// Using fetch methods requires to load "fetch" module. +// ``` JavaScript +// var fetch = require("fetch"); +// ``` +// + +export var test_fetch_defined = function () { + TKUnit.assert(types.isDefined((fetchModule.fetch)), "Method fetch() should be defined!"); +}; + +export var test_fetch = function (done: (err: Error, res?: string) => void) { + var result; + + fetchModule.fetch("https://httpbin.org/get").then(function (r) { + TKUnit.assert(r instanceof fetchModule.Response, "Result from fetch() should be valid Response object! Actual result is: " + result); + done(null); + }, function (e) { + done(e); + }); +}; + +export var test_fetch_text = function (done: (err: Error, res?: string) => void) { + var result; + + // + // ### Get string from URL + // ``` JavaScript + fetchModule.fetch("https://httpbin.org/get").then(r => { return r.text(); }).then(function (r) { + //// Argument (r) is string! + // + TKUnit.assert(types.isString(r), "Result from text() should be string! Actual result is: " + r); + done(null); + // + }, function (e) { + //// Argument (e) is Error! + // + done(e); + // + }); + // ``` + // +}; + +export var test_fetch_json = function (done: (err: Error, res?: string) => void) { + var result; + + // + // ### Get JSON from URL + // ``` JavaScript + fetchModule.fetch("https://httpbin.org/get").then(r => { return r.json(); }).then(function (r) { + //// Argument (r) is JSON object! + // + TKUnit.assert(types.isString(JSON.stringify(r)), "Result from json() should be JSON object! Actual result is: " + r); + done(null); + // + }, function (e) { + //// Argument (e) is Error! + // + done(e); + // + }); + // ``` + // +}; +/* +export var test_fetch_blob = function (done: (err: Error, res?: string) => void) { + var result; + + // + // ### Get Blob from URL + // ``` JavaScript + fetchModule.fetch("https://httpbin.org/get").then(r => { return r.blob(); }).then(function (r) { + //// Argument (r) is Blob object! + // + TKUnit.assert(r instanceof Blob, "Result from blob() should be Blob object! Actual result is: " + r); + done(null); + // + }, function (e) { + //// Argument (e) is Error! + // + done(e); + // + }); + // ``` + // +}; + +export var test_fetch_arrayBuffer = function (done: (err: Error, res?: string) => void) { + var result; + + // + // ### Get ArrayBuffer from URL + // ``` JavaScript + fetchModule.fetch("https://httpbin.org/get").then(r => { return r.arrayBuffer(); }).then(function (r) { + //// Argument (r) is ArrayBuffer object! + // + TKUnit.assert(r instanceof ArrayBuffer, "Result from arrayBuffer() should be ArrayBuffer object! Actual result is: " + r); + done(null); + // + }, function (e) { + //// Argument (e) is Error! + // + done(e); + // + }); + // ``` + // +}; + +export var test_fetch_formData = function (done: (err: Error, res?: string) => void) { + var result; + + // + // ### Get FormData from URL + // ``` JavaScript + fetchModule.fetch("https://httpbin.org/get").then(r => { return r.formData(); }).then(function (r) { + //// Argument (r) is FormData object! + // + TKUnit.assert(r instanceof FormData, "Result from formData() should be FormData object! Actual result is: " + r); + done(null); + // + }, function (e) { + //// Argument (e) is Error! + // + done(e); + // + }); + // ``` + // +}; +*/ +export var test_fetch_fail_invalid_url = function (done) { + var result; + var completed: boolean; + var isReady = function () { return completed; } + + fetchModule.fetch("hgfttp://httpbin.org/get").catch(function (e) { + completed = true; + result = e; + done(null) + }); +}; + +export var test_fetch_response_status = function (done) { + + // + // ### Get response status code + // ``` fetch + fetchModule.fetch("https://httpbin.org/get").then(function (response) { + //// Argument (response) is Response! + var statusCode = response.status; + // + try { + TKUnit.assert(types.isDefined(statusCode), "response.status should be defined! Actual result is: " + statusCode); + done(null); + } + catch (err) { + done(err); + } + // + }, function (e) { + //// Argument (e) is Error! + // + done(e); + // + }); + // ``` + // +}; + +export var test_fetch_response_headers = function (done) { + + // + // ### Get response headers + // ``` JavaScript + fetchModule.fetch("https://httpbin.org/get").then(function (response) { + //// Argument (response) is Response! + // var all = response.headers.getAll(); + // + try { + TKUnit.assert(types.isDefined(response.headers), "response.headers should be defined! Actual result is: " + response.headers); + done(null); + } + catch (err) { + done(err); + } + // + }, function (e) { + //// Argument (e) is Error! + // + done(e); + // + }); + // ``` + // +}; + +export var test_fetch_headers_sent = function (done) { + var result: fetchModule.Headers; + + fetchModule.fetch("https://httpbin.org/get", { + method: "GET", + headers: { "Content-Type": "application/json" } + }).then(function (response) { + result = response.headers; + try { + TKUnit.assert(result.get("Content-Type") === "application/json", "Headers not sent/received properly! Actual result is: " + result); + done(null); + } + catch (err) { + done(err); + } + }, function (e) { + done(e); + }); +}; + +export var test_fetch_post_form_data = function (done) { + fetchModule.fetch("https://httpbin.org/post", { + method: "POST", + headers: { "Content-Type": "application/x-www-form-urlencoded" }, + body: "MyVariableOne=ValueOne&MyVariableTwo=ValueTwo" + }).then(r => { + // return r.formData(); Uncomment this when FormData is available! + return r.json(); + }).then(function (r) { + try { + TKUnit.assert(r.form["MyVariableOne"] === "ValueOne" && r.form["MyVariableTwo"] === "ValueTwo", "Content not sent/received properly! Actual result is: " + r.form); + done(null); + } + catch (err) { + done(err); + } + }, function (e) { + done(e); + }); +}; + +export var test_fetch_post_json = function (done) { + // + // ### Post JSON + // ``` JavaScript + fetchModule.fetch("https://httpbin.org/post", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ MyVariableOne: "ValueOne", MyVariableTwo: "ValueTwo" }) + }).then(r => { return r.json(); }).then(function (r) { + // + try { + TKUnit.assert(r.json["MyVariableOne"] === "ValueOne" && r.json["MyVariableTwo"] === "ValueTwo", "Content not sent/received properly! Actual result is: " + r.json); + done(null); + } + catch (err) { + done(err); + } + // + // console.log(result); + }, function (e) { + // + done(e); + // + // console.log("Error occurred " + e); + }); + // ``` + // +}; \ No newline at end of file diff --git a/apps/tests/testRunner.ts b/apps/tests/testRunner.ts index ce0f61ebc..d38d8f33e 100644 --- a/apps/tests/testRunner.ts +++ b/apps/tests/testRunner.ts @@ -36,6 +36,7 @@ allTests["STYLE-PROPERTIES"] = require("./ui/style/style-properties-tests"); allTests["SCROLL-VIEW"] = require("./ui/scroll-view/scroll-view-tests"); allTests["FILE SYSTEM"] = require("./file-system-tests"); allTests["HTTP"] = require("./http-tests"); +allTests["FETCH"] = require("./fetch-tests"); allTests["APPLICATION SETTINGS"] = require("./application-settings-tests"); allTests["IMAGE SOURCE"] = require("./image-source-tests"); allTests["TIMER"] = require("./timer-tests");