• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

pulibrary / tigerdata-app / b6e4a7c7-d411-4822-a760-84eba5096a52

01 Dec 2025 03:02PM UTC coverage: 74.875% (-12.7%) from 87.594%
b6e4a7c7-d411-4822-a760-84eba5096a52

Pull #2251

circleci

carolyncole
Updating the department select to utilize LuxInputMultiSelect
The component only allows an item to be selected once (only for non asynch results which departments are).
fiexs #2134
Pull Request #2251: Updating the department select to utilize LuxInputMultiSelect

2390 of 3192 relevant lines covered (74.87%)

215.79 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

100.0
/app/services/xml_tree_builder.rb
1
# frozen_string_literal: true
2

3
class XmlTreeBuilder < XmlNodeBuilder
1✔
4
  attr_reader :children, :root_builder_options
1✔
5

6
  def null_builder
1✔
7
    @null_builder ||= XmlNullBuilder.new(**root_builder_options)
60✔
8
  end
9

10
  def root_builder
1✔
11
    @root_builder ||= begin
750✔
12
                        default_builder = XmlElementBuilder.new(**root_builder_options)
150✔
13
                        null_builder if default_builder.blank?
150✔
14
                        default_builder
150✔
15
                      end
16
  end
17

18
  delegate :node, :document, to: :root_builder
1✔
19

20
  # @return [Nokogiri::XML::Element]
21
  def build
1✔
22
    nodes = children.map(&:build)
150✔
23
    nodes.each do |child|
150✔
24
      root_builder.add_child(child)
146✔
25
    end
26

27
    node
150✔
28
  end
29

30
  # rubocop:disable Metrics/AbcSize
31
  # rubocop:disable Metrics/MethodLength
32
  #
33
  # @param [Array<Hash>] entries options for constructing each child node
34
  # @return [Array<Nokogiri::XML::Node>] an array of XML child nodes
35
  def parse_child_entries(entries)
1✔
36
    instances = [:default]
150✔
37
    builders = entries.map do |child_entry|
150✔
38
      child_entry.values.map do |child_args|
76✔
39
        multiple_children = child_args[:multiple] || false
144✔
40

41
        if multiple_children
144✔
42
          message = child_args[:object_method]
12✔
43

44
          method_args = child_args[:args] || []
12✔
45
          instances = root_builder.presenter.send(message, *method_args)
12✔
46
        end
47

48
        instances.each_with_index.map do |_instance, i|
144✔
49
          builder_args = child_args.dup
146✔
50
          builder_args[:presenter] = root_builder.presenter
146✔
51
          builder_args[:document] = document
146✔
52

53
          if multiple_children
146✔
54
            builder_args[:index] = i
14✔
55
            builder_args.delete(:multiple)
14✔
56
          end
57
          builder_args.delete(:object_method)
146✔
58
          builder_args.delete(:args)
146✔
59
          self.class.new(**builder_args)
146✔
60
        end
61
      end
62
    end
63
    builders.flatten
150✔
64
  end
65
  # rubocop:enable Metrics/MethodLength
66
  # rubocop:enable Metrics/AbcSize
67

68
  # @param children [Array<XmlNodeBuilder>] XmlNodeBuilder objects for the child nodes in the XML tree
69
  # @param options [Hash] arguments for the root XmlElementBuilder
70
  def initialize(children: [], **options)
1✔
71
    @root_builder_options = options.dup
150✔
72
    @children = parse_child_entries(children)
150✔
73

74
    super(document: document)
150✔
75
  end
76
end
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc