public async Task CreateComment_ValidParameters_SetsCorrectResourceAndMethod()
        {
            var sut = new CommitRepository(_requestFactory);

            await sut.CreateComment(0, "commitSha", "note");

            _requestFactory.Received()
            .Create("projects/{projectId}/repository/commits/{commitSha}/comments", Method.Post);
        }
        public async Task CreateComment_ValidParameters_AddsCommitShaUrlSegment()
        {
            const string expected = "commitSha";
            var          sut      = new CommitRepository(_requestFactory);

            await sut.CreateComment(0, expected, "note");

            _request.Received().AddUrlSegment("commitSha", expected);
        }
        public async Task CreateComment_ValidParameters_AddsProjectIdUrlSegment()
        {
            const uint expected = 0;
            var        sut      = new CommitRepository(_requestFactory);

            await sut.CreateComment(expected, "commitSha", "note");

            _request.Received().AddUrlSegment("projectId", expected);
        }
        public async Task CreateComment_PathIsSet_AddsPathParameter()
        {
            const string expected = "path";
            var          sut      = new CommitRepository(_requestFactory);

            await sut.CreateComment(0, "commitSha", "note", expected);

            _request.Received().AddParameterIfNotNull("path", expected);
        }
        public async Task CreateComment_LineIsSet_AddsLineParameter()
        {
            const uint expected = 0;
            var        sut      = new CommitRepository(_requestFactory);

            await sut.CreateComment(0, "commitSha", "note", line : expected);

            _request.Received().AddParameterIfNotNull("line", expected);
        }
        public async Task CreateCommit_ValidParameters_AddsNoteParameter()
        {
            const string expected = "note";
            var          sut      = new CommitRepository(_requestFactory);

            await sut.CreateComment(0, "commitSha", expected);

            _request.Received().AddParameter("note", expected);
        }
        public async Task CreateComment_LineTypeIsSet_AddsLineTypeParameter()
        {
            const string   expected = "new";
            const LineType lineType = LineType.New;
            var            sut      = new CommitRepository(_requestFactory);

            await sut.CreateComment(0, "commitSha", "note", lineType : lineType);

            _request.Received().AddParameterIfNotNull("line_type", expected);
        }
        public async Task CreateComment_NoteIsNull_ThrowsArgumentNullException()
        {
            var sut = new CommitRepository(_requestFactory);

            await Assert.ThrowsAsync <ArgumentNullException>(() => sut.CreateComment(0, "commitSha", null));
        }