package org.lightadmin.crudOperations.create; 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.CreatePage; 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 CreatePage createPage; private ShowViewPage showView; @Before public void setup() { createPage = getStartPage().navigateToCreatePage(); } @After public void cleanup() { repopulateDatabase(); } @Test public void itemCanBeCreatedWithAllFieldsFilledIn() { fillInFieldsAndSave(); assertFieldValues( new String[]{ "Order Holder", "Marksistskaya, Moscow, Russia\n" + "Via Aurelia, Rome, Italy", "LineItem Id: 104; Product Name: Product 2", "432567.00", selectedDate }, showView.getFieldValuesExcludingId() ); } @Test public void itemCanBeCreatedWithAllFieldsEmpty() { leaveFieldsEmptyAndSave(); assertFieldValues( new String[]{ " ", " ", " ", "0", " " }, showView.getFieldValuesExcludingId() ); } @Test public void associatedFieldValuesCanBeFilteredByTyping() { createPage.searchAndSelect( "customer", "c", "New Customer" ); createPage.searchAndSelect( "shippingAddresses", "Rome", "Rome, Italy" ); createPage.searchAndSelect( "shippingAddresses", "Ukraine", "Kiev, Ukraine" ); createPage.searchAndSelect( "lineItems", "55", "Product: Product 2; Amount: 1; Total: 1299.00" ); createPage.searchAndSelect( "lineItems", "49.00", "67. Product: Product 3; Amount: 1; Total: 49.00" ); showView = createPage.submit(); assertFieldValues( new String[]{ "New Customer", "Kreschatik, Kiev, Ukraine\n" + "Via Aurelia, Rome, Italy", "LineItem Id: 55; Product Name: Product 2\n" + "LineItem Id: 67; Product Name: Product 3", "1348.00", " " }, showView.getFieldValuesExcludingId() ); } private void fillInFieldsAndSave() { createPage.select( "customer", "Order Holder" ); createPage.select( "shippingAddresses", "Marksistskaya, Moscow, Russia", "Via Aurelia, Rome, Italy" ); createPage.select( "lineItems", "104. Product: Product 2; Amount: 333; Total: 432567.00" ); selectedDate = createPage.selectDateOfCurrentMonth( "dueDate", "8" ); showView = createPage.submit(); } private void leaveFieldsEmptyAndSave() { showView = createPage.submit(); } private String selectedDate; }