summaryrefslogtreecommitdiffstats
path: root/uitest/src/com
diff options
context:
space:
mode:
Diffstat (limited to 'uitest/src/com')
-rw-r--r--uitest/src/com/vaadin/tests/fieldgroup/DateForm.html42
-rw-r--r--uitest/src/com/vaadin/tests/fieldgroup/DateForm.java150
-rw-r--r--uitest/src/com/vaadin/tests/minitutorials/v70/SimpleLoginMainView.java42
-rw-r--r--uitest/src/com/vaadin/tests/minitutorials/v70/SimpleLoginUI.java64
-rw-r--r--uitest/src/com/vaadin/tests/minitutorials/v70/SimpleLoginView.java137
5 files changed, 435 insertions, 0 deletions
diff --git a/uitest/src/com/vaadin/tests/fieldgroup/DateForm.html b/uitest/src/com/vaadin/tests/fieldgroup/DateForm.html
new file mode 100644
index 0000000000..f141091805
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/fieldgroup/DateForm.html
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head profile="http://selenium-ide.openqa.org/profiles/test-case">
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<link rel="selenium.base" href="http://localhost:8888/" />
+<title>New Test</title>
+</head>
+<body>
+<table cellpadding="1" cellspacing="1" border="1">
+<thead>
+<tr><td rowspan="1" colspan="3">New Test</td></tr>
+</thead><tbody>
+<tr>
+ <td>open</td>
+ <td>/run/com.vaadin.tests.fieldgroup.DateForm?restartApplication</td>
+ <td></td>
+</tr>
+<tr>
+ <td>assertValue</td>
+ <td>vaadin=runcomvaadintestsfieldgroupDateForm::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[1]/VPopupCalendar[0]#field</td>
+ <td>1/20/84</td>
+</tr>
+<tr>
+ <td>assertValue</td>
+ <td>vaadin=runcomvaadintestsfieldgroupDateForm::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[2]/VPopupCalendar[0]#field</td>
+ <td>1/20/84</td>
+</tr>
+<tr>
+ <td>assertCSSClass</td>
+ <td>vaadin=runcomvaadintestsfieldgroupDateForm::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[3]/VDateFieldCalendar[0]/VCalendarPanel[0]#day20</td>
+ <td>v-inline-datefield-calendarpanel-day-selected</td>
+</tr>
+<tr>
+ <td>assertValue</td>
+ <td>vaadin=runcomvaadintestsfieldgroupDateForm::/VVerticalLayout[0]/Slot[1]/VVerticalLayout[0]/Slot[4]/VTextField[0]</td>
+ <td>Jan 20, 1984 4:34:49 PM</td>
+</tr>
+
+</tbody></table>
+</body>
+</html>
diff --git a/uitest/src/com/vaadin/tests/fieldgroup/DateForm.java b/uitest/src/com/vaadin/tests/fieldgroup/DateForm.java
new file mode 100644
index 0000000000..0d906a086b
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/fieldgroup/DateForm.java
@@ -0,0 +1,150 @@
+package com.vaadin.tests.fieldgroup;
+
+import java.util.Date;
+
+import com.vaadin.data.fieldgroup.BeanFieldGroup;
+import com.vaadin.data.fieldgroup.FieldGroup;
+import com.vaadin.data.fieldgroup.FieldGroup.CommitException;
+import com.vaadin.data.fieldgroup.PropertyId;
+import com.vaadin.data.util.BeanItem;
+import com.vaadin.tests.components.TestBase;
+import com.vaadin.tests.data.bean.Person;
+import com.vaadin.tests.util.Log;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.DateField;
+import com.vaadin.ui.InlineDateField;
+import com.vaadin.ui.Notification;
+import com.vaadin.ui.PopupDateField;
+import com.vaadin.ui.TextField;
+
+public class DateForm extends TestBase {
+
+ private Log log = new Log(5);
+ @PropertyId("date1")
+ private DateField dateField;
+ @PropertyId("date2")
+ private PopupDateField popupDateField;
+ @PropertyId("date3")
+ private InlineDateField inlineDateField;
+ @PropertyId("date4")
+ private TextField textField;
+
+ public static class DateObject {
+ private Date date1, date2, date3, date4;
+
+ public DateObject(Date date1, Date date2, Date date3, Date date4) {
+ super();
+ this.date1 = date1;
+ this.date2 = date2;
+ this.date3 = date3;
+ this.date4 = date4;
+ }
+
+ public Date getDate1() {
+ return date1;
+ }
+
+ public void setDate1(Date date1) {
+ this.date1 = date1;
+ }
+
+ public Date getDate2() {
+ return date2;
+ }
+
+ public void setDate2(Date date2) {
+ this.date2 = date2;
+ }
+
+ public Date getDate3() {
+ return date3;
+ }
+
+ public void setDate3(Date date3) {
+ this.date3 = date3;
+ }
+
+ public Date getDate4() {
+ return date4;
+ }
+
+ public void setDate4(Date date4) {
+ this.date4 = date4;
+ }
+
+ }
+
+ @Override
+ protected void setup() {
+ addComponent(log);
+ final FieldGroup fieldGroup = new BeanFieldGroup<DateObject>(
+ DateObject.class);
+ fieldGroup.setBuffered(true);
+
+ fieldGroup.buildAndBindMemberFields(this);
+ textField.setWidth("20em");
+ addComponent(dateField);
+ addComponent(popupDateField);
+ addComponent(inlineDateField);
+ addComponent(textField);
+
+ Button commitButton = new Button("Commit", new Button.ClickListener() {
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ String msg = "Commit succesful";
+ try {
+ fieldGroup.commit();
+ } catch (CommitException e) {
+ msg = "Commit failed: " + e.getMessage();
+ }
+ Notification.show(msg);
+ log.log(msg);
+
+ }
+ });
+ Button discardButton = new Button("Discard",
+ new Button.ClickListener() {
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ fieldGroup.discard();
+ log.log("Discarded changes");
+
+ }
+ });
+ Button showBean = new Button("Show bean values",
+ new Button.ClickListener() {
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ log.log(getPerson(fieldGroup).toString());
+
+ }
+ });
+ addComponent(commitButton);
+ addComponent(discardButton);
+ addComponent(showBean);
+
+ DateObject d = new DateObject(new Date(443457289789L), new Date(
+ 443457289789L), new Date(443457289789L),
+ new Date(443457289789L));
+ fieldGroup.setItemDataSource(new BeanItem<DateObject>(d));
+ }
+
+ public static Person getPerson(FieldGroup binder) {
+ return ((BeanItem<Person>) binder.getItemDataSource()).getBean();
+ }
+
+ @Override
+ protected String getDescription() {
+ return "Ensure FieldGroupFieldFactory supports Dates";
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return 8539;
+ }
+
+}
diff --git a/uitest/src/com/vaadin/tests/minitutorials/v70/SimpleLoginMainView.java b/uitest/src/com/vaadin/tests/minitutorials/v70/SimpleLoginMainView.java
new file mode 100644
index 0000000000..cb59aa1608
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/minitutorials/v70/SimpleLoginMainView.java
@@ -0,0 +1,42 @@
+package com.vaadin.tests.minitutorials.v70;
+
+import com.vaadin.navigator.View;
+import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.CssLayout;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.Label;
+
+public class SimpleLoginMainView extends CustomComponent implements View {
+
+ public static final String NAME = "";
+
+ Label text = new Label();
+
+ Button logout = new Button("Logout", new Button.ClickListener() {
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+
+ // "Logout" the user
+ getSession().setAttribute("user", null);
+
+ // Refresh this view, should redirect to login view
+ getUI().getNavigator().navigateTo(NAME);
+ }
+ });
+
+ public SimpleLoginMainView() {
+ setCompositionRoot(new CssLayout(text, logout));
+ }
+
+ @Override
+ public void enter(ViewChangeEvent event) {
+ // Get the user name from the session
+ String username = String.valueOf(getSession().getAttribute("user"));
+
+ // And show the username
+ text.setValue("Hello " + username);
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/minitutorials/v70/SimpleLoginUI.java b/uitest/src/com/vaadin/tests/minitutorials/v70/SimpleLoginUI.java
new file mode 100644
index 0000000000..2fbbff10a8
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/minitutorials/v70/SimpleLoginUI.java
@@ -0,0 +1,64 @@
+package com.vaadin.tests.minitutorials.v70;
+
+import com.vaadin.navigator.Navigator;
+import com.vaadin.navigator.ViewChangeListener;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.ui.UI;
+
+public class SimpleLoginUI extends UI {
+
+ @Override
+ protected void init(VaadinRequest request) {
+
+ /*
+ * Create a new instance of the navigator. The navigator will attach
+ * itself automatically to this view.
+ */
+ new Navigator(this, this);
+
+ /*
+ * The initial log view where the user can login to the application
+ */
+ getNavigator().addView(SimpleLoginView.NAME, SimpleLoginView.class);
+
+ /*
+ * Add the main view of the application
+ */
+ getNavigator().addView(SimpleLoginMainView.NAME,
+ SimpleLoginMainView.class);
+
+ /*
+ * We use a view change handler to ensure the user is always redirected
+ * to the login view if the user is not logged in.
+ */
+ getNavigator().addViewChangeListener(new ViewChangeListener() {
+
+ @Override
+ public boolean beforeViewChange(ViewChangeEvent event) {
+
+ // Check if a user has logged in
+ boolean isLoggedIn = getSession().getAttribute("user") != null;
+ boolean isLoginView = event.getNewView() instanceof SimpleLoginView;
+
+ if (!isLoggedIn && !isLoginView) {
+ // Redirect to login view always if a user has not yet
+ // logged in
+ getNavigator().navigateTo(SimpleLoginView.NAME);
+ return false;
+
+ } else if (isLoggedIn && isLoginView) {
+ // If someone tries to access to login view while logged in,
+ // then cancel
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public void afterViewChange(ViewChangeEvent event) {
+
+ }
+ });
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/minitutorials/v70/SimpleLoginView.java b/uitest/src/com/vaadin/tests/minitutorials/v70/SimpleLoginView.java
new file mode 100644
index 0000000000..88a2a8f678
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/minitutorials/v70/SimpleLoginView.java
@@ -0,0 +1,137 @@
+package com.vaadin.tests.minitutorials.v70;
+
+import com.vaadin.data.validator.AbstractValidator;
+import com.vaadin.data.validator.EmailValidator;
+import com.vaadin.navigator.View;
+import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent;
+import com.vaadin.shared.ui.MarginInfo;
+import com.vaadin.ui.Alignment;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.PasswordField;
+import com.vaadin.ui.TextField;
+import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.themes.Reindeer;
+
+public class SimpleLoginView extends CustomComponent implements View,
+ Button.ClickListener {
+
+ public static final String NAME = "login";
+
+ private final TextField user;
+
+ private final PasswordField password;
+
+ private final Button loginButton;
+
+ public SimpleLoginView() {
+ setSizeFull();
+
+ // Create the user input field
+ user = new TextField("User:");
+ user.setWidth("300px");
+ user.setRequired(true);
+ user.setInputPrompt("Your username (eg. joe@email.com)");
+ user.addValidator(new EmailValidator("Username must be an email address"));
+ user.setInvalidAllowed(false);
+
+ // Create the password input field
+ password = new PasswordField("Password:");
+ password.setWidth("300px");
+ password.addValidator(new PasswordValidator());
+ password.setRequired(true);
+ password.setValue("");
+ password.setNullRepresentation("");
+
+ // Create login button
+ loginButton = new Button("Login", this);
+
+ // Add both to a panel
+ VerticalLayout fields = new VerticalLayout(user, password, loginButton);
+ fields.setCaption("Please login to access the application. (test@test.com/passw0rd)");
+ fields.setSpacing(true);
+ fields.setMargin(new MarginInfo(true, true, true, false));
+ fields.setSizeUndefined();
+
+ // The view root layout
+ VerticalLayout viewLayout = new VerticalLayout(fields);
+ viewLayout.setSizeFull();
+ viewLayout.setComponentAlignment(fields, Alignment.MIDDLE_CENTER);
+ viewLayout.setStyleName(Reindeer.LAYOUT_BLUE);
+ setCompositionRoot(viewLayout);
+ }
+
+ @Override
+ public void enter(ViewChangeEvent event) {
+ // focus the username field when user arrives to the login view
+ user.focus();
+ }
+
+ /*
+ * Validator for validating the passwords
+ */
+ private static final class PasswordValidator extends
+ AbstractValidator<String> {
+
+ public PasswordValidator() {
+ super("The password provided is not valid");
+ }
+
+ @Override
+ protected boolean isValidValue(String value) {
+ /*
+ * Password must be at least 8 characters long and contain at least
+ * one number
+ */
+ if (value != null
+ && (value.length() < 8 || !value.matches(".*\\d.*"))) {
+ return false;
+ }
+ return true;
+ }
+
+ @Override
+ public Class<String> getType() {
+ return String.class;
+ }
+ }
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+
+ /*
+ * Validate the fields using the navigator. By using validors for the
+ * fields we reduce the amount of queries we have to use to the database
+ * for wrongly entered passwords
+ */
+ if (!user.isValid() || !password.isValid()) {
+ return;
+ }
+
+ String username = user.getValue();
+ String password = this.password.getValue();
+
+ /*
+ * Validate username and password with database here. For examples sake
+ * I use a dummy username and password.
+ */
+ boolean isValid = username.equals("test@test.com")
+ && password.equals("passw0rd");
+
+ if(isValid){
+ // Store the current user in the service session
+ getSession().setAttribute("user", username);
+
+ // Navigate to main view
+ getUI().getNavigator().navigateTo(SimpleLoginMainView.NAME);
+
+ } else {
+
+ // Wrong password clear the password field and refocuses it
+ this.password.setValue(null);
+ this.password.focus();
+ }
+ }
+}
+