lib/pipekit/field_repository.rb in pipekit-1.0.1 vs lib/pipekit/field_repository.rb in pipekit-1.0.2
- old
+ new
@@ -8,27 +8,46 @@
def get_by_name(name)
search_fields("name", name)
end
- def find_label(field:,id:)
- find_values(field).find({}) { |value| value["id"] == id }.fetch("label")
+ def find_label(field:, id:)
+ find_values(field)
+ .find(raise_label_not_found(field, id)) { |value| value["id"] == id.to_i }
+ .fetch("label", "")
end
def find_values(field)
- find_by(name: field)["options"]
+ find_by(name: field).fetch("options", [], choose_first_value: false)
end
private
+ def raise_label_not_found(field, id)
+ -> { raise LabelNotFoundError.new(field, id) }
+ end
+
def search_fields(field_element, value)
result = request.get.select { |element| element[field_element] == value }
raise ResourceNotFoundError.new("#{parent_resource}Field searching by element #{field_element} for #{value} could not be found") if result.empty?
result
end
def parent_resource
resource.chomp("Field")
+ end
+
+ end
+
+ class LabelNotFoundError < StandardError
+
+ def initialize(field, id)
+ @field = field
+ @id = id
+ end
+
+ def message
+ "Could not find label for id: #{@id} with field: #{@field}"
end
end
end