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) })); }
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(); }
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); } }
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)); }
public Result <ListIssuesParameters> NegotiateListIssuesParameters(ListIssuesOptions options) { return(_issueParametersNegotiator.NegotiateListIssuesParameters(options, _appSettings.DefaultProject, _appSettings.DefaulIssuesLabel)); }