@Override public void writeToItem(PropertysetItem newValues) { Iterator<?> propertyNames = newValues.getItemPropertyIds().iterator(); while (propertyNames.hasNext()) { String propertyName = (String) propertyNames.next(); if (propertyName.equals(compositeFieldName)) { PropertysetItem values = (PropertysetItem) newValues.getItemProperty(propertyName).getValue(); Iterator<?> names = values.getItemPropertyIds().iterator(); while (names.hasNext()) { String name = (String) names.next(); Property<?> property = relatedFormItem.getItemProperty(name); if (property == null) { relatedFormItem.addItemProperty(name, values.getItemProperty(name)); } } } } String propertyName = definePropertyName(); if (newValues.getItemProperty(propertyName) != null) { relatedFormItem.addItemProperty(propertyName, newValues.getItemProperty(propertyName)); } }
@Override public Object answer(InvocationOnMock inv) throws Throwable { final Object[] args = inv.getArguments(); final EditorCallback callback = (EditorCallback) args[3]; final Item item = (Item) args[0]; Property property = new TextField(); property.setValue(versionName); item.addItemProperty(ShowVersionsAction.VersionName.PROPERTY_NAME_VERSION_NAME, property); callback.onSuccess("commit"); return null; } }).when(formDialogPresenter).start(any(Item.class), any(FormDialogDefinition.class), any(UiContext.class), any(EditorCallback.class), any(ContentConnector.class));
@Test public void executeCreatesProperty() throws RepositoryException, ActionExecutionException { // GIVEN Node node = session.getRootNode().addNode("underlying"); Item item = new JcrNodeAdapter(node); item.addItemProperty("property", new ObjectProperty<>("changed")); SaveDialogAction<SaveDialogActionDefinition> action = new SaveDialogAction<>(definition, item, validator, callback); // WHEN action.execute(); // THEN node = session.getRootNode().getNode("underlying"); assertEquals(true, node.hasProperty("property")); assertEquals("changed", node.getProperty("property").getString()); }
@Test public void createFieldResolvesAceModeFromFileExtension() throws Exception { // GIVEN definition.setFileNameProperty(JCR_NAME); baseItem.addItemProperty(JCR_NAME, new ObjectProperty<>("test.ftl")); // WHEN AceEditor aceEditor = (AceEditor) factory.createField(); AceEditorState aceEditorState = editorStateFor(aceEditor); // THEN assertThat(aceEditorState.mode, is(AceMode.ftl.toString())); }
@Test public void createFieldResolvesAceModeFromAdditionalMappingsIfAceModeDoesntMatch() throws Exception { // GIVEN definition.setFileNameProperty(JCR_NAME); baseItem.addItemProperty(JCR_NAME, new ObjectProperty<>("test.hh")); // WHEN AceEditor aceEditor = (AceEditor) factory.createField(); AceEditorState aceEditorState = editorStateFor(aceEditor); // THEN assertThat(aceEditorState.mode, is(AceMode.c_cpp.toString())); }
@Test public void createFieldFavoursLanguageOverFileNameProperty() throws Exception { // GIVEN definition.setLanguage("freemarker"); definition.setFileNameProperty(JCR_NAME); baseItem.addItemProperty(JCR_NAME, new ObjectProperty<>("test.ada")); // WHEN AceEditor aceEditor = (AceEditor) factory.createField(); AceEditorState aceEditorState = editorStateFor(aceEditor); // THEN assertThat(aceEditorState.mode, is(AceMode.ftl.toString())); }
@Test public void fieldEventTest() throws RepositoryException { // GIVEN baseItem.addItemProperty(LinkFieldFactory.PATH_PROPERTY_NAME, new ObjectProperty<>(null, String.class)); builder = new LinkFieldSelectionFactory(definition, baseItem, uiContext, i18NAuthoringSupport, workbenchPresenter, eventBus); builder.setComponentProvider(componentProvider); Field field = builder.createField(); itemIds.add(JcrItemUtil.getItemId(baseNode)); // WHEN eventBus.fireEvent(new SelectionChangedEvent(itemIds)); // THEN // as No columnName defined return the Item path as Value property assertEquals(baseNode.getPath(), field.getValue()); }
@Test public void buildFieldSimpleTest() { // GIVEN baseItem.addItemProperty(LinkFieldFactory.PATH_PROPERTY_NAME, new ObjectProperty<>(null, String.class)); builder = new LinkFieldSelectionFactory(definition, baseItem, uiContext, i18NAuthoringSupport, workbenchPresenter, eventBus); builder.setComponentProvider(componentProvider); // WHEN Field field = builder.createField(); // THEN assertThat(field, instanceOf(TextAndContentViewField.class)); assertTrue(((TextAndContentViewField) field).getTextField().isVisible()); }
@Test public void fieldEventCustomPropertyTest() throws RepositoryException { // GIVEN baseNode.setProperty("newProperty", "initial"); baseItem = new JcrNodeAdapter(baseNode); baseItem.addItemProperty("newProperty", new ObjectProperty<>("initial", String.class)); builder = new LinkFieldSelectionFactory(definition, baseItem, uiContext, i18NAuthoringSupport, workbenchPresenter, eventBus); builder.setComponentProvider(componentProvider); Field field = builder.createField(); itemIds.add(JcrItemUtil.getItemId(baseNode)); // WHEN eventBus.fireEvent(new SelectionChangedEvent(itemIds)); // THEN assertEquals("initial", field.getValue()); }
@Test public void testWriteToDataSourceReadOnly() throws RepositoryException { // GIVEN definition.setType("String"); Item rootItem = new PropertysetItem(); // underlying property is read-only rootItem.addItemProperty(propertyName, new ObjectProperty<>("foo", String.class, true)); BasicTransformer<String> transformer = new BasicTransformer<>(rootItem, definition, String.class, mock(I18NAuthoringSupport.class)); transformer.readFromItem(); // WHEN/THEN assertThat(() -> new TransformedProperty<>(transformer).setValue("newValue"), throwsAnException(instanceOf(ReadOnlyException.class))); }
@Test public void createCodeFieldChangeValue() { // GIVEN baseItem.addItemProperty(propertyName, new ObjectProperty<>("private String s", String.class)); Field<String> field = factory.createField(); assertEquals("private String s", field.getValue()); // WHEN field.setValue("new Value"); // THEN assertEquals("new Value", baseItem.getItemProperty(propertyName).getValue()); }
@Test public void readOnlyStateIsReflectedOnAlreadyExistingProperties() throws Exception { // GIVEN definition.setReadOnly(true); definition.setType("String"); Property<String> property = new ObjectProperty<>(""); baseItem.addItemProperty(propertyName, property); // WHEN fieldFactory = new TestTextFieldFactory(definition, baseItem, null, i18NAuthoringSupport); fieldFactory.setComponentProvider(this.componentProvider); Field<Object> field = fieldFactory.createField(); // THEN assertTrue(field.isReadOnly()); }
@Test public void preselectsFirstOptionIfNoneSelectedWithConverter() throws Exception { // GIVEN a factory/field backed by a Float property, with a converter explicitly configured baseItem = new PropertysetItem(); ObjectProperty<Float> preTypedProperty = new ObjectProperty<>(null, Float.class); baseItem.addItemProperty("floaty", preTypedProperty); // and some float options (with none selected) for (SelectFieldOptionDefinition optionDefinition : definition.getOptions()) { optionDefinition.setValue(optionDefinition.getValue() + ".5"); } definition.setType(null); definition.setConverterClass(StringToFloatConverter.class); initializeSelectFieldFactory(); // WHEN Field field = dialogSelect.createField(); // THEN first option is selected Property<?> p = field.getPropertyDataSource(); assertThat(p.getValue(), equalTo((Object) 1.5f)); }
@Test public void supportsPropertysetItem() throws Exception { // GIVEN baseItem = new PropertysetItem(); baseItem.addItemProperty("foo", new ObjectProperty<>("fooValue")); ConfiguredFieldDefinition def = createConfiguredFieldDefinition(new ConfiguredFieldDefinition(), "foo"); fieldFactory = new TestTextFieldFactory(def, baseItem, null, i18NAuthoringSupport); fieldFactory.setComponentProvider(this.componentProvider); // WHEN Field<?> field = fieldFactory.createField(); // THEN Property<?> p = field.getPropertyDataSource(); assertEquals("fooValue", p.getValue()); }
@Test public void supportsPropertysetItemWithNonExistingProperty() throws Exception { // GIVEN baseItem = new PropertysetItem(); baseItem.addItemProperty("foo", new ObjectProperty<>("fooValue")); ConfiguredFieldDefinition def = createConfiguredFieldDefinition(new ConfiguredFieldDefinition(), "bar"); fieldFactory = new TestTextFieldFactory(def, baseItem, null, i18NAuthoringSupport); fieldFactory.setComponentProvider(this.componentProvider); // WHEN Field<?> field = fieldFactory.createField(); // THEN Property<?> p = field.getPropertyDataSource(); assertNotNull(p); }
@Test public void testValueForNotEmptyNewItem() throws Exception { // GIVEN baseItem = new JcrNewNodeAdapter(baseNode, baseNode.getPrimaryNodeType().getName(), "newItem"); baseItem.addItemProperty(propertyName, new ObjectProperty<>("value")); fieldFactory = new TestTextFieldFactory(definition, baseItem, null, i18NAuthoringSupport); fieldFactory.setComponentProvider(this.componentProvider); Field<Object> field = fieldFactory.createField(); // WHEN String value = (String) field.getValue(); // THEN assertNotNull(value); assertEquals("value", value); }
@Test public void testGetHiddenFieldPropertyDataSourceWhenItemNodeIncludesHiddenProperty() throws Exception { // GIVEN definition.setDefaultValue("test2"); baseItem.addItemProperty("hiddenProperty", new ObjectProperty<>("test1")); factory = new HiddenFieldFactory(definition, baseItem, uiContext, i18NAuthoringSupport); factory.setComponentProvider(componentProvider); // WHEN Field<?> field = factory.createField(); // THEN Property<?> p = field.getPropertyDataSource(); assertNotNull(p); assertEquals("test1", p.getValue().toString()); assertEquals("test1", baseItem.getItemProperty("hiddenProperty").getValue()); assertEquals("test1", field.getValue()); }
@Test public void testValueForNotEmptyNewItemWithDefaultValue() throws Exception { // GIVEN baseItem = new JcrNewNodeAdapter(baseNode, baseNode.getPrimaryNodeType().getName(), "newItem"); baseItem.addItemProperty(propertyName, new ObjectProperty<>("value")); definition.setDefaultValue("defaultValue"); fieldFactory = new TestTextFieldFactory(definition, baseItem, null, i18NAuthoringSupport); fieldFactory.setComponentProvider(this.componentProvider); Field<Object> field = fieldFactory.createField(); // WHEN String value = (String) field.getValue(); // THEN assertNotNull(value); assertEquals("value", value); }
@Test public void testReadFromDataSourceItemReadOnly() throws RepositoryException { // GIVEN definition.setType("String"); Item rootItem = new PropertysetItem(); // underlying property is read-only rootItem.addItemProperty(propertyName, new ObjectProperty<>("foo", String.class, true)); BasicTransformer<String> transformer = new BasicTransformer<>(rootItem, definition, String.class, mock(I18NAuthoringSupport.class)); // WHEN String value = transformer.readFromItem(); // THEN assertNotNull(value); assertEquals(String.class, rootItem.getItemProperty(propertyName).getType()); assertEquals("foo", rootItem.getItemProperty(propertyName).getValue()); assertTrue(new TransformedProperty<>(transformer).isReadOnly()); }
@Test public void supportsDefaultValueWithConfiguredConverter() throws Exception { // GIVEN a factory/field backed by a Float property, with a converter explicitly configured baseItem = new PropertysetItem(); ObjectProperty<Float> preTypedProperty = new ObjectProperty<>(null, Float.class); baseItem.addItemProperty("floaty", preTypedProperty); ConfiguredFieldDefinition def = createConfiguredFieldDefinition(new ConfiguredFieldDefinition(), "floaty"); def.setType(null); def.setDefaultValue("0.86"); def.setConverterClass(StringToFloatConverter.class); fieldFactory = new TestTextFieldFactory(def, baseItem, null, i18NAuthoringSupport); fieldFactory.setComponentProvider(this.componentProvider); // WHEN Field<?> field = fieldFactory.createField(); // THEN Property<?> p = field.getPropertyDataSource(); assertEquals(0.86f, p.getValue()); }