### Question:
FeatureFlagService extends AbstractService { public ProjectFeatureFlag createProjectFeatureFlag(final Project project, final ProjectFeatureFlag flag) { notNull(project, "project"); notNull(flag, "flag"); final String featureFlagsUri = PROJECT_FEATURE_FLAGS_TEMPLATE.expand(project.getId()).toString(); try { final URI featureFlagUri = restTemplate.postForLocation(featureFlagsUri, flag); if (featureFlagUri == null) { throw new GoodDataException("URI of new project feature flag can't be null"); } return getProjectFeatureFlag(featureFlagUri.toString()); } catch (GoodDataException | RestClientException e) { throw new GoodDataException("Unable to create project feature flag: " + flag, e); } } FeatureFlagService(final RestTemplate restTemplate, final GoodDataSettings settings); FeatureFlags listFeatureFlags(final Project project); ProjectFeatureFlags listProjectFeatureFlags(final Project project); ProjectFeatureFlag getProjectFeatureFlag(final Project project, final String featureFlagName); ProjectFeatureFlag createProjectFeatureFlag(final Project project, final ProjectFeatureFlag flag); ProjectFeatureFlag updateProjectFeatureFlag(final ProjectFeatureFlag flag); void deleteProjectFeatureFlag(final ProjectFeatureFlag flag); static final UriTemplate PROJECT_FEATURE_FLAG_TEMPLATE; static final UriTemplate PROJECT_FEATURE_FLAGS_TEMPLATE; static final UriTemplate AGGREGATED_FEATURE_FLAGS_TEMPLATE; }### Answer:
@Test(expectedExceptions = IllegalArgumentException.class) public void whenNullKeyThenCreateProjectFeatureFlagShouldThrow() throws Exception { service.createProjectFeatureFlag(project, null); }
@Test(expectedExceptions = IllegalArgumentException.class) public void whenNullProjectThenCreateProjectFeatureFlagShouldThrow() throws Exception { service.createProjectFeatureFlag(null, projectFeatureFlag); }
@Test(expectedExceptions = GoodDataException.class) public void whenEmptyResponseThenCreateProjectFeatureFlagShouldThrow() throws Exception { when(restTemplate.postForLocation(PROJECT_FEATURE_FLAG_URI, projectFeatureFlag)).thenReturn(null); service.createProjectFeatureFlag(project, projectFeatureFlag); }
@Test(expectedExceptions = GoodDataException.class) public void whenClientErrorResponseThenCreateProjectFeatureFlagShouldThrow() throws Exception { when(restTemplate.postForLocation(PROJECT_FEATURE_FLAG_URI, projectFeatureFlag)) .thenThrow(new RestClientException("")); service.createProjectFeatureFlag(project, projectFeatureFlag); }