/** * Test method for {@link JavascriptParser#parse(DefDescriptor, Source)}. The DefDescriptor is * referring to a Controller but the Javascript should have had only functions. In this scenario * there is a variable declaration which is not expected in a controller file. The JSparser will * flag an exception for this. * * @throws Exception */ public void testInvalidJSController() throws Exception { DefDescriptor<ControllerDef> descriptor = DefDescriptorImpl.getInstance("js://test.testInvalidJSController", ControllerDef.class); Source<ControllerDef> source = getJavascriptSourceLoader().getSource(descriptor); ControllerDef cd = (ControllerDef) parser.parse(descriptor, source); try { cd.validateDefinition(); fail("Javascript controller must only contain functions"); } catch (Exception e) { this.checkExceptionContains(e, InvalidDefinitionException.class, "Expected ':'"); } }
@Override protected Invocation getInvocation(Object object) throws QuickFixException { if (object instanceof Map) { Map<?, ?> methodMap = (Map<?, ?>) object; String name = (String) methodMap.get("name"); if (name == null) { throw new InvalidDefinitionException( "A mock action must specify the name of the action", getLocation()); } String typeStr = (String) methodMap.get("type"); Class<?> type = Object.class; if (typeStr != null) { try { type = classForSimpleName(typeStr); } catch (ClassNotFoundException e) { } } actionDef = controllerDef.getSubDefinition(name); return new ActionInvocation("createAction", ImmutableList.of(name), type); } return super.getInvocation(object); }