Skip to content

Commit 836a96b

Browse files
authored
Xml file fixes (#427)
2 parents 907b8d1 + 1f7dd74 commit 836a96b

File tree

6 files changed

+44
-40
lines changed

6 files changed

+44
-40
lines changed

app/services/language_content_processor.rb

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,16 @@ def provider_files
2525
# this is needed to avoid loading all files into memory at once
2626
def language_files
2727
{
28-
# all_providers: FileToUpload.new(
29-
# content: ->(language) { XmlGenerator::AllProviders.new(language).perform },
30-
# name: "#{language.file_storage_prefix}Server_XML.xml",
31-
# path: "#{language.file_storage_prefix}CMES-Pi/assets/XML",
32-
# ),
33-
# all_providers_recent: FileToUpload.new(
34-
# content: ->(language) { XmlGenerator::AllProviders.new(language, recent: true).perform },
35-
# name: "#{language.file_storage_prefix}New_Uploads_Server_XML.xml",
36-
# path: "#{language.file_storage_prefix}CMES-Pi/assets/XML",
37-
# ),
28+
all_providers: FileToUpload.new(
29+
content: ->(language) { XmlGenerator::AllProviders.new(language).perform },
30+
name: "#{language.file_storage_prefix}Server_XML.xml",
31+
path: "#{language.file_storage_prefix}CMES-Pi/assets/XML",
32+
),
33+
all_providers_recent: FileToUpload.new(
34+
content: ->(language) { XmlGenerator::AllProviders.new(language, recent: true).perform },
35+
name: "#{language.file_storage_prefix}New_Uploads_Server_XML.xml",
36+
path: "#{language.file_storage_prefix}CMES-Pi/assets/XML",
37+
),
3838
tags: FileToUpload.new(
3939
content: ->(language) { TextGenerator::Tags.new(language).perform },
4040
name: "#{language.file_storage_prefix}tags.txt",
@@ -82,8 +82,8 @@ def process_language_content!
8282
FileUploadJob.perform_later(language.id, file_id.to_s, "file")
8383
end
8484

85-
# language.providers.distinct.find_each do |provider|
86-
# FileUploadJob.perform_later(language.id, provider.id, "provider")
87-
# end
85+
language.providers.distinct.find_each do |provider|
86+
FileUploadJob.perform_later(language.id, provider.id, "provider")
87+
end
8888
end
8989
end

app/services/xml_generator/base.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,15 @@ def perform
77

88
def builder
99
Ox::Document.new.tap do |doc|
10+
# Use the XML declaration as in your working file
1011
instruct = Ox::Instruct.new(:xml)
1112
instruct[:version] = "1.0"
13+
instruct[:encoding] = "UTF-8"
14+
instruct[:standalone] = "no"
1215
doc << instruct
1316

14-
xml = Ox::Element.new("cmes")
17+
# Use CMES as the root element (all caps)
18+
xml = Ox::Element.new("CMES")
1519
xml_content(xml)
1620
doc << xml
1721
end

app/services/xml_generator/single_provider.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def xml_content(xml)
1313
end
1414

1515
def provider_xml(provider)
16-
Ox::Element.new("content_provider").tap do |xml|
16+
Ox::Element.new("Content_Provider").tap do |xml|
1717
xml[:name] = provider.name
1818

1919
grouped_topics(provider).sort_by { |year, _| -year.to_i }.each do |(year, months)|

spec/services/language_content_processor_spec.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,20 @@
1515
end
1616

1717
it "processes content for every language" do
18-
files_number = language.providers.size + 6 # 2 xml files for all providers, 1 xml file for single provider, 2 text files for tags, 5 csv files
18+
files_number = language.providers.size + 9 # 2 xml files for all providers, 1 xml file for single provider, 2 text files for tags, 5 csv files
1919
subject.perform
2020

2121
expect(FileUploadJob).to have_received(:perform_later).exactly(files_number).times
2222

23-
# expect(FileUploadJob).to have_received(:perform_later).with(language.id, "all_providers", "file")
24-
# expect(FileUploadJob).to have_received(:perform_later).with(language.id, "all_providers_recent", "file")
23+
expect(FileUploadJob).to have_received(:perform_later).with(language.id, "all_providers", "file")
24+
expect(FileUploadJob).to have_received(:perform_later).with(language.id, "all_providers_recent", "file")
2525
expect(FileUploadJob).to have_received(:perform_later).with(language.id, "tags", "file")
2626
expect(FileUploadJob).to have_received(:perform_later).with(language.id, "tags_and_title", "file")
2727
expect(FileUploadJob).to have_received(:perform_later).with(language.id, "files", "file")
2828
expect(FileUploadJob).to have_received(:perform_later).with(language.id, "topics", "file")
2929
expect(FileUploadJob).to have_received(:perform_later).with(language.id, "tag_details", "file")
3030
expect(FileUploadJob).to have_received(:perform_later).with(language.id, "topic_tags", "file")
3131
expect(FileUploadJob).to have_received(:perform_later).with(language.id, "topic_authors", "file")
32-
# expect(FileUploadJob).to have_received(:perform_later).with(language.id, provider.id, "provider")
32+
expect(FileUploadJob).to have_received(:perform_later).with(language.id, provider.id, "provider")
3333
end
3434
end

spec/services/xml_generator/all_providers_spec.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@
2323
doc = Nokogiri::XML(xml)
2424

2525
[ provider1, provider2 ].each do |prov|
26-
pnode = doc.at_xpath("//cmes/content_provider[@name='#{prov.name}']")
26+
pnode = doc.at_xpath("//CMES/Content_Provider[@name='#{prov.name}']")
2727
expect(pnode).to be_present
2828
end
2929

3030
[ [ provider1, topic1 ], [ provider2, topic2 ] ].each do |prov, topic|
31-
pnode = doc.at_xpath("//cmes/content_provider[@name='#{prov.name}']")
31+
pnode = doc.at_xpath("//CMES/Content_Provider[@name='#{prov.name}']")
3232
year = topic.published_at.year
3333
ynode = pnode.at_xpath("./topic_year[@year='#{year}']")
3434
expect(ynode).to be_present
@@ -86,7 +86,7 @@
8686
xml = subject.perform
8787
doc = Nokogiri::XML(xml)
8888

89-
pnode = doc.at_xpath("//cmes/content_provider[@name='#{provider1.name}']")
89+
pnode = doc.at_xpath("//CMES/Content_Provider[@name='#{provider1.name}']")
9090
expect(pnode).to be_present
9191

9292
years = pnode.xpath("./topic_year/@year").map(&:value)
@@ -112,7 +112,7 @@
112112
xml = subject.perform
113113
doc = Nokogiri::XML(xml)
114114

115-
pnode = doc.at_xpath("//cmes/content_provider[@name='#{provider1.name}']")
115+
pnode = doc.at_xpath("//CMES/Content_Provider[@name='#{provider1.name}']")
116116
expect(pnode).to be_present
117117

118118
y2024 = pnode.at_xpath("./topic_year[@year='2024']")

spec/services/xml_generator/single_provider_spec.rb

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
it "generates the xml" do
99
xml = subject.perform
1010
doc = Nokogiri::XML(xml)
11-
provider_nodes = doc.xpath("//cmes/content_provider[@name='#{provider.name}']")
11+
provider_nodes = doc.xpath("//CMES/Content_Provider[@name='#{provider.name}']")
1212
expect(provider_nodes.size).to eq(1)
1313
# No topics → self-closing provider node (no children)
1414
expect(provider_nodes.first.element_children).to be_empty
@@ -36,34 +36,34 @@
3636
xml = subject.perform
3737
doc = Nokogiri::XML(xml)
3838

39-
provider_node = doc.at_xpath("//cmes/content_provider[@name='#{provider.name}']")
39+
provider_node = doc.at_xpath("//CMES/Content_Provider[@name='#{provider.name}']")
4040
expect(provider_node).to be_present
4141

42-
year_node = provider_node.at_xpath("./topic_year[@year='#{topic.published_at.year}']")
42+
year_node = provider_node.at_xpath("./topic_year[@year='#{topic.published_at.year}']")
4343
expect(year_node).to be_present
4444

45-
month_label = topic.published_at.strftime("%m_%B")
46-
month_node = year_node.at_xpath("./topic_month[@month='#{month_label}']")
45+
month_label = topic.published_at.strftime("%m_%B")
46+
month_node = year_node.at_xpath("./topic_month[@month='#{month_label}']")
4747
expect(month_node).to be_present
4848

49-
title_node = month_node.at_xpath("./title[@name='#{topic.title}']")
49+
title_node = month_node.at_xpath("./title[@name='#{topic.title}']")
5050
expect(title_node).to be_present
5151

52-
expect(title_node.at_xpath("./topic_id").text).to eq(topic.id.to_s)
53-
expect(title_node.at_xpath("./counter").text).to eq("0")
54-
expect(title_node.at_xpath("./topic_volume").text).to eq(topic.published_at.year.to_s)
55-
expect(title_node.at_xpath("./topic_issue").text).to eq(topic.published_at.month.to_s)
52+
expect(title_node.at_xpath("./topic_id").text).to eq(topic.id.to_s)
53+
expect(title_node.at_xpath("./counter").text).to eq("0")
54+
expect(title_node.at_xpath("./topic_volume").text).to eq(topic.published_at.year.to_s)
55+
expect(title_node.at_xpath("./topic_issue").text).to eq(topic.published_at.month.to_s)
5656

57-
files_node = title_node.at_xpath("./topic_files[@files='Files']")
57+
files_node = title_node.at_xpath("./topic_files[@files='Files']")
5858
expect(files_node).to be_present
59-
file1 = files_node.at_xpath("./file_name_1")
60-
expect(file1.text).to eq("test_image.png")
61-
expect(file1["file_size"]).to be_present
59+
file1 = files_node.at_xpath("./file_name_1")
60+
expect(file1.text).to eq("test_image.png")
61+
expect(file1["file_size"]).to be_present
6262

63-
author_node = title_node.at_xpath("./topic_author/topic_author_1")
64-
expect(author_node.text).to eq(" ")
63+
author_node = title_node.at_xpath("./topic_author/topic_author_1")
64+
expect(author_node.text).to eq(" ")
6565

66-
expect(title_node.at_xpath("./topic_tags").text).to eq(topic.current_tags_list.join(", "))
66+
expect(title_node.at_xpath("./topic_tags").text).to eq(topic.current_tags_list.join(", "))
6767
end
6868
end
6969
end

0 commit comments

Comments
 (0)