package org.lightadmin.crudOperations.edit;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.lightadmin.LoginOnce;
import org.lightadmin.RunWithConfiguration;
import org.lightadmin.SeleniumIntegrationTest;
import org.lightadmin.config.CustomerTestEntityConfiguration;
import org.lightadmin.config.OrderTestEntityWithComplexFields;
import org.lightadmin.config.TestAddressConfiguration;
import org.lightadmin.config.TestLineItemConfiguration;
import org.lightadmin.data.Domain;
import org.lightadmin.page.EditPage;
import org.lightadmin.page.ShowViewPage;
import static org.lightadmin.util.DomainAsserts.assertFieldValues;
@RunWithConfiguration( {TestLineItemConfiguration.class,
TestAddressConfiguration.class,
CustomerTestEntityConfiguration.class,
OrderTestEntityWithComplexFields.class})
@LoginOnce( domain = Domain.TEST_ORDERS )
public class ComplexFields extends SeleniumIntegrationTest {
private EditPage editPage;
private ShowViewPage showView;
@Before
public void refreshListView(){
getStartPage().navigateToDomain( Domain.TEST_ORDERS );
}
@After
public void cleanup() {
repopulateDatabase();
}
@Test
public void canBeCleared() {
clearAllFieldsAndSave();
assertFieldValues( new String[]{" ", " ", " ", "0", " "}, showView.getFieldValuesExcludingId() );
}
@Test
public void selectionsCanBeReplaced() {
replaceSelectionsAndSave();
assertFieldValues( new String[]{ "New Customer",
"Baker, London, United Kingdom\n" +
"Kreschatik, Kiev, Ukraine\n" +
"Vesterbrogade, Copenhagen, Denmark",
"LineItem Id: 113; Product Name: Product 1\n" +
"LineItem Id: 110; Product Name: Product 3\n" +
"LineItem Id: 114; Product Name: Product 1",
"19657.00",
"2013-10-08"},
showView.getFieldValuesExcludingId() );
}
@Test
public void selectionCanBeAdded() {
addSelectionsAndSave();
assertFieldValues( new String[]{ "Carter",
"Kreschatik, Kiev, Ukraine\n" +
"Usteristrasse, Zurich, Switzerland\n" +
"Via Aurelia, Rome, Italy",
"LineItem Id: 108; Product Name: Product 1\n" +
"LineItem Id: 109; Product Name: Product 2\n" +
"LineItem Id: 110; Product Name: Product 3\n" +
"LineItem Id: 114; Product Name: Product 1",
"20671.00",
" "},
showView.getFieldValuesExcludingId() );
}
@Test
public void dateFieldCanModifiedViaDatePicker() {
modifyDateViaDatePickerAndSave();
assertFieldValues( new String[]{"Dave",
"Kreschatik, Kiev, Ukraine",
"LineItem Id: 115; Product Name: Product 3",
"588.00",
selectedDate},
showView.getFieldValuesExcludingId() );
}
@Test
public void dateFieldCanBeModifiedManually() {
modifyDateManuallyAndSave();
assertFieldValues( new String[]{"Dave",
"Kreschatik, Kiev, Ukraine",
"LineItem Id: 116; Product Name: Product 2",
"40269.00",
"2014-12-14"},
showView.getFieldValuesExcludingId() );
}
private void clearAllFieldsAndSave() {
editPage = getStartPage().editItem( 4 );
editPage.clearSelection( "customer" );
editPage.clearSelection( "shippingAddresses" );
editPage.clearSelection( "lineItems" );
editPage.clear( "dueDate" );
showView = editPage.submit();
}
private void addSelectionsAndSave() {
editPage = getStartPage().editItem( 5 );
editPage.select( "shippingAddresses", "Kreschatik, Kiev, Ukraine" );
editPage.select( "lineItems",
"110. Product: Product 3; Amount: 4; Total: 196.00", "114. Product: Product 1; Amount: 7; Total: 3493.00" );
showView = editPage.submit();
}
private void replaceSelectionsAndSave() {
editPage = getStartPage().editItem( 6 );
editPage.select( "customer", "New Customer" );
editPage.replaceFieldSelections( "shippingAddresses",
new String[]{ "Marksistskaya, Moscow, Russia" },
new String[]{ "Vesterbrogade, Copenhagen, Denmark", "Baker, London, United Kingdom" } );
editPage.replaceFieldSelections( "lineItems",
new String[]{ "111. Product: Product 3; Amount: 6; Total: 294.00",
"112. Product: Product 2; Amount: 12; Total: 15588.00" },
new String[]{ "110. Product: Product 3; Amount: 4; Total: 196.00",
"114. Product: Product 1; Amount: 7; Total: 3493.00" } );
showView = editPage.submit();
}
private void modifyDateViaDatePickerAndSave() {
editPage = getStartPage().editItem( 7 );
selectedDate = editPage.selectDateOfCurrentMonth( "dueDate", "13" );
showView = editPage.submit();
}
private void modifyDateManuallyAndSave() {
editPage = getStartPage().editItem( 8 );
editPage.type( "dueDate", "2014-12-14" );
showView = editPage.submit();
}
private String selectedDate;
}