public void documentCreateGroup()

in component-test/src/main/java/org/apache/fineract/cn/group/GroupApiDocumentation.java [78:156]


  public void documentCreateGroup ( ) throws Exception {

    final Cycle groupCycle = new Cycle();
    groupCycle.setNumberOfMeetings(25);
    groupCycle.setFrequency(Cycle.Frequency.MONTHLY.name());
    groupCycle.setAdjustment(Cycle.Adjustment.NEXT_BUSINESS_DAY.name());

    final GroupDefinition randomGroupDefinition = GroupDefinitionGenerator.createRandomGroupDefinition();
    randomGroupDefinition.setIdentifier("grpDef101");
    randomGroupDefinition.setDescription("Group Defininition 101");
    randomGroupDefinition.setMinimalSize(Integer.valueOf(5));
    randomGroupDefinition.setMaximalSize(Integer.valueOf(10));
    randomGroupDefinition.setCycle(groupCycle);

    this.testSubject.createGroupDefinition(randomGroupDefinition);
    this.eventRecorder.wait(EventConstants.POST_GROUP_DEFINITION, randomGroupDefinition.getIdentifier());

    Set <String> leadership = new HashSet <>();
    leadership.add("Nditapa");
    leadership.add("Imele");

    Set <String> membership = new HashSet <>();
    membership.add("Kamga");
    membership.add("Ayuk");
    membership.add("Awasum");

    final Address address = new Address();
    address.setStreet("Hospital");
    address.setCity("Muyuka");
    address.setRegion("SWR");
    address.setPostalCode("8050");
    address.setCountry("Cameroon");
    address.setCountryCode("CM");

    final Group randomGroup = GroupGenerator.createRandomGroup(randomGroupDefinition.getIdentifier());
    randomGroup.setIdentifier("group001");
    randomGroup.setGroupDefinitionIdentifier(randomGroupDefinition.getIdentifier());
    randomGroup.setName("ARPOT Group");
    randomGroup.setOffice("Bambui");
    randomGroup.setAssignedEmployee("Tabah Tih");
    randomGroup.setWeekday(Group.Weekday.WEDNESDAY.getValue());
    randomGroup.setLeaders(leadership);
    randomGroup.setMembers(membership);
    randomGroup.setAddress(address);

    Gson serialize = new Gson();
    this.mockMvc.perform(post("/groups")
            .accept(MediaType.APPLICATION_JSON_VALUE)
            .contentType(MediaType.APPLICATION_JSON_VALUE)
            .content(serialize.toJson(randomGroup)))
            .andExpect(status().isAccepted())
            .andDo(document("document-create-group", preprocessRequest(prettyPrint()),
                    requestFields(
                            fieldWithPath("identifier").description("Group Id"),
                            fieldWithPath("groupDefinitionIdentifier").description("Group definition Id"),
                            fieldWithPath("name").description("Group's name"),
                            fieldWithPath("leaders").type("Set<String>").description("Group's leaders"),
                            fieldWithPath("members").type("Set<String>").description("Group's members"),
                            fieldWithPath("office").description("Group's office"),
                            fieldWithPath("assignedEmployee").description("Assigned Employee"),
                            fieldWithPath("weekday").type("Integer").description("Weekday for group meeting " +
                                    " \n + " +
                                    " *enum* _Weekday_ { + \n" +
                                    "    MONDAY(1), + \n" +
                                    "    TUESDAY(2), + \n" +
                                    "    WEDNESDAY(3), + \n" +
                                    "    THURSDAY(4), + \n" +
                                    "    FRIDAY(5), + \n" +
                                    "    SATURDAY(6), + \n" +
                                    "    SUNDAY(7) + \n " +
                                    " } \n +"),
                            fieldWithPath("address.street").description("Office street"),
                            fieldWithPath("address.city").description("Office city"),
                            fieldWithPath("address.region").description("Office region"),
                            fieldWithPath("address.postalCode").description("Office postal code"),
                            fieldWithPath("address.countryCode").description("Office country code"),
                            fieldWithPath("address.country").description("Office country")
                    )));
  }