public void testCreateMetaShouldReturnIssueTypeInFieldsListEvenIfIssueTypeIsNotOnCreateIssueScreen() {
final IssueRestClient issueClient = client.getIssueClient();
final Iterable<CimProject> cimProjects = issueClient.getCreateIssueMetadata(
new GetCreateIssueMetadataOptionsBuilder().withExpandedIssueTypesFields().build()).claim();
final CimProject testProject = findEntityByName(cimProjects, "Project With Create Issue Screen Without Issue Type");
assertThat(testProject.getIssueTypes(), IsIterableWithSize.<CimIssueType>iterableWithSize(5));
for (CimIssueType cimIssueType : testProject.getIssueTypes()) {
final CimFieldInfo issueType = cimIssueType.getField(IssueFieldId.ISSUE_TYPE_FIELD);
final String assertMessageIssueTypeNotPresent = String.format(
"Issue type is missing for project %s (%s) and issue type %s (%s)!",
testProject.getName(), testProject.getKey(), cimIssueType.getName(), cimIssueType.getId());
assertNotNull(assertMessageIssueTypeNotPresent, issueType);
// check the allowed values
final Iterable<Object> allowedValues = issueType.getAllowedValues();
final String assertMessageAllowedValuesSizeNotMatch = String.format(
"We expected exactly one allowed value - the issue type %s (%s) for project %s (%s)",
testProject.getName(), testProject.getKey(), cimIssueType.getName(), cimIssueType.getId());
assertEquals(assertMessageAllowedValuesSizeNotMatch, 1, Iterables.size(allowedValues));
//noinspection unchecked
final BasicIssueType firstAllowedValue = (BasicIssueType) Iterables.getOnlyElement(allowedValues);
assertEquals(firstAllowedValue.getId(), cimIssueType.getId());