/** Test of correct use of startProcess */
  @Test(expected = UnsatisfiedContextParameterException.class)
  public void testStartProcessValidationException() {
    expect(processFactory.createProcessModel(processName, processDefinitionName, contextParameters))
        .andReturn(mockProcessModel);
    expect(processDefinitionFactory.getProcessDefinition(processDefinitionName))
        .andReturn(mockProcessDefinition);

    replay(processFactory, processDefinitionFactory);
    final DefaultBusinessProcessService defaultService =
        new DefaultBusinessProcessService() {
          @Override
          protected void validateContext(
              final BusinessProcessModel processModel, final ProcessDefinition processDefinition) {
            assertEquals(
                "mockProcessModel not equals to processModel", mockProcessModel, processModel);
            assertEquals(
                "mockProcessDefinition not equals to processDefinition",
                mockProcessDefinition,
                processDefinition);
            throw new UnsatisfiedContextParameterException();
          }
        };
    defaultService.setProcessFactory(processFactory);
    defaultService.setProcessDefinitionFactory(processDefinitionFactory);
    defaultService.setModelService(modelService);
    defaultService.setTransactionTemplate(transactionTemplate);

    defaultService.startProcess(processName, processDefinitionName, contextParameters);
    verify(processFactory, processDefinitionFactory);
  }
  @BeforeClass
  public static void prepare() throws Exception // NOPMD
      {
    Registry.activateStandaloneMode();
    Utilities.setJUnitTenant();
    LOG.debug("Preparing...");

    final ApplicationContext appCtx = Registry.getGlobalApplicationContext();

    assertTrue(
        "Application context of type "
            + appCtx.getClass()
            + " is not a subclass of "
            + ConfigurableApplicationContext.class,
        appCtx instanceof ConfigurableApplicationContext);

    final ConfigurableApplicationContext applicationContext =
        (ConfigurableApplicationContext) appCtx;
    final ConfigurableListableBeanFactory beanFactory = applicationContext.getBeanFactory();
    assertTrue(
        "Bean Factory of type "
            + beanFactory.getClass()
            + " is not of type "
            + BeanDefinitionRegistry.class,
        beanFactory instanceof BeanDefinitionRegistry);
    final XmlBeanDefinitionReader xmlReader =
        new XmlBeanDefinitionReader((BeanDefinitionRegistry) beanFactory);
    xmlReader.setDocumentReaderClass(ScopeTenantIgnoreDocReader.class);
    xmlReader.loadBeanDefinitions(
        new ClassPathResource(
            "/merchandisefulfilmentprocess/test/merchandisefulfilmentprocess-spring-test.xml"));
    xmlReader.loadBeanDefinitions(
        new ClassPathResource(
            "/merchandisefulfilmentprocess/test/merchandisefulfilmentprocess-spring-test-fraudcheck.xml"));
    xmlReader.loadBeanDefinitions(
        new ClassPathResource(
            "/merchandisefulfilmentprocess/test/process/order-process-spring.xml"));
    modelService = (ModelService) getBean("modelService");
    processService = (DefaultBusinessProcessService) getBean("businessProcessService");
    definitonFactory = processService.getProcessDefinitionFactory();

    LOG.warn("Prepare Process Definition factory...");
    definitonFactory.add(
        "classpath:/merchandisefulfilmentprocess/test/process/payment-process.xml");

    // setup command factory to mock
    final DefaultCommandFactoryRegistryImpl commandFactoryReg =
        appCtx.getBean(DefaultCommandFactoryRegistryImpl.class);
    commandFactoryReg.setCommandFactoryList(
        Arrays.asList((CommandFactory) appCtx.getBean("mockupCommandFactory")));

    taskServiceStub = appCtx.getBean(TaskServiceStub.class);
    productService = appCtx.getBean("defaultProductService", DefaultProductService.class);
    cartService = appCtx.getBean("defaultCartService", DefaultCartService.class);
    userService = appCtx.getBean("defaultUserService", DefaultUserService.class);
  }
  @Test
  public void testValidateContext() {
    processDefinitionName = "process1";
    expect(processFactory.createProcessModel(processName, processDefinitionName, contextParameters))
        .andReturn(mockProcessModel);
    expect(processDefinitionFactory.getProcessDefinition(processDefinitionName))
        .andReturn(mockProcessDefinition);
    final Map params = new HashMap<String, ContextParameterDeclaration>();
    final Map nodes = new HashMap<String, Node>();

    final Node node =
        new Node() {

          @Override
          public void trigger(final BusinessProcessModel process) {
            // null
          }

          @Override
          public String execute(final BusinessProcessModel process)
              throws RetryLaterException, NodeExecutionException {
            return "OK";
          }

          @Override
          public String getId() {
            return "NodeId";
          }
        };
    nodes.put("NodeId", node);
    mockProcessDefinition =
        new ProcessDefinition(
            processDefinitionName,
            node,
            null,
            nodes,
            params,
            "de.hybris.processengine.model.BusinessProcessModel") {
          // null
        };

    final DefaultBusinessProcessService defaultService = new DefaultBusinessProcessService();
    try {
      defaultService.validateContext(mockProcessModel, mockProcessDefinition);
    } catch (final UnsatisfiedContextParameterException exception) {
      fail("validateContext throws " + exception.toString());
    }
  }
  /** Test of correct use of startProcess */
  @Test
  public void testStartProcess() {
    expect(processFactory.createProcessModel(processName, processDefinitionName, contextParameters))
        .andReturn(mockProcessModel);
    expect(processDefinitionFactory.getProcessDefinition(processDefinitionName))
        .andReturn(mockProcessDefinition);

    modelService.save(mockProcessModel);

    mockProcessDefinition.start(mockProcessModel);

    replay(processFactory, processDefinitionFactory, modelService);
    final DefaultBusinessProcessService defaultService =
        new DefaultBusinessProcessService() {
          @Override
          protected void validateContext(
              final BusinessProcessModel processModel, final ProcessDefinition processDefinition) {
            assertEquals(
                "mockProcessModel not equals to processModel", mockProcessModel, processModel);
            assertEquals(
                "mockProcessDefinition not equals to processDefinition",
                mockProcessDefinition,
                processDefinition);
          }
        };
    defaultService.setProcessFactory(processFactory);
    defaultService.setProcessDefinitionFactory(processDefinitionFactory);
    defaultService.setModelService(modelService);
    defaultService.setTransactionTemplate(transactionTemplate);

    defaultService.startProcess(processName, processDefinitionName, contextParameters);
    verify(processFactory, processDefinitionFactory, modelService);
    assertEquals(
        "mockProcessModel.getState() not in RUNNING state",
        ProcessState.RUNNING,
        mockProcessModel.getState());
  }
