@Test
  public void testSetProjectCategory() throws GenericEntityException {
    // test setting up a relation with a project that has no categories
    assertNull(testedObject.getProjectCategoryFromProject(null));
    testedObject.setProjectCategory(projectGV1, projectCategory);
    assertEquals(projectCategory, testedObject.getProjectCategoryFromProject(projectGV1));
    assertEquals(
        1,
        nodeAssociationStore
            .getSinksFromSource(
                projectGV1, "ProjectCategory", ProjectRelationConstants.PROJECT_CATEGORY)
            .size());

    // test setting up a relation with a project that has one category already
    testedObject.setProjectCategory(projectGV1, projectCategory2);
    assertEquals(projectCategory2, testedObject.getProjectCategoryFromProject(projectGV1));
    assertEquals(
        1,
        nodeAssociationStore
            .getSinksFromSource(
                projectGV1, "ProjectCategory", ProjectRelationConstants.PROJECT_CATEGORY)
            .size());

    // test setting up a relation with a null category (ie no project category)
    testedObject.setProjectCategory(project1, null);
    assertEquals(null, testedObject.getProjectCategoryFromProject(projectGV1));
    assertEquals(
        0,
        nodeAssociationStore
            .getSinksFromSource(
                projectGV1, "ProjectCategory", ProjectRelationConstants.PROJECT_CATEGORY)
            .size());
  }
 @Test
 public void testSetProjectCategoryNotNull() throws GenericEntityException {
   // test null project
   expectedException.expect(IllegalArgumentException.class);
   expectedException.expectMessage("Cannot associate a category with a null project");
   testedObject.setProjectCategory((GenericValue) null, null);
 }
  @Test
  public void testGetProjectsFromProjectCategory() throws GenericEntityException {
    // test null projectCategory id
    Collection<GenericValue> projects =
        testedObject.getProjectsFromProjectCategory((GenericValue) null);
    assertTrue(projects.isEmpty());

    // test a valid projectCategory id associated with NO projects
    projects = testedObject.getProjectsFromProjectCategory(projectCategory);
    assertTrue(projects.isEmpty());

    // test a valid projectCategory associated with a project
    testedObject.setProjectCategory(projectGV1, projectCategory);
    projects = testedObject.getProjectsFromProjectCategory(projectCategory);
    assertEquals(Collections.singletonList(projectGV1), projects);
  }
  @Test
  public void testGetProjectObjectsFromProjectCategory() throws GenericEntityException {
    // test null projectCategory id
    Collection<Project> projects = testedObject.getProjectObjectsFromProjectCategory(null);
    assertTrue(projects.isEmpty());

    // test a valid projectCategory id associated with NO projects
    projects = testedObject.getProjectObjectsFromProjectCategory(projectCategory.getLong("id"));
    assertTrue(projects.isEmpty());

    // test a valid projectCategory associated with a project
    testedObject.setProjectCategory(projectGV1, projectCategory);
    projects = testedObject.getProjectObjectsFromProjectCategory(projectCategory.getLong("id"));
    final Project project = Iterables.getOnlyElement(projects);
    assertEquals(project1.getId(), project.getId());
    assertEquals(projectCategory, project.getProjectCategory());
  }