/*
* SonarQube
* Copyright (C) 2009-2017 SonarSource SA
* mailto:info AT sonarsource DOT com
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package pageobjects.organization;
import com.codeborne.selenide.Condition;
import com.codeborne.selenide.ElementsCollection;
import com.codeborne.selenide.SelenideElement;
import static com.codeborne.selenide.Condition.text;
import static com.codeborne.selenide.Condition.visible;
import static com.codeborne.selenide.Selenide.$;
import static com.codeborne.selenide.Selenide.$$;
public class MembersPage {
public MembersPage() {
$(".nav-tabs a.active").shouldBe(visible).shouldHave(Condition.text("Members"));
}
public ElementsCollection getMembers() {
return $$("table.data tr");
}
public MemberItem getMembersByIdx(Integer idx) {
return new MemberItem(getMembers().get(idx));
}
public MembersPage shouldHaveTotal(int total) {
$(".panel-vertical > span > strong").shouldHave(text(String.valueOf(total)));
return this;
}
public MembersPage searchForMember(String query) {
$("input.search-box-input").shouldBe(Condition.visible).val("").sendKeys(query);
return this;
}
public MembersPage canAddMember() {
$(".page-actions").shouldBe(Condition.visible);
return this;
}
public MembersPage canNotAddMember() {
$(".page-actions").shouldNot(Condition.exist);
return this;
}
public MembersPage addMember(String login) {
this.canAddMember();
$(".page-actions button").click();
SelenideElement modal = this.getModal("Add user");
SelenideElement input = modal.$(".Select-input input");
input.val(login);
modal.$("div.Select-option.is-focused").should(Condition.exist);
input.pressEnter();
modal.$("button[type='submit']").click();
return this;
}
private SelenideElement getModal(String title) {
$(".modal-head").should(Condition.exist).shouldHave(Condition.text(title));
SelenideElement form = $(".ReactModalPortal form");
form.should(Condition.exist);
return form;
}
}