# frozen_string_literal: true class Logic::IncludeOperator < Logic::BinaryOperator def operation = :include? def errors(type_de_champs = []) result = [] if left_not_a_list?(type_de_champs) result << { type: :required_list } elsif right_value_not_in_list?(type_de_champs) result << { type: :not_included, stable_id: @left.stable_id, right: @right } end result + @left.errors(type_de_champs) + @right.errors(type_de_champs) end private def left_not_a_list?(type_de_champs) @left.type(type_de_champs) != :enums end def right_value_not_in_list?(type_de_champs) !@left.options(type_de_champs).map(&:second).include?(@right.value) end end