package er.modern.movies.test;
import static com.codeborne.selenide.Condition.text;
import static com.codeborne.selenide.Condition.value;
import static com.codeborne.selenide.Selenide.$;
import static com.codeborne.selenide.Selenide.$$;
import static com.codeborne.selenide.Selenide.open;
import org.junit.Test;
import org.openqa.selenium.By;
import com.codeborne.selenide.Condition;
public class MovieIT extends AbstractSelenideIT {
@Test
public void searchByCompleteTitleTest() {
open("/");
$(By.linkText("Login")).click();
$$(".QueryAllQuery").findBy(text("Movie")).find("input")
.setValue(" EOF Next Generation");
$(By.linkText("Find")).click();
// verify "EOF Next Generation" is listed
$(".ListMovieObjTable").shouldHave(text("EOF Next Generation"));
// and that it is the only match
$$(".ListMovieObjTable tr.ObjRow").shouldHaveSize(1);
}
@Test
public void searchByPartialTitleTest() {
open("/");
$(By.linkText("Login")).click();
// use the movie query page
$(By.linkText("Movies")).click();
$(".TitleLine").find("select").selectOption("contains");
$(".TitleLine").find("input").setValue("Next");
$(By.linkText("Find")).click();
// verify "EOF Next Generation" is listed
$(".ListMovieObjTable").shouldHave(text("EOF Next Generation"));
// and that there are two matches
$$(".ListMovieObjTable tr.ObjRow").shouldHaveSize(2);
}
@Test
public void renameTitleTest() {
open("/");
$(By.linkText("Login")).click();
$(By.linkText("Movies")).click();
// get list of all movies
$(By.linkText("Find")).click();
// edit movie with title "EOF Next Generation"
$$(".ListMovieObjTable tr.ObjRow").findBy(text("EOF Next Generation"))
.find(By.linkText("Edit")).click();
// set title to "Cayenne"
$(".TitleLabel").parent().parent().find("input").setValue("Cayenne");
$(By.linkText("Save")).click();
// select second batch
$(By.linkText("2")).click();
// edit movie with title "Cayenne"
$$(".ListMovieObjTable tr").findBy(text("Cayenne")).find(By.linkText("Edit"))
.click();
// set title to " EOF Next Generation"
$(".TitleLabel").parent().parent().find("input").setValue(" EOF Next Generation");
$(By.linkText("Save")).click();
// select first batch
$(By.linkText("1")).click();
// verify "EOF Next Generation" is listed
$(".ListMovieObjTable").shouldHave(text("EOF Next Generation"));
}
@Test
public void createMovieTest() {
open("/");
$(By.linkText("Login")).click();
// use the movie query page
$(By.linkText("Movies")).click();
$(By.linkText("New")).click();
// trigger validation exception
$(By.linkText("Next")).click();
$(".ErrBlock").shouldHave(text("Please provide a title."));
$(".TitleLine").find("input").setValue("Snatch");
$(".CategoryLine").find("input").setValue("Comedy");
$(".DateReleasedLine").find("input").setValue("2000-09-01");
$(By.linkText("Next")).click();
// edit to one relation, fill a few characters
$(".StudioLine").find("input").setValue("Colum");
// there should be only one match
$$("div.auto_complete ul li").shouldHaveSize(1);
// select matching studio
$("div.auto_complete ul li").click();
$(".StudioLine").find("input").shouldHave(value("Columbia Pictures"));
// when the relation is set, a delete button should be shown
$(".StudioLine .DeleteObjButton").shouldBe(Condition.present);
$(By.linkText("Next")).click();
// add a new director
$(".DirectorsLine").$(By.linkText("New")).click();
$(".FirstNameLine").find("input").setValue("Guy");
$(".LastNameLine").find("input").setValue("Ritchie");
$(By.linkText("Save")).click();
// verify a director has been set
$(".ERMDBatchSize_Wrapper").shouldHave(text("1 item"));
$(By.linkText("Next")).click();
// add a role
$(".RolesLine").$(By.linkText("New")).click();
$(".RoleNameLine").find("input").setValue("Mickey O'Neil");
// search for existing actor
$(".TalentLine").$(By.linkText("Search")).click();
$(".FirstNameLine").find("input").setValue("Brad");
$(By.linkText("Find")).click();
// there should be only one match
$$(".SelectEmbeddedTalentObjRow").shouldHaveSize(1);
// select matching actor
$(".SelectEmbeddedTalentObjRow").$(By.linkText("Select")).click();
$(By.linkText("Return")).click();
// save role
$(".CreateEmbeddedMovieRoleWrapper").$(By.linkText("Save")).click();
// cancel creation
$(By.linkText("Cancel")).click();
// we should see a warning
$(".Message").shouldHave(
text("Are you sure you want to stop creating this Movie?"));
$(By.linkText("Cancel")).click();
// save
$(By.linkText("Save")).click();
// search for the newly created movie
$(".TitleLine").find("input").setValue("Snatch");
$(By.linkText("Find")).click();
// there should be only one match
$$(".ListMovieObjRow").shouldHaveSize(1);
// delete the movie
$(".ListMovieObjRow").find(".DeleteObjButton").click();
$(By.linkText("Delete")).click();
$(".ERMDEmptyListMessage").shouldHave(text("No matching Movie records found."));
}
}