Refactoring: introduce local, return early

- use #reject
  - add basic spec around it
This commit is contained in:
Olle Jonsson 2016-02-23 23:04:43 +01:00
parent 4ceb065cae
commit 87b9962a8d
2 changed files with 21 additions and 6 deletions

View File

@ -4,13 +4,12 @@ module GitHubChangelogGenerator
# @param [Array] issues # @param [Array] issues
# @return [Array] filtered array # @return [Array] filtered array
def exclude_issues_by_labels(issues) def exclude_issues_by_labels(issues)
unless @options[:exclude_labels].nil? return issues if !@options[:exclude_labels] || @options[:exclude_labels].empty?
issues = issues.select do |issue|
var = issue.labels.map(&:name) & @options[:exclude_labels] issues.reject do |issue|
!var.any? labels = issue.labels.map(&:name)
end (labels & @options[:exclude_labels]).any?
end end
issues
end end
# @return [Array] filtered issues accourding milestone # @return [Array] filtered issues accourding milestone

View File

@ -0,0 +1,16 @@
module GitHubChangelogGenerator
describe Generator do
context "#exclude_issues_by_labels" do
let(:label) { double("the-bad-label", name: "BAD") }
let(:issue) { double("the-issue-to-be-excluded", labels: [label]) }
let(:issues) { [issue] }
subject(:generator) { described_class.new(exclude_labels: %w(BAD BOO))}
it "removes issues with labels in the exclude_label list" do
result = generator.exclude_issues_by_labels(issues)
expect(result).to be_empty
end
end
end
end