Package org.camunda.bpm.engine.test.api.repository

Source Code of org.camunda.bpm.engine.test.api.repository.CaseDefinitionQueryTest

/* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.camunda.bpm.engine.test.api.repository;

import java.util.ArrayList;
import java.util.List;

import org.camunda.bpm.engine.ProcessEngineException;
import org.camunda.bpm.engine.exception.NotValidException;
import org.camunda.bpm.engine.impl.test.PluggableProcessEngineTestCase;
import org.camunda.bpm.engine.repository.CaseDefinition;
import org.camunda.bpm.engine.repository.CaseDefinitionQuery;

/**
* @author Roman Smirnov
*
*/
public class CaseDefinitionQueryTest extends PluggableProcessEngineTestCase {

  private String deploymentOneId;
  private String deploymentTwoId;
  private String resourceOne = "org/camunda/bpm/engine/test/repository/one.cmmn";
  private String resourceTwo = "org/camunda/bpm/engine/test/repository/two.cmmn";

  @Override
  protected void setUp() throws Exception {
    deploymentOneId = repositoryService
      .createDeployment()
      .name("firstDeployment")
      .addClasspathResource(resourceOne)
      .addClasspathResource(resourceTwo)
      .deploy()
      .getId();

    deploymentTwoId = repositoryService
      .createDeployment()
      .name("secondDeployment")
      .addClasspathResource(resourceOne)
      .deploy()
      .getId();

    super.setUp();
  }

  @Override
  protected void tearDown() throws Exception {
    super.tearDown();
    repositoryService.deleteDeployment(deploymentOneId, true);
    repositoryService.deleteDeployment(deploymentTwoId, true);
  }

  private void verifyQueryResults(CaseDefinitionQuery query, int countExpected) {
    assertEquals(countExpected, query.list().size());
    assertEquals(countExpected, query.count());

    if (countExpected == 1) {
      assertNotNull(query.singleResult());
    } else if (countExpected > 1){
      verifySingleResultFails(query);
    } else if (countExpected == 0) {
      assertNull(query.singleResult());
    }
  }

  private void verifySingleResultFails(CaseDefinitionQuery query) {
    try {
      query.singleResult();
      fail();
    } catch (ProcessEngineException e) {}
  }

  public void testCaseDefinitionProperties() {
    List<CaseDefinition> caseDefinitions = repositoryService
      .createCaseDefinitionQuery()
      .orderByCaseDefinitionName().asc()
      .orderByCaseDefinitionVersion().asc()
      .orderByCaseDefinitionCategory()
      .asc()
      .list();

    CaseDefinition caseDefinition = caseDefinitions.get(0);
    assertEquals("one", caseDefinition.getKey());
    assertEquals("One", caseDefinition.getName());
    assertTrue(caseDefinition.getId().startsWith("one:1"));
    assertEquals("Examples", caseDefinition.getCategory());
    assertEquals(1, caseDefinition.getVersion());
    assertEquals("org/camunda/bpm/engine/test/repository/one.cmmn", caseDefinition.getResourceName());
    assertEquals(deploymentOneId, caseDefinition.getDeploymentId());

    caseDefinition = caseDefinitions.get(1);
    assertEquals("one", caseDefinition.getKey());
    assertEquals("One", caseDefinition.getName());
    assertTrue(caseDefinition.getId().startsWith("one:2"));
    assertEquals("Examples", caseDefinition.getCategory());
    assertEquals(2, caseDefinition.getVersion());
    assertEquals("org/camunda/bpm/engine/test/repository/one.cmmn", caseDefinition.getResourceName());
    assertEquals(deploymentTwoId, caseDefinition.getDeploymentId());

    caseDefinition = caseDefinitions.get(2);
    assertEquals("two", caseDefinition.getKey());
    assertEquals("Two", caseDefinition.getName());
    assertTrue(caseDefinition.getId().startsWith("two:1"));
    assertEquals("Examples2", caseDefinition.getCategory());
    assertEquals(1, caseDefinition.getVersion());
    assertEquals("org/camunda/bpm/engine/test/repository/two.cmmn", caseDefinition.getResourceName());
    assertEquals(deploymentOneId, caseDefinition.getDeploymentId());
  }

