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

pulibrary / tigerdata-app / 7291b10e-eaa3-4284-9371-5a980ceebf59

24 Nov 2025 07:18PM UTC coverage: 87.613% (-3.7%) from 91.333%
7291b10e-eaa3-4284-9371-5a980ceebf59

push

circleci

web-flow
Adds breadcrumb to Wizard (#2231)

Adds the breadcrumb to the Wizard and the functionality to allow the
user to save their changes before leaving the Wizard when clicking on
the "Dashboard" link in the breadcrumbs.

Closes #2102

5 of 12 new or added lines in 11 files covered. (41.67%)

904 existing lines in 36 files now uncovered.

2801 of 3197 relevant lines covered (87.61%)

360.23 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

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

UNCOV
6
  def null_builder
3✔
UNCOV
7
    @null_builder ||= XmlNullBuilder.new(**root_builder_options)
616✔
UNCOV
8
  end
9

UNCOV
10
  def root_builder
3✔
UNCOV
11
    @root_builder ||= begin
7,602✔
UNCOV
12
                        default_builder = XmlElementBuilder.new(**root_builder_options)
1,521✔
UNCOV
13
                        null_builder if default_builder.blank?
1,521✔
UNCOV
14
                        default_builder
1,521✔
UNCOV
15
                      end
UNCOV
16
  end
17

UNCOV
18
  delegate :node, :document, to: :root_builder
3✔
19

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

UNCOV
27
    node
1,521✔
UNCOV
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
UNCOV
35
  def parse_child_entries(entries)
3✔
UNCOV
36
    instances = [:default]
1,521✔
UNCOV
37
    builders = entries.map do |child_entry|
1,521✔
UNCOV
38
      child_entry.values.map do |child_args|
779✔
UNCOV
39
        multiple_children = child_args[:multiple] || false
1,476✔
40

UNCOV
41
        if multiple_children
1,476✔
UNCOV
42
          message = child_args[:object_method]
123✔
43

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

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

UNCOV
53
          if multiple_children
1,479✔
UNCOV
54
            builder_args[:index] = i
126✔
UNCOV
55
            builder_args.delete(:multiple)
126✔
UNCOV
56
          end
UNCOV
57
          builder_args.delete(:object_method)
1,479✔
UNCOV
58
          builder_args.delete(:args)
1,479✔
UNCOV
59
          self.class.new(**builder_args)
1,479✔
UNCOV
60
        end
UNCOV
61
      end
UNCOV
62
    end
UNCOV
63
    builders.flatten
1,521✔
UNCOV
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
UNCOV
70
  def initialize(children: [], **options)
3✔
UNCOV
71
    @root_builder_options = options.dup
1,521✔
UNCOV
72
    @children = parse_child_entries(children)
1,521✔
73

UNCOV
74
    super(document: document)
1,521✔
UNCOV
75
  end
UNCOV
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