import {
  validateAddress as networkValidateAddress,
  ValidateAddressResult,
} from "../network/addresses";
import { validateAddress } from "./validateAddress";

jest.mock("../network/addresses");

describe("validateAddress", () => {
  const mockedNetworkValidateAddress = jest.mocked(networkValidateAddress);

  beforeEach(() => {
    mockedNetworkValidateAddress.mockClear();
  });

  it.each([true, false])(
    "should call validateAddress and return the expected value (%s)",
    async (expectedValue: boolean) => {
      mockedNetworkValidateAddress.mockReturnValueOnce({
        isValid: expectedValue,
      } as unknown as ValidateAddressResult);

      const address = "some random address";
      const parameters = {};

      const result = await validateAddress(address, parameters);
      expect(result).toEqual(expectedValue);

      expect(mockedNetworkValidateAddress).toHaveBeenCalledTimes(1);
      expect(mockedNetworkValidateAddress).toHaveBeenCalledWith(address);
    },
  );
});