  public void testQueryByCaseDefinitionIds() {
    // empty list
    assertTrue(repositoryService.createCaseDefinitionQuery().caseDefinitionIdIn("a", "b").list().isEmpty());

    // collect all ids
    List<CaseDefinition> caseDefinitions = repositoryService.createCaseDefinitionQuery().list();
    List<String> ids = new ArrayList<String>();
    for (CaseDefinition caseDefinition : caseDefinitions) {
      ids.add(caseDefinition.getId());
    }

    caseDefinitions = repositoryService.createCaseDefinitionQuery()
      .caseDefinitionIdIn(ids.toArray(new String[ids.size()]))
      .list();

    assertEquals(ids.size(), caseDefinitions.size());
    for (CaseDefinition caseDefinition : caseDefinitions) {
      if (!ids.contains(caseDefinition.getId())) {
        fail("Expected to find case definition "+ caseDefinition);
      }
    }
  }

  public void testQueryByDeploymentId() {
    CaseDefinitionQuery query = repositoryService.createCaseDefinitionQuery();

    query
      .deploymentId(deploymentOneId);

    verifyQueryResults(query, 2);
  }

  public void testQueryByInvalidDeploymentId() {
    CaseDefinitionQuery query = repositoryService.createCaseDefinitionQuery();

   query
     .deploymentId("invalid");

    verifyQueryResults(query, 0);

    try {
      query.deploymentId(null);
      fail();
    } catch (NotValidException e) {}
  }

  public void testQueryByName() {
    CaseDefinitionQuery query = repositoryService.createCaseDefinitionQuery();

    query
      .caseDefinitionName("Two");

    verifyQueryResults(query, 1);

    query
      .caseDefinitionName("One");

    verifyQueryResults(query, 2);
  }

  public void testQueryByInvalidName() {
    CaseDefinitionQuery query = repositoryService.createCaseDefinitionQuery();

    query
      .caseDefinitionName("invalid");

    verifyQueryResults(query, 0);

    try {
      query.caseDefinitionName(null);
      fail();
    } catch (NotValidException e) {}
  }

  public void testQueryByNameLike() {
    CaseDefinitionQuery query = repositoryService.createCaseDefinitionQuery();

    query
      .caseDefinitionNameLike("%w%");

    verifyQueryResults(query, 1);
  }

  public void testQueryByInvalidNameLike() {
    CaseDefinitionQuery query = repositoryService.createCaseDefinitionQuery();

    query
      .caseDefinitionNameLike("%invalid%");

    verifyQueryResults(query, 0);

    try {
      query.caseDefinitionNameLike(null);
      fail();
    } catch (NotValidException e) {}
  }

  public void testQueryByKey() {
    CaseDefinitionQuery query = repositoryService.createCaseDefinitionQuery();

    // case one
    query
      .caseDefinitionKey("one");

    verifyQueryResults(query, 2);

    // case two
    query
      .caseDefinitionKey("two");

    verifyQueryResults(query, 1);
  }

  public void testQueryByInvalidKey() {
    CaseDefinitionQuery query = repositoryService.createCaseDefinitionQuery();

    query
      .caseDefinitionKey("invalid");

    verifyQueryResults(query, 0);

    try {
      query.caseDefinitionKey(null);
      fail();
    } catch (NotValidException e) {}
  }

  public void testQueryByKeyLike() {
    CaseDefinitionQuery query = repositoryService.createCaseDefinitionQuery();

    query
      .caseDefinitionKeyLike("%o%");

    verifyQueryResults(query, 3);
  }

  public void testQueryByInvalidKeyLike() {
    CaseDefinitionQuery query = repositoryService.createCaseDefinitionQuery();

    query
      .caseDefinitionKeyLike("%invalid%");

    verifyQueryResults(query, 0);

    try {
      query.caseDefinitionKeyLike(null);
      fail();
    } catch (NotValidException e) {}
  }

  public void testQueryByCategory() {
    CaseDefinitionQuery query = repositoryService.createCaseDefinitionQuery();

    query
      .caseDefinitionCategory("Examples");

    verifyQueryResults(query, 2);
  }

  public void testQueryByInvalidCategory() {
    CaseDefinitionQuery query = repositoryService.createCaseDefinitionQuery();

    query
      .caseDefinitionCategory("invalid");

    verifyQueryResults(query, 0);

    try {
      query.caseDefinitionCategory(null);
      fail();
    } catch (NotValidException e) {}
  }

  public void testQueryByCategoryLike() {
    CaseDefinitionQuery query = repositoryService.createCaseDefinitionQuery();

    query
      .caseDefinitionCategoryLike("%Example%");

    verifyQueryResults(query, 3);

    query
      .caseDefinitionCategoryLike("%amples2");

    verifyQueryResults(query, 1);
  }

