scottwillson/racing_on_rails

View on GitHub
test_ruby/models/calculations/v3/steps/select_in_discipline_test.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

require_relative "../../v3"

module Calculations
  module V3
    module Steps
      # :stopdoc:
      class SelectInDisciplineTest < Ruby::TestCase
        def test_calculate
          cx = Models::Discipline.new("Cyclocross")
          road = Models::Discipline.new("Road")
          rules = Rules.new(disciplines: [road])
          calculator = Calculator.new(rules: rules, source_results: [])
          calculation_event_category = calculator.event_categories.first
          source_results = []

          event = Models::Event.new(discipline: road)
          category = Models::Category.new("Women")
          event_category = Models::EventCategory.new(category, event)
          participant = Models::Participant.new(0)
          source_results << Models::SourceResult.new(id: 1, event_category: event_category)

          event = Models::Event.new(discipline: cx)
          event_category = Models::EventCategory.new(category, event)
          source_results << Models::SourceResult.new(id: 2, event_category: event_category)

          result = Models::CalculatedResult.new(participant, source_results)
          calculation_event_category.results << result

          event_categories = SelectInDiscipline.calculate!(calculator)

          assert_equal 1, event_categories.first.results.size
          source_results = event_categories.first.results.first.source_results.sort_by(&:id)
          assert_equal 1, source_results.size

          refute source_results[0].rejected?
          assert_nil source_results[0].rejection_reason
        end

        def test_category_discipline
          cx = Models::Discipline.new("Cyclocross")
          road = Models::Discipline.new("Road")
          rules = Rules.new(disciplines: [road])
          calculator = Calculator.new(rules: rules, source_results: [])
          calculation_event_category = calculator.event_categories.first
          source_results = []

          event = Models::Event.new(discipline: road)
          category = Models::Category.new("Women")
          event_category = Models::EventCategory.new(category, event)
          participant = Models::Participant.new(0)
          source_results << Models::SourceResult.new(id: 1, event_category: event_category)

          event = Models::Event.new(discipline: cx)
          event_category = Models::EventCategory.new(category, event)
          source_results << Models::SourceResult.new(id: 2, event_category: event_category)

          event_category = Models::EventCategory.new(category, event, discipline: road)
          source_results << Models::SourceResult.new(id: 3, event_category: event_category)

          result = Models::CalculatedResult.new(participant, source_results)
          calculation_event_category.results << result

          event_categories = SelectInDiscipline.calculate!(calculator)

          assert_equal 1, event_categories.first.results.size
          source_results = event_categories.first.results.first.source_results.sort_by(&:id)
          assert_equal 2, source_results.size

          refute source_results[0].rejected?
          assert_nil source_results[0].rejection_reason
        end
      end
    end
  end
end