### Question:
FactManager implements LifecycleAspect { public FactCommentEntity saveFactComment(FactCommentEntity comment) { if (comment == null) return null; if (getFact(comment.getFactID()) == null) throw new IllegalArgumentException(String.format("Fact with id = %s does not exist.", comment.getFactID())); if (factDao.getComment(comment.getFactID(), comment.getId()) != null) throw new ImmutableViolationException("It is not allowed to update a comment."); factDao.save(comment); return comment; } @Inject  FactManager(ClusterManager clusterManager); @Override void startComponent(); @Override void stopComponent(); FactTypeEntity getFactType(UUID id); FactTypeEntity getFactType(String name); List<FactTypeEntity> fetchFactTypes(); FactTypeEntity saveFactType(FactTypeEntity type); FactEntity getFact(UUID id); Iterator<FactEntity> getFacts(List<UUID> id); FactEntity saveFact(FactEntity fact); FactEntity refreshFact(UUID id); FactEntity retractFact(UUID id); List<FactAclEntity> fetchFactAcl(UUID id); FactAclEntity saveFactAclEntry(FactAclEntity entry); List<FactCommentEntity> fetchFactComments(UUID id); FactCommentEntity saveFactComment(FactCommentEntity comment); List<MetaFactBindingEntity> fetchMetaFactBindings(UUID id); MetaFactBindingEntity saveMetaFactBinding(MetaFactBindingEntity binding);  }### Answer:
@Test public void testSaveFactCommentReturnsSameEntity() { FactCommentEntity entity = createFactComment(createAndSaveFact().getId()); assertSame(entity, getFactManager().saveFactComment(entity)); }
@Test public void testSaveFactCommentReturnsNullOnNullInput() { assertNull(getFactManager().saveFactComment(null)); }
@Test(expected = IllegalArgumentException.class) public void testSaveFactCommentWithNonExistingFactThrowsException() { getFactManager().saveFactComment(createFactComment(UUID.randomUUID())); }
@Test(expected = ImmutableViolationException.class) public void testSaveFactCommentTwiceThrowsException() { FactCommentEntity comment = createFactComment(createAndSaveFact().getId()); getFactManager().saveFactComment(comment); getFactManager().saveFactComment(comment); }