Example #5
0
  @BeforeClass
  public static void prepare() throws Exception // NOPMD
      {
    Registry.activateStandaloneMode();
    Utilities.setJUnitTenant();
    LOG.debug("Preparing...");

    final ApplicationContext appCtx = Registry.getApplicationContext();

    //		final ConfigurationService configurationService = (ConfigurationService)
    // appCtx.getBean("configurationService");
    //		configurationService.getConfiguration().setProperty("processengine.event.lockProcess",
    // "true");

    assertTrue(
        "Application context of type "
            + appCtx.getClass()
            + " is not a subclass of "
            + ConfigurableApplicationContext.class,
        appCtx instanceof ConfigurableApplicationContext);

    final ConfigurableApplicationContext applicationContext =
        (ConfigurableApplicationContext) appCtx;
    final ConfigurableListableBeanFactory beanFactory = applicationContext.getBeanFactory();
    assertTrue(
        "Bean Factory of type "
            + beanFactory.getClass()
            + " is not of type "
            + BeanDefinitionRegistry.class,
        beanFactory instanceof BeanDefinitionRegistry);
    final XmlBeanDefinitionReader xmlReader =
        new XmlBeanDefinitionReader((BeanDefinitionRegistry) beanFactory);
    xmlReader.setDocumentReaderClass(ScopeTenantIgnoreDocReader.class);
    xmlReader.loadBeanDefinitions(
        new ClassPathResource(
            "/octannerfulfilmentprocess/test/octannerfulfilmentprocess-spring-test.xml"));
    xmlReader.loadBeanDefinitions(
        new ClassPathResource("/octannerfulfilmentprocess/test/process/order-process-spring.xml"));
    xmlReader.loadBeanDefinitions(
        new ClassPathResource(
            "/octannerfulfilmentprocess/test/process/consignment-process-spring.xml"));

    modelService = (ModelService) getBean("modelService");
    processService = (DefaultBusinessProcessService) getBean("businessProcessService");
    definitonFactory = processService.getProcessDefinitionFactory();

    LOG.warn("Prepare Process Definition factory...");
    definitonFactory.add("classpath:/octannerfulfilmentprocess/test/process/order-process.xml");
    definitonFactory.add(
        "classpath:/octannerfulfilmentprocess/test/process/consignment-process.xml");
    LOG.warn(
        "loaded 'order-process-test':"
            + definitonFactory.getProcessDefinition("order-process-test")
            + " in factory "
            + definitonFactory);

    // setup command factory to mock
    taskServiceStub = appCtx.getBean(TaskServiceStub.class);
    processService.setTaskService(taskServiceStub);

    final DefaultCommandFactoryRegistryImpl commandFactoryReg =
        appCtx.getBean(DefaultCommandFactoryRegistryImpl.class);
    commandFactoryReg.setCommandFactoryList(
        Arrays.asList((CommandFactory) appCtx.getBean("mockupCommandFactory")));
  }