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

pulibrary / tigerdata-app / a75ab644-69de-42d4-af3b-04f2c06f5129

28 Oct 2025 03:36PM UTC coverage: 91.333% (+0.2%) from 91.162%
a75ab644-69de-42d4-af3b-04f2c06f5129

push

circleci

web-flow
Dashboard displays projects straights from Mediaflux (#2057)

The list of projects displayed in the **Dashboard** now comes straight
from Mediaflux.

The code in this PR is a bit messy because the
`ProjectDashboardPresenter` inherits from the `ProjectShowPresenter` and
this PR only updates the project information in the Dashboard (not on
the project Show page). Therefore there a few extra `if/else` statements
to account for the two kind of data that the presenter might receive. I
am hoping these `if/else` statements will be removed once we update the
Project Show page
(https://github.com/pulibrary/tigerdata-app/issues/2039) to also fetch
its data directly from Mediaflux.

Closes #2037 (and #2038)

Example in QA of the Dashboard showing **only my Projects** in the
Projects tab and **all the projects** in the Admin tab (I am an
Administrator in QA):

<img width="1211" height="848" alt="mine"
src="https://github.com/user-attachments/assets/c5fa4ace-fa1d-4529-8f89-1f23a0ab8b3d"
/>

<img width="1187" height="708" alt="not-mine"
src="https://github.com/user-attachments/assets/218323ec-4c78-4b15-8103-c50d26c9a690"
/>

32 of 87 new or added lines in 4 files covered. (36.78%)

699 existing lines in 26 files now uncovered.

2803 of 3069 relevant lines covered (91.33%)

486.99 hits per line

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

100.0
/app/services/xml_node_builder.rb
1
# frozen_string_literal: true
UNCOV
2
class XmlNodeBuilder
4✔
UNCOV
3
  XML_VERSION = "1.0"
4✔
4

UNCOV
5
  attr_reader :document, :node
4✔
6

7
  # @return [String]
UNCOV
8
  def xml_version
4✔
UNCOV
9
    XML_VERSION
726✔
UNCOV
10
  end
11

12
  # @return [Array<String>]
UNCOV
13
  def xml_document_args
4✔
UNCOV
14
    [
UNCOV
15
      xml_version
726✔
UNCOV
16
    ]
UNCOV
17
  end
18

19
  # @return [Nokogiri::XML::Document]
UNCOV
20
  def build_document
4✔
UNCOV
21
    Nokogiri::XML::Document.new(*xml_document_args)
726✔
UNCOV
22
  end
23

24
  # @return [Nokogiri::XML::Element]
UNCOV
25
  def build
4✔
UNCOV
26
    return node if node.present?
2✔
27

UNCOV
28
    @node = document.root
2✔
UNCOV
29
  end
30

31
  # @param [Nokogiri::XML::Document] document
UNCOV
32
  def initialize(document: nil)
4✔
UNCOV
33
    @document = document || build_document
4,028✔
34

UNCOV
35
    @node = nil
4,028✔
UNCOV
36
  end
UNCOV
37
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

© 2026 Coveralls, Inc