### Question:
ValidationRun implements RunnableEntity { public static ValidationRun of( Build build, ValidationStamp validationStamp, int runOrder, Signature signature, ValidationRunStatusID validationRunStatusID, String description) { List<ValidationRunStatus> statuses = Collections.singletonList( new ValidationRunStatus( ID.NONE, signature, validationRunStatusID, description ) ); return of(build, validationStamp, runOrder, statuses); }  @Nullable @Override String getDescription(); @NotNull @Override @JsonIgnore RunnableEntityType getRunnableEntityType(); @NotNull @Override @JsonIgnore String getRunMetricName(); @NotNull @Override @JsonIgnore Map<String, String> getRunMetricTags(); @NotNull @Override @JsonIgnore LocalDateTime getRunTime(); ValidationRun add(ValidationRunStatus status); @Override Project getProject(); @Override ProjectEntityType getProjectEntityType(); @Override String getEntityDisplayName(); static ValidationRun of(
            Build build,
            ValidationStamp validationStamp,
            int runOrder,
            Signature signature,
            ValidationRunStatusID validationRunStatusID,
            String description); static ValidationRun of(Build build, ValidationStamp validationStamp, int runOrder, List<ValidationRunStatus> statuses); ValidationRun withId(ID id); boolean isPassed(); ValidationRunStatus getLastStatus(); @Override Signature getSignature();  }### Answer:
@Test public void of() { Project project = Project.of(new NameDescription("P", "Project")).withId(ID.of(1)); Branch branch = Branch.of(project, new NameDescription("B", "Branch")).withId(ID.of(1)); Build build = Build.of(branch, new NameDescription("1", "Build 1"), Signature.of("user")).withId(ID.of(1)); ValidationStamp stamp = ValidationStamp.of(branch, new NameDescription("S", "Stamp")).withId(ID.of(1)); ValidationRunStatusID statusId = ValidationRunStatusID.of(ValidationRunStatusID.PASSED, "Passed", true, true); ValidationRun run = ValidationRun.of( build, stamp, 1, Signature.of("validator"), statusId, "Some validation" ); Entity.isEntityNew(run, "Validation run must be new"); assertSame(build, run.getBuild()); assertSame(stamp, run.getValidationStamp()); assertEquals(1, run.getRunOrder()); List<ValidationRunStatus> statuses = run.getValidationRunStatuses(); assertNotNull(statuses); assertEquals(1, statuses.size()); ValidationRunStatus status = statuses.get(0); assertSame(statusId, status.getStatusID()); assertEquals("Some validation", status.getDescription()); assertEquals("validator", status.getSignature().getUser().getName()); }