Search in sources :

Example 1 with Questionnaire

use of org.molgenis.questionnaires.meta.Questionnaire in project molgenis by molgenis.

the class QuestionnaireServiceImpl method createQuestionnaireResponse.

/**
 * Create a {@link QuestionnaireResponse} based on an {@link EntityType}
 * Will set status to {@link QuestionnaireStatus}.OPEN if there is a data entry for the current user.
 *
 * @param entityType A Questionnaire EntityType
 * @return A {@link QuestionnaireResponse}
 */
private QuestionnaireResponse createQuestionnaireResponse(EntityType entityType) {
    String entityTypeId = entityType.getId();
    QuestionnaireStatus status = NOT_STARTED;
    Questionnaire questionnaireEntity = findQuestionnaireEntity(entityTypeId);
    if (questionnaireEntity != null) {
        status = questionnaireEntity.getStatus();
    }
    return QuestionnaireResponse.create(entityTypeId, entityType.getLabel(), entityType.getDescription(), status);
}
Also used : Questionnaire(org.molgenis.questionnaires.meta.Questionnaire) QuestionnaireStatus(org.molgenis.questionnaires.meta.QuestionnaireStatus)

Example 2 with Questionnaire

use of org.molgenis.questionnaires.meta.Questionnaire in project molgenis by molgenis.

the class QuestionnaireServiceImpl method startQuestionnaire.

@Override
public void startQuestionnaire(String id) {
    Questionnaire questionnaire = findQuestionnaireEntity(id);
    if (questionnaire == null) {
        EntityType questionnaireEntityType = dataService.getEntityType(id);
        questionnaire = questionnaireFactory.create(entityManager.create(questionnaireEntityType, POPULATE));
        questionnaire.setOwner(getCurrentUsername());
        questionnaire.setStatus(OPEN);
        dataService.add(id, questionnaire);
    }
}
Also used : EntityType(org.molgenis.data.meta.model.EntityType) Questionnaire(org.molgenis.questionnaires.meta.Questionnaire)

Example 3 with Questionnaire

use of org.molgenis.questionnaires.meta.Questionnaire in project molgenis by molgenis.

the class QuestionnaireServiceTest method testGetQuestionnaires.

@Test
public void testGetQuestionnaires() {
    // =========== Setup ===========
    EntityType entityType = mock(EntityType.class);
    when(entityType.getId()).thenReturn(QUESTIONNAIRE_ID);
    when(entityType.getLabel()).thenReturn("label");
    when(entityType.getDescription()).thenReturn("description");
    Query<EntityType> typedQuery = mock(Query.class);
    Query<EntityType> query = mock(Query.class);
    when(typedQuery.eq(EntityTypeMetadata.EXTENDS, QUESTIONNAIRE)).thenReturn(query);
    when(dataService.query(ENTITY_TYPE_META_DATA, EntityType.class)).thenReturn(typedQuery);
    when(query.findAll()).thenReturn(Stream.of(entityType));
    when(userPermissionEvaluator.hasPermission(new EntityTypeIdentity(QUESTIONNAIRE_ID), WRITE)).thenReturn(true);
    Entity entity = mock(Entity.class);
    when(dataService.findOne(QUESTIONNAIRE_ID, EQ(OWNER_USERNAME, null))).thenReturn(entity);
    Questionnaire questionnaire = mock(Questionnaire.class);
    when(questionnaire.getStatus()).thenReturn(OPEN);
    when(questionnaireFactory.create(entity)).thenReturn(questionnaire);
    // =========== Test ===========
    List<QuestionnaireResponse> actual = questionnaireService.getQuestionnaires();
    QuestionnaireResponse questionnaireResponse = QuestionnaireResponse.create(QUESTIONNAIRE_ID, "label", "description", OPEN);
    List<QuestionnaireResponse> expected = newArrayList(questionnaireResponse);
    assertEquals(actual, expected);
}
Also used : EntityType(org.molgenis.data.meta.model.EntityType) EntityTypeIdentity(org.molgenis.data.security.EntityTypeIdentity) Entity(org.molgenis.data.Entity) Questionnaire(org.molgenis.questionnaires.meta.Questionnaire) QuestionnaireResponse(org.molgenis.questionnaires.response.QuestionnaireResponse) Test(org.testng.annotations.Test)

Example 4 with Questionnaire

use of org.molgenis.questionnaires.meta.Questionnaire in project molgenis by molgenis.

the class QuestionnaireServiceTest method testStartQuestionnaire.

@Test
public void testStartQuestionnaire() {
    // =========== Setup ===========
    Entity entity = null;
    when(dataService.findOne(QUESTIONNAIRE_ID, EQ(OWNER_USERNAME, null))).thenReturn(entity);
    when(questionnaireFactory.create(entity)).thenReturn(null);
    EntityType entityType = mock(EntityType.class);
    when(dataService.getEntityType(QUESTIONNAIRE_ID)).thenReturn(entityType);
    Entity questionnaireEntity = mock(Entity.class);
    when(entityManager.create(entityType, POPULATE)).thenReturn(questionnaireEntity);
    Questionnaire questionnaire = mock(Questionnaire.class);
    when(questionnaireFactory.create(questionnaireEntity)).thenReturn(questionnaire);
    // =========== Test ===========
    questionnaireService.startQuestionnaire(QUESTIONNAIRE_ID);
    verify(dataService).add(QUESTIONNAIRE_ID, questionnaire);
}
Also used : EntityType(org.molgenis.data.meta.model.EntityType) Entity(org.molgenis.data.Entity) Questionnaire(org.molgenis.questionnaires.meta.Questionnaire) Test(org.testng.annotations.Test)

Example 5 with Questionnaire

use of org.molgenis.questionnaires.meta.Questionnaire in project molgenis by molgenis.

the class QuestionnaireServiceTest method testStartQuestionnaireAlreadyOpen.

@Test
public void testStartQuestionnaireAlreadyOpen() {
    // =========== Setup ===========
    Entity entity = mock(Entity.class);
    when(dataService.findOne(QUESTIONNAIRE_ID, EQ(OWNER_USERNAME, null))).thenReturn(entity);
    Questionnaire questionnaire = mock(Questionnaire.class);
    when(questionnaireFactory.create(entity)).thenReturn(questionnaire);
    // =========== Test ===========
    questionnaireService.startQuestionnaire(QUESTIONNAIRE_ID);
    verify(dataService, times(0)).add(QUESTIONNAIRE_ID, questionnaire);
}
Also used : Entity(org.molgenis.data.Entity) Questionnaire(org.molgenis.questionnaires.meta.Questionnaire) Test(org.testng.annotations.Test)

Aggregations

Questionnaire (org.molgenis.questionnaires.meta.Questionnaire)5 Entity (org.molgenis.data.Entity)3 EntityType (org.molgenis.data.meta.model.EntityType)3 Test (org.testng.annotations.Test)3 EntityTypeIdentity (org.molgenis.data.security.EntityTypeIdentity)1 QuestionnaireStatus (org.molgenis.questionnaires.meta.QuestionnaireStatus)1 QuestionnaireResponse (org.molgenis.questionnaires.response.QuestionnaireResponse)1