Example #1
0
        public void NegotiateListIssuesParametersReturnsFailureForMissingProject(ListIssuesOptions options, string defaultIssuesLabel)
        {
            options.Project = "";
            var sut = new IssueParametersNegotiator();

            sut.NegotiateListIssuesParameters(options, "", defaultIssuesLabel).IsFailure.Should().BeTrue();
        }
        public Result <ListIssuesParameters> NegotiateListIssuesParameters(ListIssuesOptions options, string defaultProject, string defaultIssuesLabel)
        {
            var project = GetProject(options, defaultProject);

            if (project.IsFailure)
            {
                return(Fail <ListIssuesParameters>(project));
            }

            var outputFormat = ParseOutputFormat(options.Output);

            if (outputFormat.IsFailure)
            {
                return(Fail <ListIssuesParameters>(outputFormat));
            }

            var issueState = ParseIssueState(options.State);

            if (!issueState.HasValue)
            {
                return(Fail <ListIssuesParameters>($"State parameter: {options.State} is not supported." +
                                                   "Supported values are: opened|closed|all"));
            }

            return(Ok(new ListIssuesParameters(
                          project.Value,
                          options.Assignee)
            {
                AssignedToCurrentUser = options.AssignedToMe,
                Output = outputFormat.Value,
                Filter = options.Filter,
                IssuesIds = options.Ids.SafeToList(),
                Labels = NegotiateLabels(options.Labels, defaultIssuesLabel)
            }));
        }
Example #3
0
        public void NegotiateListIssuesParametersReturnsFailureForUnknownOutputType(
            ListIssuesOptions options,
            string defaultProject,
            string defaultIssuesLabel,
            string unknownOutputType)
        {
            options.Output = unknownOutputType;
            var sut = new IssueParametersNegotiator();

            sut.NegotiateListIssuesParameters(options, defaultProject, defaultIssuesLabel).IsFailure.Should().BeTrue();
        }
Example #4
0
        public void NegotiateListIssueParametersTakesLabelsFromOptions(
            ListIssuesOptions options,
            string defaultProject,
            string defaultIssuesLabel)
        {
            options.Output = "rows";
            options.State  = "opened";
            var sut = new IssueParametersNegotiator();

            sut.NegotiateListIssuesParameters(options, defaultProject, defaultIssuesLabel).
            Value.Labels.
            Should().
            BeEquivalentTo(options.Labels);
        }
        public async Task Visit(ListIssuesOptions options)
        {
            if (!ValidateConfiguration())
            {
                return;
            }

            var parameters = _parametersHandler.NegotiateListIssuesParameters(options);

            if (parameters.IsSuccess)
            {
                await _issuesHandler.ListIssues(parameters.Value);
            }
            else
            {
                ShowError(parameters);
            }
        }
Example #6
0
        public void NegotiateListIssuesParametersCreatesParametersFromOptions(
            ListIssuesOptions options,
            string defaultProject,
            string defaultIssuesLabel)
        {
            options.Output = "rows";
            options.State  = "opened";
            var sut = new IssueParametersNegotiator();

            sut.NegotiateListIssuesParameters(options, defaultProject, defaultIssuesLabel).Value.
            Should().
            Match <ListIssuesParameters>(o =>
                                         o.Project == options.Project &&
                                         o.Assignee == options.Assignee &&
                                         o.Filter == options.Filter &&
                                         o.Output == OutputFormat.Rows &&
                                         o.AssignedToCurrentUser == options.AssignedToMe &&
                                         o.IssueState == IssueState.Opened &&
                                         o.IssuesIds.SequenceEqual(options.Ids) &&
                                         o.Labels.SequenceEqual(options.Labels));
        }
Example #7
0
 public Result <ListIssuesParameters> NegotiateListIssuesParameters(ListIssuesOptions options)
 {
     return(_issueParametersNegotiator.NegotiateListIssuesParameters(options, _appSettings.DefaultProject, _appSettings.DefaulIssuesLabel));
 }