Skip to content

Commit

Permalink
Convert LoginForm to use new TextField
Browse files Browse the repository at this point in the history
Add basic tests for logging in and for changing caption

Change-Id: I6dca2eedb5832db0eb409f0621092d0e723e0654
  • Loading branch information
Artur- committed Aug 25, 2016
1 parent ee5e3ec commit 9adce46
Show file tree
Hide file tree
Showing 8 changed files with 344 additions and 142 deletions.
Expand Up @@ -30,10 +30,10 @@
import com.vaadin.client.ConnectorHierarchyChangeEvent;
import com.vaadin.client.communication.StateChangeEvent;
import com.vaadin.client.ui.AbstractSingleComponentContainerConnector;
import com.vaadin.client.ui.VTextField;
import com.vaadin.client.ui.button.ButtonConnector;
import com.vaadin.client.ui.nativebutton.NativeButtonConnector;
import com.vaadin.client.v7.ui.VLegacyTextField;
import com.vaadin.client.v7.ui.textfield.LegacyTextFieldConnector;
import com.vaadin.client.ui.textfield.TextFieldConnector;
import com.vaadin.shared.Connector;
import com.vaadin.shared.ui.Connect;
import com.vaadin.shared.ui.loginform.LoginFormConstants;
Expand All @@ -44,8 +44,6 @@
public class LoginFormConnector
extends AbstractSingleComponentContainerConnector {

private VLegacyTextField passwordField;
private VLegacyTextField userField;
private LoginFormRpc loginFormRpc;

@Override
Expand Down Expand Up @@ -93,20 +91,25 @@ public void onStateChanged(StateChangeEvent stateChangeEvent) {
super.onStateChanged(stateChangeEvent);

LoginFormState state = getState();
userField = configureTextField(state.userNameFieldConnector,
"username");
passwordField = configureTextField(state.passwordFieldConnector,
"password");
configureTextField(getUsernameFieldConnector(), "username");
configureTextField(getPasswordFieldConnector(), "password");
addSubmitButtonClickHandler(state.loginButtonConnector);
getWidget().setAction(
getResourceUrl(LoginFormConstants.LOGIN_RESOURCE_NAME));
}

private VLegacyTextField configureTextField(Connector connector,
private TextFieldConnector getUsernameFieldConnector() {
return (TextFieldConnector) getState().userNameFieldConnector;
}

private TextFieldConnector getPasswordFieldConnector() {
return (TextFieldConnector) getState().passwordFieldConnector;
}

private VTextField configureTextField(TextFieldConnector connector,
String id) {
if (connector != null) {
VLegacyTextField textField = ((LegacyTextFieldConnector) connector)
.getWidget();
VTextField textField = connector.getWidget();

textField.addKeyDownHandler(new SubmitKeyHandler());

Expand Down Expand Up @@ -159,11 +162,13 @@ public void onClick(ClickEvent event) {
}

private void valuesChanged() {
if (passwordField != null) {
passwordField.valueChange(true);
TextFieldConnector connector = getUsernameFieldConnector();
if (connector != null) {
connector.flush();
}
if (userField != null) {
userField.valueChange(true);
connector = getPasswordFieldConnector();
if (connector != null) {
connector.flush();
}
}

Expand Down
@@ -0,0 +1,107 @@
package com.vaadin.tests.server.component.loginform;

import java.util.Iterator;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import com.vaadin.tests.util.MockUI;
import com.vaadin.ui.Button;
import com.vaadin.ui.Component;
import com.vaadin.ui.HasComponents;
import com.vaadin.ui.LoginForm;
import com.vaadin.ui.NativeButton;
import com.vaadin.ui.PasswordField;
import com.vaadin.ui.TextField;
import com.vaadin.ui.UI;

public class LoginFormTest {

private LoginForm loginForm;

@Before
public void setup() {
loginForm = new LoginForm();
}

@Test
public void defaultCaptions() {
Assert.assertEquals("Username", loginForm.getUsernameCaption());
Assert.assertEquals("Password", loginForm.getPasswordCaption());
Assert.assertEquals("Login", loginForm.getLoginButtonCaption());
}

@Test
public void changeCaptionsBeforeAttach() {
loginForm.setUsernameCaption("u");
loginForm.setPasswordCaption("p");
loginForm.setLoginButtonCaption("l");

Assert.assertEquals("u", loginForm.getUsernameCaption());
Assert.assertEquals("p", loginForm.getPasswordCaption());
Assert.assertEquals("l", loginForm.getLoginButtonCaption());
}

@Test
public void changeCaptionsAfterAttach() {
UI ui = new MockUI();
ui.setContent(loginForm);
loginForm.setUsernameCaption("u");
loginForm.setPasswordCaption("p");
loginForm.setLoginButtonCaption("l");

Assert.assertEquals("u", loginForm.getUsernameCaption());
Assert.assertEquals("p", loginForm.getPasswordCaption());
Assert.assertEquals("l", loginForm.getLoginButtonCaption());
}

@Test
public void changeCaptionsBeforeAndAfterAttach() {
loginForm.setUsernameCaption("a");
loginForm.setPasswordCaption("a");
loginForm.setLoginButtonCaption("a");

UI ui = new MockUI();
ui.setContent(loginForm);
loginForm.setUsernameCaption("u");
loginForm.setPasswordCaption("p");
loginForm.setLoginButtonCaption("l");

Assert.assertEquals("u", loginForm.getUsernameCaption());
Assert.assertEquals("p", loginForm.getPasswordCaption());
Assert.assertEquals("l", loginForm.getLoginButtonCaption());
}

@Test
public void customizedFields() {
LoginForm customForm = new LoginForm() {
@Override
protected Button createLoginButton() {
return new NativeButton("Do it");
}

@Override
protected TextField createUsernameField() {
TextField tf = new TextField("Username caption");
tf.setPlaceholder("Name goes here");
return tf;
}

@Override
protected PasswordField createPasswordField() {
PasswordField pf = new PasswordField("Password caption");
pf.setPlaceholder("Secret goes here");
return pf;
}
};

UI ui = new MockUI();
ui.setContent(customForm);
Iterator<Component> i = ((HasComponents) customForm.iterator().next())
.iterator();
Assert.assertEquals("Username caption", i.next().getCaption());
Assert.assertEquals("Password caption", i.next().getCaption());
Assert.assertEquals("Do it", i.next().getCaption());
}
}
@@ -0,0 +1,9 @@
package com.vaadin.testbench.customelements;

import com.vaadin.testbench.elements.AbstractSingleComponentContainerElement;
import com.vaadin.testbench.elementsbase.ServerClass;

@ServerClass("com.vaadin.ui.LoginForm")
public class LoginFormElement extends AbstractSingleComponentContainerElement {

}
@@ -1,18 +1,33 @@
package com.vaadin.tests.components.loginform;

public class CustomizedLoginFormTest extends LoginFormTest {
import java.util.Optional;

import com.vaadin.server.VaadinRequest;

public class CustomizedLoginFormUI extends LoginFormUI {

@Override
protected void setup(VaadinRequest request) {
super.setup(request);
}

@Override
protected void setup() {
super.setup();
protected Optional<String> getUsernameCaption() {
return Optional.of("Identifiant");
}

loginForm.setUsernameCaption("Identifiant");
loginForm.setPasswordCaption("Mot de passe");
loginForm.setLoginButtonCaption("Se connecter");
@Override
protected Optional<String> getPasswordCaption() {
return Optional.of("Mot de passe");
}

@Override
protected Optional<String> getLoginCaption() {
return Optional.of("Se connecter");
}

@Override
protected String getDescription() {
protected String getTestDescription() {
return "Customization of the captions on the LoginForm component. Three login forms should be visible (undefined height, undefined width, defined height and width). Entering a username+password in a login form and clicking 'login' should replace the login form with a label telling the user name as password. Also a logout button should then be shown and pressing that takes the user back to the original screen with the LoginForm";
}

Expand Down

This file was deleted.

0 comments on commit 9adce46

Please sign in to comment.