// Copyright 2020 Fastly, Inc.

import { Body } from "../body";
import { Headers } from "../headers";
import { Request } from "../request";

describe("Request", () => {
  test("constructor", () => {
    let headers = new Headers();
    headers.set("Name", "Value");
    let request = new Request("https://fastly.com", {
      method: "POST",
      headers: headers,
      body: String.UTF8.encode("body"),
    });

    let nullRequest = new Request("https://fastly.com", {
      method: null,
      headers: null,
      body: null,
    });

    let optionalParamsRequest = new Request("https://fastly.com", {});

    expect(request).toBeTruthy();
    expect(request.method).toBeTruthy();
    expect(request.headers).toBeTruthy();
    expect(request.arrayBuffer()).toBeTruthy();

    expect(nullRequest).toBeTruthy();
    expect(nullRequest.method).toBe("GET");
    expect(nullRequest.headers).toBeTruthy();
    expect(nullRequest.arrayBuffer()).toBeFalsy();

    expect(optionalParamsRequest).toBeTruthy();
    expect(optionalParamsRequest.method).toBe("GET");
    expect(optionalParamsRequest.headers).toBeTruthy();
    expect(optionalParamsRequest.arrayBuffer()).toBeFalsy();
  });

  test("method", () => {
    let request = new Request("https://fastly.com", {
      method: "POST",
      headers: null,
      body: null,
    });

    expect(request.method).toBe("POST");
  });

  test("url", () => {
    let request = new Request("https://fastly.com", {
      method: null,
      headers: null,
      body: null,
    });

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