  public void testQueryByInvalidCategoryLike() {
    CaseDefinitionQuery query = repositoryService.createCaseDefinitionQuery();

    query
      .caseDefinitionCategoryLike("invalid");

    verifyQueryResults(query, 0);

    try {
      query.caseDefinitionCategoryLike(null);
      fail();
    } catch (NotValidException e) {}
  }

  public void testQueryByVersion() {
    CaseDefinitionQuery query = repositoryService.createCaseDefinitionQuery();

    query
      .caseDefinitionVersion(2);

    verifyQueryResults(query, 1);

    query
      .caseDefinitionVersion(1);

    verifyQueryResults(query, 2);
  }

  public void testQueryByInvalidVersion() {
    CaseDefinitionQuery query = repositoryService.createCaseDefinitionQuery();

    query
      .caseDefinitionVersion(3);

    verifyQueryResults(query, 0);

    try {
      query.caseDefinitionVersion(-1);
      fail();
    } catch (NotValidException e) {}

    try {
      query.caseDefinitionVersion(null);
      fail();
    } catch (NotValidException e) {}
  }

  public void testQueryByLatest() {
    CaseDefinitionQuery query = repositoryService.createCaseDefinitionQuery();

    query
      .latestVersion();

    verifyQueryResults(query, 2);

    query
      .caseDefinitionKey("one")
      .latestVersion();

    verifyQueryResults(query, 1);

    query
      .caseDefinitionKey("two").latestVersion();
    verifyQueryResults(query, 1);
  }

  public void testInvalidUsageOfLatest() {
    CaseDefinitionQuery query = repositoryService.createCaseDefinitionQuery();

    try {
      query
        .caseDefinitionId("test")
        .latestVersion()
        .list();
      fail();
    } catch (NotValidException e) {}

    try {
      query
        .caseDefinitionName("test")
        .latestVersion()
        .list();
      fail();
    } catch (NotValidException e) {}

    try {
      query
        .caseDefinitionNameLike("test")
        .latestVersion()
        .list();
      fail();
    } catch (NotValidException e) {}

    try {
      query
        .caseDefinitionVersion(1)
        .latestVersion()
        .list();
      fail();
    } catch (NotValidException e) {}

    try {
      query
        .deploymentId("test")
        .latestVersion()
        .list();
      fail();
    } catch (NotValidException e) {}
  }

  public void testQuerySorting() {
    CaseDefinitionQuery query = repositoryService.createCaseDefinitionQuery();

    // asc
    query
      .orderByCaseDefinitionId()
      .asc();
    verifyQueryResults(query, 3);

    query = repositoryService.createCaseDefinitionQuery();

    query
      .orderByDeploymentId()
      .asc();
    verifyQueryResults(query, 3);

    query = repositoryService.createCaseDefinitionQuery();

    query
      .orderByCaseDefinitionKey()
      .asc();
    verifyQueryResults(query, 3);

    query = repositoryService.createCaseDefinitionQuery();

    query
      .orderByCaseDefinitionVersion()
      .asc();
    verifyQueryResults(query, 3);

    // desc

    query = repositoryService.createCaseDefinitionQuery();

    query
      .orderByCaseDefinitionId()
      .desc();
    verifyQueryResults(query, 3);

    query = repositoryService.createCaseDefinitionQuery();

    query
      .orderByDeploymentId()
      .desc();
    verifyQueryResults(query, 3);

    query = repositoryService.createCaseDefinitionQuery();

    query
      .orderByCaseDefinitionKey()
      .desc();
    verifyQueryResults(query, 3);

    query = repositoryService.createCaseDefinitionQuery();

    query
      .orderByCaseDefinitionVersion()
      .desc();
    verifyQueryResults(query, 3);

    query = repositoryService.createCaseDefinitionQuery();

    // Typical use case
    query
      .orderByCaseDefinitionKey()
      .asc()
      .orderByCaseDefinitionVersion()
      .desc();

    List<CaseDefinition> caseDefinitions = query.list();
    assertEquals(3, caseDefinitions.size());

    assertEquals("one", caseDefinitions.get(0).getKey());
    assertEquals(2, caseDefinitions.get(0).getVersion());
    assertEquals("one", caseDefinitions.get(1).getKey());
    assertEquals(1, caseDefinitions.get(1).getVersion());
    assertEquals("two", caseDefinitions.get(2).getKey());
    assertEquals(1, caseDefinitions.get(2).getVersion());
  }

}
TOP

Related Classes of org.camunda.bpm.engine.test.api.repository.CaseDefinitionQueryTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.