private RequestBuilder buildProfileRequest(ProfileOptions options) { Validate.notNull(options, "options cannot be null"); Validate.isTrue( options.getText() != null || options.getContentItems() != null, "text, html or content items need to be specified"); final String contentType = options.getContentType(); final RequestBuilder request = RequestBuilder.post(PATH_PROFILE); if (options.getText() != null) { request.withBodyContent(options.getText(), contentType); } else { final Content content = new Content(); content.setContentItems(options.getContentItems()); String body = gson.toJson(content); request.withBodyContent(body, contentType); } if (options.getIncludeRaw() != null) request.withQuery(INCLUDE_RAW, options.getIncludeRaw()); if (options.getLanguage() != null) request.withHeader(HttpHeaders.CONTENT_LANGUAGE, options.getLanguage()); if (options.getAcceptLanguage() != null) request.withHeader(HttpHeaders.ACCEPT_LANGUAGE, options.getAcceptLanguage()); return request; }
/** Test get profile. */ @Test public void testGetProfileWithContent() { ContentItem cItem = new ContentItem(); cItem.setContent(englishText); Content content = new Content(); content.addContentItem(cItem); Map<String, Object> params = new HashMap<String, Object>(); params.put(PersonalityInsights.CONTENT, content); String contentJson = GsonSingleton.getGson().toJson(params.get(PersonalityInsights.CONTENT)); Profile p = new Profile(); p.setId("*UNKNOWN*"); p.setSource("*UNKNOWN*"); p.setWordCount(1339); p.setWordCountMessage( "There were 1,339 words in the input. We need a minimum of 3,500, preferably 6,000 or more, to compute a reliable estimate"); p.setProcessedLanguage("en"); Trait root = new Trait(); root.setId("r"); root.setName("root"); Trait childA = new Trait(); childA.setId("personality"); childA.setName("Big 5"); List<Trait> rootKids = new ArrayList<Trait>(); rootKids.add(childA); root.setChildren(rootKids); Trait childA1 = new Trait(); childA1.setId("Openness_parent"); childA1.setName("Openness"); childA1.setCategory("personality"); childA1.setPercentage(0.8834414318445747); List<Trait> childAKids = new ArrayList<Trait>(); childAKids.add(childA1); childA.setChildren(childAKids); Trait childA11 = new Trait(); childA11.setId("Openness"); childA11.setName("Openness"); childA11.setCategory("personality"); childA11.setPercentage(0.8834414318445747); childA11.setSamplingError(0.0577082256); List<Trait> childA1Kids = new ArrayList<Trait>(); childA1Kids.add(childA11); childA1.setChildren(childA1Kids); Trait childA110 = new Trait(); childA110.setId("Adventurousness"); childA110.setName("Adventurousness"); childA110.setCategory("personality"); childA110.setPercentage(0.7395861152833635); childA110.setSamplingError(0.0494178204); Trait childA111 = new Trait(); childA111.setId("Imagination"); childA111.setName("Imagination"); childA111.setCategory("personality"); childA111.setPercentage(0.8226761749222228); childA111.setSamplingError(0.0616986395); Trait childA112 = new Trait(); childA112.setId("Artistic interests"); childA112.setName("Artistic interests"); childA112.setCategory("personality"); childA112.setPercentage(0.5127471735266416); childA112.setSamplingError(0.0464200574); Trait childA113 = new Trait(); childA113.setId("Emotionality"); childA113.setName("Emotionality"); childA113.setCategory("personality"); childA113.setPercentage(0.3995729122484725); childA113.setSamplingError(0.0464200574); List<Trait> childA11Kids = new ArrayList<Trait>(); childA11Kids.add(childA110); childA11Kids.add(childA111); childA11Kids.add(childA112); childA11Kids.add(childA113); childA11.setChildren(childA11Kids); p.setTree(root); mockServer .when( request() .withMethod("POST") .withPath(GET_PROFILE_PATH) .withBody(contentJson.toString())) .respond( response() .withHeaders(new Header(HttpHeaders.Names.CONTENT_TYPE, MediaType.APPLICATION_JSON)) .withBody(GsonSingleton.getGson().toJson(p))); Profile profile = service.getProfile(params); Assert.assertNotNull(profile); Assert.assertEquals(profile, p); }