/** * Tests that a java file without parse errors was successfully loaded. * * @param loadTypesInfo indicates if the types and annotations definitions loading should be * simulated. */ private void loadFileSuccessfulTest(boolean loadTypesInfo) { EditorModelContent content = createContent(loadTypesInfo, false); when(versionRecordManager.getCurrentPath()).thenReturn(path); when(modelerService.loadContent(path, loadTypesInfo)).thenReturn(content); when(javaSourceEditor.getContent()).thenReturn(content.getSource()); if (loadTypesInfo) { // types info is not loaded into the DataModelerWBContext. when(dataModelerWBContext.isTypesInfoLoaded()).thenReturn(false); } else { // types info is already into the DataModelerWBContext. when(dataModelerWBContext.isTypesInfoLoaded()).thenReturn(true); } // just for convenience, since the DataModelerContext is initialized by taking this definitions // from the DMWC. when(dataModelerWBContext.getAnnotationDefinitions()).thenReturn(testAnnotationDefs); when(dataModelerWBContext.getPropertyTypes()).thenReturn(testTypeDefs); presenter.onStartup(path, placeRequest); // Verifications during and after model loading. verify(view, times(1)).showLoading(); verify(view, times(1)).hideBusyIndicator(); // presenter should ask the DataModelerWBContext if the types info is already loaded. verify(dataModelerWBContext, times(1)).isTypesInfoLoaded(); if (loadTypesInfo) { // the types info should have been set into the DataModelerWBContext as part of the presenter // loading. verify(dataModelerWBContext, times(1)).setPropertyTypes(testTypeDefs); verify(dataModelerWBContext, times(1)).setAnnotationDefinitions(testAnnotationDefs); } else { // the types info shouldn't have been set into the DataModelerWBContext as part of the // presenter loading. verify(dataModelerWBContext, times(0)).setPropertyTypes(testTypeDefs); verify(dataModelerWBContext, times(0)).setAnnotationDefinitions(testAnnotationDefs); } // presenter should clear the system messages related to this editor. verify(unpublishMessagesEvent, times(1)).fire(any(UnpublishMessagesEvent.class)); // presenter should read the expected path. verify(modelerService, times(1)).loadContent(path, loadTypesInfo); // verify that the context created by the presenter was properly initialized. DataModelerContext context = presenter.context; assertEquals(testModel, context.getDataModel()); assertEquals(testObject1, context.getDataObject()); assertEquals(kieProject, context.getCurrentProject()); assertEquals(testPackages, context.getCurrentProjectPackages()); assertEquals(testAnnotationDefs, context.getAnnotationDefinitions()); assertEquals(content, context.getEditorModelContent()); // the file was read successfully, so the status should be PARSED assertEquals(DataModelerContext.ParseStatus.PARSED, context.getParseStatus()); // the file was read and parsed successfully, so the editor should be now in the editor tab. assertEquals(DataModelerContext.EditionMode.GRAPHICAL_MODE, context.getEditionMode()); // file was just read, so the status should be NO_CHANGES. assertEquals(DataModelerContext.EditionStatus.NO_CHANGES, context.getEditionStatus()); // the view should have been initialized with the context. verify(view, times(1)).setContext(context); // the source editor should have been initialized with the source returned form server. verify(javaSourceEditor, times(1)).setContent(testSource); // current context should have been activated verify(dataModelerWBContext, times(1)).setActiveContext(context); // and notifications should have been sent. verify(dataModelerFocusEvent, times(1)).fire(any(DataModelerWorkbenchFocusEvent.class)); }
/** * Tests that a java file with parse errors was successfully loaded. * * @param loadTypesInfo indicates if the types and annotations definitions loading should be * simulated. */ private void loadFileUnSuccessfulTest(boolean loadTypesInfo) { EditorModelContent content = createContent(loadTypesInfo, true); // when there are parse errors the returned data object is null. content.setDataObject(null); when(versionRecordManager.getCurrentPath()).thenReturn(path); when(modelerService.loadContent(path, loadTypesInfo)).thenReturn(content); when(javaSourceEditor.getContent()).thenReturn(content.getSource()); if (loadTypesInfo) { // types info is not loaded into the DataModelerWBContext. when(dataModelerWBContext.isTypesInfoLoaded()).thenReturn(false); } else { // types info is already into the DataModelerWBContext. when(dataModelerWBContext.isTypesInfoLoaded()).thenReturn(true); } // just for convenience, since the DataModelerContext is initialized by taking this definitions // from the DMWC. when(dataModelerWBContext.getAnnotationDefinitions()).thenReturn(testAnnotationDefs); when(dataModelerWBContext.getPropertyTypes()).thenReturn(testTypeDefs); presenter.onStartup(path, placeRequest); // Verifications during and after model loading. verify(view, times(1)).showLoading(); verify(view, times(1)).hideBusyIndicator(); // presenter should ask the DataModelerWBContext if the types info is already loaded. verify(dataModelerWBContext, times(1)).isTypesInfoLoaded(); if (loadTypesInfo) { // the types info should have been set into the DataModelerWBContext as part of the presenter // loading. verify(dataModelerWBContext, times(1)).setPropertyTypes(testTypeDefs); verify(dataModelerWBContext, times(1)).setAnnotationDefinitions(testAnnotationDefs); } else { // the types info shouldn't have been set into the DataModelerWBContext as part of the // presenter loading. verify(dataModelerWBContext, times(0)).setPropertyTypes(testTypeDefs); verify(dataModelerWBContext, times(0)).setAnnotationDefinitions(testAnnotationDefs); } // presenter should clear the system messages related to this editor. verify(unpublishMessagesEvent, times(1)).fire(any(UnpublishMessagesEvent.class)); // presenter should read the expected path. verify(modelerService, times(1)).loadContent(path, loadTypesInfo); // parse errors should have been published. verify(publishBatchMessagesEvent, times(1)).fire(any(PublishBatchMessagesEvent.class)); // parse errors dialog should have been raised. verify(view, times(1)).showParseErrorsDialog(anyString(), anyString(), any(Command.class)); // at this point the parse errors popup is raised and waiting for the user to press the ok // button. // emulate the user click on the button. presenter.getOnLoadParseErrorCommand().execute(); // verify that the context created by the presenter was properly initialized. DataModelerContext context = presenter.context; assertEquals(testModel, context.getDataModel()); assertEquals(null, context.getDataObject()); assertEquals(kieProject, context.getCurrentProject()); assertEquals(testPackages, context.getCurrentProjectPackages()); assertEquals(testAnnotationDefs, context.getAnnotationDefinitions()); assertEquals(content, context.getEditorModelContent()); // parse errors wherer produced on server so the status should be PARSE_ERRORS assertEquals(DataModelerContext.ParseStatus.PARSE_ERRORS, context.getParseStatus()); // the file wasn't parsed the editor should go to the source tab. assertEquals(DataModelerContext.EditionMode.SOURCE_MODE, context.getEditionMode()); // file was just read, so the status should be NO_CHANGES. assertEquals(DataModelerContext.EditionStatus.NO_CHANGES, context.getEditionStatus()); // context wasn't set on the view since there aren't a data object to show. verify(view, times(0)).setContext(context); // the source editor should have been initialized with the source returned form server. verify(javaSourceEditor, times(2)).setContent(testSource); // current context should have been activated verify(dataModelerWBContext, times(1)).setActiveContext(context); // and notifications should have been sent. verify(dataModelerFocusEvent, times(1)).fire(any(DataModelerWorkbenchFocusEvent.class)); }