public async Task EvaluateAsync_WithDisabledPolicy_ShouldNotEvaluatePolicy() { var pullRequestUpdate = new PullRequestUpdate { Id = 5, CollectionId = Guid.NewGuid().ToString(), ProjectId = Guid.NewGuid().ToString(), RepositoryId = Guid.NewGuid().ToString() }; var accountConfiguration = new AccountConfiguration { CollectionId = pullRequestUpdate.CollectionId, BaseUrl = "https://fabrikam.visualstudio.com/DefaultCollection", PersonalAccessToken = "SECRET!!" }; var pullRequest = new GitPullRequest(); var gitClientMock = new Mock <GitHttpClient>(new object[] { new Uri("https://fabrikam.visualstudio.com/DefaultCollection"), (VssCredentials) new VssBasicCredential() }); gitClientMock.Setup(m => m.GetPullRequestAsync(It.IsAny <string>(), It.IsAny <int>(), It.IsAny <int?>(), It.IsAny <int?>(), It.IsAny <int?>(), It.IsAny <bool?>(), It.IsAny <bool?>(), It.IsAny <object>(), It.IsAny <CancellationToken>())) .ReturnsAsync(pullRequest); var connectionFactoryMock = new Mock <IVssConnectionFactory>(); connectionFactoryMock.Setup(m => m.CreateFactory(It.IsAny <Uri>(), It.IsAny <VssCredentials>())) .Returns(connectionFactoryMock.Object); connectionFactoryMock.Setup(m => m.GetClientAsync <GitHttpClient>()) .ReturnsAsync(gitClientMock.Object); var testPolicyMock = new Mock <StatusPolicy>(new object[] { connectionFactoryMock.Object }); testPolicyMock.Setup(m => m.EvaluateAsync(It.IsAny <GitPullRequest>())); const string policyName = "TestPolicy"; var statusPoliciesServiceMock = new Mock <IStatusPoliciesService>(); statusPoliciesServiceMock.Setup(m => m.GetPolicies()) .Returns(new string[] { policyName }); statusPoliciesServiceMock.Setup(m => m.GetPolicy(It.IsAny <IVssConnectionFactory>(), It.IsAny <string>())) .Returns(testPolicyMock.Object); var configurationRepositoryMock = new Mock <IConfigurationRepository>(); configurationRepositoryMock.Setup(m => m.GetAsync(It.IsAny <string>())) .ReturnsAsync(accountConfiguration); var pullRequestService = new PullRequestService( new Uri("https://aitpullrequests.azurewebsites.net/"), connectionFactoryMock.Object, statusPoliciesServiceMock.Object, configurationRepositoryMock.Object); await pullRequestService.EvaluateAsync(pullRequestUpdate); configurationRepositoryMock.Verify(m => m.GetAsync(pullRequestUpdate.CollectionId), Times.Once); connectionFactoryMock.Verify(m => m.CreateFactory(new Uri(accountConfiguration.BaseUrl), It.IsAny <VssCredentials>()), Times.Once); gitClientMock.Verify(m => m.GetPullRequestAsync(pullRequestUpdate.RepositoryId, pullRequestUpdate.Id, It.IsAny <int?>(), It.IsAny <int?>(), It.IsAny <int?>(), It.IsAny <bool?>(), It.IsAny <bool?>(), It.IsAny <object>(), It.IsAny <CancellationToken>()), Times.Once); statusPoliciesServiceMock.Verify(m => m.GetPolicies(), Times.Once); statusPoliciesServiceMock.Verify(m => m.GetPolicy(connectionFactoryMock.Object, policyName), Times.Never); testPolicyMock.Verify(m => m.EvaluateAsync(pullRequest), Times.Never); }