@Test
  public void updateFolderPathTest() {
    EntityManagerFactory emf = mock(EntityManagerFactory.class);

    stub(emf.createEntityManager())
        .toReturn(createEntityManager())
        .toReturn(createEntityManager())
        .toReturn(createEntityManager())
        .toReturn(createEntityManager())
        .toReturn(createEntityManager())
        .toReturn(createEntityManager());

    ProjectDAOFactory projectDAOFactory = new ProjectDAOFactory();
    FolderDAOFactory folderDAOFactory = new FolderDAOFactory();
    ResearchFileDAOFactory researchFileDAOFactory = new ResearchFileDAOFactory();
    MetadataAssociationDAOFactory metadataAssociationDAOFactory =
        new MetadataAssociationDAOFactory();
    SubmissionPackageDAOFactory submissionPackageDAOFactory = new SubmissionPackageDAOFactory();
    SchemaDAO schemaDAO = new SchemaDAO(emf.createEntityManager());

    projectService =
        new ProjectService(
            emf,
            projectDAOFactory,
            folderDAOFactory,
            researchFileDAOFactory,
            metadataAssociationDAOFactory,
            submissionPackageDAOFactory);

    ResearchFileDAO researchFileDAO =
        researchFileDAOFactory.createInstance(emf.createEntityManager());

    Folder folder = new Folder(new File("/tmp"));
    ResearchFile file1 = new ResearchFile(new File("/tmp/file1.txt"));
    ResearchFile file2 = new ResearchFile(new File("/tmp/file2.txt"));
    researchFileDAO.createResearchFile(file1);
    researchFileDAO.createResearchFile(file2);

    folder.getFiles().add(file1);
    folder.getFiles().add(file2);

    final Schema schema = new Schema("", "", "", Boolean.TRUE);
    schemaDAO.createSchema(schema);

    Project project =
        projectService.createProject(
            new ProjectFieldsDTO(
                "name",
                "owner",
                "institution",
                "email",
                "desc",
                "collectionType",
                "rightsStatement",
                "accessRights",
                "license",
                "identifier",
                "subject",
                "electronicLocation",
                "physicalLocation",
                "placeOrRegionName",
                "geoCoverage",
                "datesOfCapture",
                "citationInformation",
                "counries",
                "languages",
                null,
                "fundingBody",
                "grantID",
                "relatedParty",
                "relatedGrant",
                "relatedInformation"),
            schema);

    projectService.mapFolderToProject(project, folder);

    File updatedFileObject = new File("/new/location");

    projectService.updateFolderPath(folder.getId(), updatedFileObject);

    Folder folderFromDB =
        folderDAOFactory.createInstance(emf.createEntityManager()).findById(folder.getId());

    assertTrue(folderFromDB.getFolder().getPath().equals(updatedFileObject.getPath()));

    for (ResearchFile file : folderFromDB.getFiles()) {
      assertEquals(
          updatedFileObject.getAbsolutePath() + File.separator + file.getFile().getName(),
          file.getFile().getAbsolutePath());
    }
  }