package de.flower.rmt.ui.page.user.manager;
import de.flower.rmt.model.db.entity.User;
import de.flower.rmt.model.db.entity.User_;
import de.flower.rmt.test.AbstractRMTWicketIntegrationTests;
import de.flower.rmt.ui.model.UserModel;
import org.apache.wicket.Component;
import org.apache.wicket.markup.html.form.Form;
import org.testng.annotations.Test;
import static org.testng.Assert.*;
/**
* @author flowerrrr
*/
public class PlayerGeneralPanelITest extends AbstractRMTWicketIntegrationTests {
@Test
public void validateConstraints() {
wicketTester.startComponentInPage(new PlayerGeneralPanel("panel", new UserModel()));
// get user under test
Form<User> form = (Form<User>) wicketTester.getComponentFromLastRenderedPage("form");
User userUnderTest = form.getModelObject();
wicketTester.dumpPage();
wicketTester.debugComponentTrees();
// input email and validate field
Component email = wicketTester.getComponentFromLastRenderedPage("email:input");
wicketTester.assertAjaxValidationError(email, ""); // field cannot be empty
wicketTester.assertNoAjaxValidationError(email, "foo@bar.com");
wicketTester.assertAjaxValidationError(email, "not-an-email-address"); // invalid email format
// set email to existing user and re-validate field -> not unique validator must fire
User user = userManager.loadById(1L, User_.club);
assertEquals(user.getClub(), userUnderTest.getClub());
wicketTester.assertAjaxValidationError(email, user.getEmail());
wicketTester.assertNoAjaxValidationError(email, "foo@bar.com");
// test fullname field
Component fullname = wicketTester.getComponentFromLastRenderedPage("fullname:input");
wicketTester.assertAjaxValidationError(fullname, "");// cannot be blank
wicketTester.assertNoAjaxValidationError(fullname, "foo bar");
wicketTester.assertAjaxValidationError(fullname, user.getFullname()); // must be unique per club
// but fullname must not be unique across different clubs
user = userRepo.findOne(5L);
// assertNotEquals(user.getClub().getId(), userUnderTest.getClub().getId());
wicketTester.assertNoAjaxValidationError(fullname, user.getFullname());
}
}