Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions app/services/find_not_expected_bibs.rb
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
require "ostruct"

class FindNotExpectedBibs
include Interactors::Errors
include SplitAnalyzable

Response = Struct.new(:errors, :bib_numbers, keyword_init: true)

def self.perform(event_group, split_name)
new(event_group, split_name).perform
end

def initialize(event_group, split_name)
@event_group = event_group
@parameterized_split_name = split_name.parameterize
@parameterized_split_name = split_name.to_s.parameterize
@errors = []
validate_setup
end

def perform
OpenStruct.new(errors: errors, bib_numbers: bib_numbers)
Response.new(errors: errors, bib_numbers: bib_numbers)
end

private
Expand All@@ -31,8 +31,8 @@ def bib_numbers
end

def validate_setup
unless parameterized_split_names.include?(parameterized_split_name)
errors << invalid_split_name_error(parameterized_split_name, parameterized_split_names)
end
return if parameterized_split_names.include?(parameterized_split_name)

errors << invalid_split_name_error(parameterized_split_name, parameterized_split_names)
end
end
35 changes: 35 additions & 0 deletions spec/services/find_not_expected_bibs_spec.rb
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
require "rails_helper"

RSpec.describe FindNotExpectedBibs do
subject { described_class.perform(event_group, split_name) }

let(:event_group) { event_groups(:hardrock_2015) }

context "when the split name is valid for the event group" do
let(:split_name) { "Sherman" }

it "returns bib numbers without errors" do
expect(subject.errors).to be_empty
expect(subject.bib_numbers).to be_an(Array)
end
end

context "when the split name is not found in the event group" do
let(:split_name) { "Nonexistent" }

it "returns an invalid split name error" do
expect(subject.errors.first[:title]).to eq("Invalid split name")
expect(subject.bib_numbers).to eq([])
end
end

context "when the split name is nil" do
let(:split_name) { nil }

it "returns an invalid split name error instead of raising" do
expect { subject }.not_to raise_error
expect(subject.errors.first[:title]).to eq("Invalid split name")
expect(subject.bib_numbers).to eq([])
end
end
end