// Copyright 2020 Fastly, Inc.

import { Body } from "../body";
import { Headers } from "../headers";
import { Response } from "../response";

describe("Response", () => {
  test("constructor", () => {
    let headers = new Headers();
    headers.set("Name", "Value");
    let response = new Response(String.UTF8.encode("body"), {
      headers: headers,
      status: 201,
    });

    let nullResponse = new Response(null, {
      headers: null,
      status: 200,
    });

    let optionalParamsResponse = new Response(null, {});

    expect(response).toBeTruthy();
    expect(response.headers).toBeTruthy();
    expect(response.status).toBeTruthy();
    expect(response.arrayBuffer()).toBeTruthy();

    expect(nullResponse).toBeTruthy();
    expect(nullResponse.headers).toBeTruthy();
    expect(nullResponse.status).toBeTruthy();
    expect(nullResponse.arrayBuffer()).toBeFalsy();

    expect(optionalParamsResponse).toBeTruthy();
    expect(optionalParamsResponse.headers).toBeTruthy();
    expect(optionalParamsResponse.status).toBe(200);
    expect(optionalParamsResponse.arrayBuffer()).toBeFalsy();
  });

  test("ok", () => {
    let response = new Response(null, {
      headers: null,
      status: 200,
    });

    expect(response.ok).toBe(true);
  });

  test("statusText", () => {
    let response = new Response(null, {
      headers: null,
      status: 404,
    });

    expect(response.statusText).toBe("Not Found");
  });

  test("url", () => {
    let response = new Response(null, {
      headers: null,
      status: 200,
      url: "https://www.fastly.com/",
    });

    expect(response.url).toBe("https://www.fastly.com/");
  });
});
