public void IgnoresMasterBranch()
        {
            var teamcityApi = new Mock <ITeamcityChangesApi>();
            var githubApi   = new Mock <IGithubStatusApi>();
            var handler     = new StatusWebhooksHandler(githubApi.Object, teamcityApi.Object);

            handler.Accept(new TeamcityEvent(TeamcityEventType.Unknown, "build-id", "buildType", "build name", BuildResultDelta.Unknown, "master", TeamcityBuildState.Unknown, "", "1.0"));

            teamcityApi.Verify(x => x.RevisionForBuild("build-id"), Times.Never);
        }
        public void AsksTeamcityApiForRepoAndCommit()
        {
            var teamcityApi = new Mock <ITeamcityChangesApi>();
            var githubApi   = new Mock <IGithubStatusApi>();
            var handler     = new StatusWebhooksHandler(githubApi.Object, teamcityApi.Object);

            handler.Accept(new TeamcityEvent(TeamcityEventType.Unknown, "build-id", "buildType", "build name", BuildResultDelta.Unknown, "foo", TeamcityBuildState.Unknown, "", "1.0"));

            teamcityApi.Verify(x => x.RevisionForBuild("build-id"));
        }
        public void PostsFailureStatusWhenBuildFails()
        {
            var teamcityApi = new Mock <ITeamcityChangesApi>();

            teamcityApi.Setup(x => x.RevisionForBuild("build-id")).ReturnsAsync(new TeamcityRevisionForBuild("build-id", "a-user", "a-repo", "123hash"));
            var githubApi = new Mock <IGithubStatusApi>();
            var handler   = new StatusWebhooksHandler(githubApi.Object, teamcityApi.Object);

            handler.Accept(new TeamcityEvent(TeamcityEventType.BuildFinished, "build-id", "buildType", "build name", BuildResultDelta.Unknown, "foo", TeamcityBuildState.Failure, "Error message is logged", "1.0"));

            var url = "http://buildserver/viewLog.html?buildId=build-id";

            githubApi.Verify(x => x.SetStatus("a-user", "a-repo", "123hash", "failure", "Error message is logged", "build name", url));
        }