@Test(dataProvider = "shouldForkData")
public void testShouldFork(ShouldForkResult isForkResult,
                           ShouldForkResult isArchivedResult,
                           ShouldForkResult userIsNotOwnerResult,
                           ShouldForkResult contentHasChangesResult,
                           ShouldForkResult expectedResult) {

    ForkableRepoValidator validator = mock(ForkableRepoValidator.class);
    when(validator.parentIsFork(any())).thenReturn(isForkResult);
    when(validator.parentIsArchived(any())).thenReturn(isArchivedResult);
    when(validator.thisUserIsNotOwner(any())).thenReturn(userIsNotOwnerResult);
    when(validator.contentHasChangesInDefaultBranch(any(), any(), any())).thenReturn(contentHasChangesResult);
    when(validator.shouldFork(any(), any(), any())).thenCallRealMethod();
    assertEquals(validator.shouldFork(mock(GHRepository.class), mock(GHContent.class), mock(GitForkBranch.class)),
            expectedResult);
}