import { expect } from "chai";
import { stub } from "sinon";
import * as React from "react";
import { shallow } from "enzyme";
import BasicAuthButtonWithImage, { BasicAuthWithImageMethod } from "../BasicAuthButtonWithImage";
import BasicAuthWithButtonImagePlugin from "../../BasicAuthWithButtonImagePlugin";
describe("BasicAuthButtonWithImage", () => {
let wrapper;
let provider;
let onClick;
beforeEach(() => {
let method: BasicAuthWithImageMethod = {
type: "method",
description: "description",
labels: { login: "login", "password": "password" }
};
provider = { id: "method", method, plugin: BasicAuthWithButtonImagePlugin };
onClick = stub();
wrapper = shallow(
);
});
it("shows button with no image", () => {
let button = wrapper.find("button");
expect(button.length).to.equal(1);
expect(button.text()).to.contain("Log in with description");
expect(button.props()["aria-label"]).to.equal("Log in with description");
let image = button.find("img");
expect(image.length).to.equal(0);
});
it("shows button with image", () => {
let method: BasicAuthWithImageMethod = {
type: "method",
description: "description",
labels: { login: "login", "password": "password" },
links: [{ "rel": "logo", "href": "logo.png" }]
};
provider = { id: "method", method, plugin: BasicAuthWithButtonImagePlugin };
wrapper = shallow(
);
let button = wrapper.find("button");
expect(button.length).to.equal(1);
expect(button.props()["aria-label"]).to.equal("Log in with description");
let image = button.find("img");
expect(image.length).to.equal(1);
expect(image.props().src).to.equal("logo.png");
expect(image.props().alt).to.equal("Log in with description");
});
it("calls onClick", () => {
let button = wrapper.find("button");
button.simulate("click");
expect(onClick.callCount).to.equal(1);
});
});