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

pulibrary / tigerdata-app / 1f9ee909-20b2-467d-b493-b5be4964430d

22 Oct 2025 04:57PM UTC coverage: 91.212%. Remained the same
1f9ee909-20b2-467d-b493-b5be4964430d

push

circleci

web-flow
Fixing flaky tests (#2080)

10 times out of 10 one of these tests would fail for me locally.

Really we just have to look at the page for something new so that we are
sure the controller action has finished before we check for something
that is not waiting.

2740 of 3004 relevant lines covered (91.21%)

755.12 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
5✔
4
  attr_reader :children, :root_builder_options
5✔
5

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

10
  def root_builder
5✔
11
    @root_builder ||= begin
16,724✔
12
                        default_builder = XmlElementBuilder.new(**root_builder_options)
3,346✔
13
                        null_builder if default_builder.blank?
3,346✔
14
                        default_builder
3,346✔
15
                      end
16
  end
17

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

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

27
    node
3,346✔
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)
5✔
36
    instances = [:default]
3,346✔
37
    builders = entries.map do |child_entry|
3,346✔
38
      child_entry.values.map do |child_args|
1,710✔
39
        multiple_children = child_args[:multiple] || false
3,240✔
40

41
        if multiple_children
3,240✔
42
          message = child_args[:object_method]
270✔
43

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

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

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

74
    super(document: document)
3,346✔
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