Skip to content

Commit a452f6d

Browse files
committed
add&fix test
1 parent 57d273c commit a452f6d

File tree

14 files changed

+154
-28
lines changed

14 files changed

+154
-28
lines changed

app/models/gobierto_data/dataset.rb

-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ class Dataset < ApplicationRecord
1818

1919
scope :sorted, -> { order(data_updated_at: :desc) }
2020
scope :visibles, -> { where(visibility_level: "active") }
21-
scope :by_site, ->(site_id) { where(site_id: site_id) }
2221

2322
translates :name
2423

app/presenters/gobierto_data/dataset_presenter.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ def url_helpers
5858
end
5959

6060
def site_locale
61-
site.configuration_data["default_locale"]
61+
site.configuration.default_locale
6262
end
6363

6464
def description_custom_field_record(dataset)

app/views/gobierto_data/api/v1/datasets/catalog.xml.erb

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
xmlns:foaf="http://xmlns.com/foaf/0.1/"
77
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
88
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
9-
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><% cache @catalog do %>
9+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
1010
<dcat:Catalog rdf:about="https://data.some.org/catalog">
1111
<dct:identifier><%= @catalog[:identifier_uri] %></dct:identifier>
1212
<dct:title><%= @catalog[:title] %></dct:title>
@@ -34,7 +34,7 @@
3434
<dcat:distribution>
3535
<dcat:Distribution>
3636
<dct:identifier><%= @identifier_uri %></dct:identifier>
37-
<dct:title><%= dataset[:title] %> in CSV format</dct:title>
37+
<dct:title><%= dataset[:title] %> <%= t 'gobierto_data.catalog.csv_format' %></dct:title>
3838
<dct:description><%= dataset[:description] %></dct:description>
3939
<dcat:downloadURL rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI"><%= distribution[:download_url] %></dcat:downloadURL>
4040
<dcat:mediaType><%= distribution[:format] %></dcat:mediaType>
@@ -43,5 +43,5 @@
4343
<% end %>
4444
</dcat:Dataset>
4545
</dcat:dataset><% end %>
46-
</dcat:Catalog><% end %>
46+
</dcat:Catalog>
4747
</rdf:RDF>

config/locales/gobierto_data/presenters/ca.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,5 @@ ca:
44
gobierto_data:
55
catalog:
66
description: Catàleg public de dades dels conjunts de dades publicades per%
7-
{site}, a través de la URL% {publisher_url}
7+
{site}, a través de la URL %{publisher_url}
88
title: Catàleg DCAT de conjunts de dades de %{site} en format rdf/xml dcat

config/locales/gobierto_data/views/ca.yml

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
---
22
ca:
33
gobierto_data:
4+
catalog:
5+
csv_format: en format CSV
46
data_type:
57
boolean: boolean
68
date: data

config/locales/gobierto_data/views/en.yml

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
---
22
en:
3+
catalog:
4+
csv_format: at CSV format
35
gobierto_data:
46
data_type:
57
boolean: boolean

config/locales/gobierto_data/views/es.yml

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
---
22
es:
3+
catalog:
4+
csv_format: en formato CSV
35
gobierto_data:
46
data_type:
57
boolean: boolean

config/routes.rb

+1-2
Original file line numberDiff line numberDiff line change
@@ -641,8 +641,7 @@
641641
resources :favorites, only: [:index]
642642
collection do
643643
get :meta
644-
# get :catalog
645-
get "catalog" => "datasets#catalog"
644+
get :catalog
646645
end
647646
member do
648647
get "meta" => "datasets#dataset_meta"

test/controllers/gobierto_data/api/v1/datasets_controller_test.rb

+33-5
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,10 @@ def datasets_md_with_translations
6767
@datasets_md_with_translations ||= gobierto_common_custom_fields(:madrid_data_datasets_custom_field_md_with_translations)
6868
end
6969

70+
def datasets_descriptions
71+
@datasets_descriptions ||= gobierto_common_custom_fields(:madrid_data_datasets_custom_field_description)
72+
end
73+
7074
def other_site_dataset
7175
@other_site_dataset ||= gobierto_data_datasets(:santander_dataset)
7276
end
@@ -93,7 +97,8 @@ def array_data(dataset)
9397
dataset.rails_model&.columns_hash&.transform_values(&:type)&.to_s,
9498
GobiertoCommon::CustomFieldRecord.find_by(item: dataset, custom_field: datasets_category)&.value_string,
9599
GobiertoCommon::CustomFieldRecord.find_by(item: dataset, custom_field: datasets_md_without_translations)&.value_string,
96-
GobiertoCommon::CustomFieldRecord.find_by(item: dataset, custom_field: datasets_md_with_translations)&.value_string
100+
GobiertoCommon::CustomFieldRecord.find_by(item: dataset, custom_field: datasets_md_with_translations)&.value_string || "",
101+
GobiertoCommon::CustomFieldRecord.find_by(item: dataset, custom_field: datasets_descriptions)&.value_string
97102
]
98103
end
99104

@@ -168,8 +173,9 @@ def test_index_as_csv
168173
parsed_csv = CSV.parse(response_data).map { |row| row.map(&:to_s) }
169174

170175
assert_equal active_datasets_count + 1, parsed_csv.count
171-
assert_equal %w(id name slug table_name data_updated_at columns category md-without-translations md-with-translations), parsed_csv.first
172-
assert_includes parsed_csv, array_data(dataset)
176+
assert_equal %w(id name slug table_name data_updated_at columns category md-without-translations md-with-translations description-datasets), parsed_csv.first
177+
178+
assert_includes parsed_csv.drop(1).take(1), array_data(dataset)
173179
refute_includes parsed_csv, array_data(other_site_dataset)
174180
end
175181
end
@@ -202,7 +208,7 @@ def test_index_xlsx_format
202208
assert_equal 1, parsed_xlsx.worksheets.count
203209
sheet = parsed_xlsx.worksheets.first
204210
assert_nil sheet[active_datasets_count + 1]
205-
assert_equal %w(id name slug table_name data_updated_at columns category md-without-translations md-with-translations), sheet[0].cells.map(&:value)
211+
assert_equal %w(id name slug table_name data_updated_at columns category md-without-translations md-with-translations description-datasets), sheet[0].cells.map(&:value)
206212
values = (1..active_datasets_count).map do |row_number|
207213
sheet[row_number].cells.map { |cell| cell.value.to_s }
208214
end
@@ -315,12 +321,34 @@ def test_index_when_md_custom_field_changes_translations_availability
315321
parsed_csv = CSV.parse(response_data).map { |row| row.map(&:to_s) }
316322

317323
assert_equal active_datasets_count + 1, parsed_csv.count
318-
assert_equal %w(id name slug table_name data_updated_at columns category md-without-translations md-with-translations), parsed_csv.first
324+
assert_equal %w(id name slug table_name data_updated_at columns category md-without-translations md-with-translations description-datasets), parsed_csv.first
319325
assert_includes parsed_csv, array_data(dataset)
320326
refute_includes parsed_csv, array_data(other_site_dataset)
321327
end
322328
end
323329

330+
def test_catalog
331+
with(site: site) do
332+
get catalog_gobierto_data_api_v1_datasets_path(format: :xml), as: :xml
333+
assert_response :success
334+
335+
response_xml = response.parsed_body
336+
expected = File.read("test/fixtures/gobierto_data/catalog.xml")
337+
assert_equal response_xml, expected
338+
end
339+
end
340+
341+
def test_catalog_dont_show_draft_dataset
342+
with(site: site) do
343+
get catalog_gobierto_data_api_v1_datasets_path(format: :xml), as: :xml
344+
assert_response :success
345+
response_xml = response.parsed_body
346+
347+
refute_includes response_xml, 'Interest Groups'
348+
refute_includes response_xml, 'Grupos de Interés'
349+
end
350+
end
351+
324352
end
325353
end
326354
end

test/fixtures/gobierto_common/custom_fields.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ madrid_data_datasets_custom_field_description:
350350
position: 4
351351
name_translations: <%= {"en": "Description", "es": "Descripción"}.to_json %>
352352
field_type: <%= GobiertoCommon::CustomField.field_types[:localized_paragraph] %>
353-
uid: description
353+
uid: description-datasets
354354

355355
madrid_custom_field_human_resources_table_plugin:
356356
site: madrid
+95
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<rdf:RDF
3+
xmlns:time="http://www.w3.org/2006/time#"
4+
xmlns:dct="http://purl.org/dc/terms/"
5+
xmlns:dcat="http://www.w3.org/ns/dcat#"
6+
xmlns:foaf="http://xmlns.com/foaf/0.1/"
7+
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
8+
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
9+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
10+
<dcat:Catalog rdf:about="https://data.some.org/catalog">
11+
<dct:identifier>http://madrid.gobierto.test/datos</dct:identifier>
12+
<dct:title>Catalog for datasets of Ayuntamiento de Madrid into format rdf/xml dcat</dct:title>
13+
<dct:description>Public catalog with datasets published by Ayuntamiento de Madrid, through URL http://madrid.gobierto.test/datos</dct:description>
14+
<dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2019-01-01 08:00:00 +0100</dct:issued>
15+
<dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2019-01-01 08:00:00 +0100</dct:modified>
16+
<dct:language>en</dct:language>
17+
<foaf:homepage rdf:resource="http://madrid.gobierto.test/datos"/>
18+
<dcat:dataset>
19+
<dcat:Dataset rdf:about="http://madrid.gobierto.test/datos/users-dataset">
20+
<dct:identifier>http://madrid.gobierto.test/datos/users-dataset</dct:identifier>
21+
<dct:title>Users</dct:title>
22+
<dct:description></dct:description>
23+
<dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2020-01-02 08:00:00 +0100</dct:issued>
24+
<dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2020-01-02 08:00:00 +0100</dct:modified>
25+
<dct:language>en</dct:language>
26+
<dct:license rdf:resource="Users"/>
27+
<dct:publisher>
28+
<foaf:Organization>
29+
<foaf:name>Ayuntamiento de Madrid</foaf:name>
30+
<foaf:mbox>[email protected]</foaf:mbox>
31+
</foaf:Organization>
32+
</dct:publisher>
33+
<dcat:distribution>
34+
<dcat:Distribution>
35+
<dct:identifier></dct:identifier>
36+
<dct:title>Users en format CSV</dct:title>
37+
<dct:description></dct:description>
38+
<dcat:downloadURL rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">http://madrid.gobierto.test/api/v1/data/datasets/users-dataset/download.csv</dcat:downloadURL>
39+
<dcat:mediaType>application/csv</dcat:mediaType>
40+
</dcat:Distribution>
41+
</dcat:distribution>
42+
</dcat:Dataset>
43+
</dcat:dataset><dcat:dataset>
44+
<dcat:Dataset rdf:about="http://madrid.gobierto.test/datos/events-dataset">
45+
<dct:identifier>http://madrid.gobierto.test/datos/events-dataset</dct:identifier>
46+
<dct:title>Events</dct:title>
47+
<dct:description></dct:description>
48+
<dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2020-01-03 08:00:00 +0100</dct:issued>
49+
<dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2020-01-03 08:00:00 +0100</dct:modified>
50+
<dct:language>en</dct:language>
51+
<dct:license rdf:resource="Events"/>
52+
<dct:publisher>
53+
<foaf:Organization>
54+
<foaf:name>Ayuntamiento de Madrid</foaf:name>
55+
<foaf:mbox>[email protected]</foaf:mbox>
56+
</foaf:Organization>
57+
</dct:publisher>
58+
<dcat:distribution>
59+
<dcat:Distribution>
60+
<dct:identifier></dct:identifier>
61+
<dct:title>Events en format CSV</dct:title>
62+
<dct:description></dct:description>
63+
<dcat:downloadURL rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">http://madrid.gobierto.test/api/v1/data/datasets/events-dataset/download.csv</dcat:downloadURL>
64+
<dcat:mediaType>application/csv</dcat:mediaType>
65+
</dcat:Distribution>
66+
</dcat:distribution>
67+
</dcat:Dataset>
68+
</dcat:dataset><dcat:dataset>
69+
<dcat:Dataset rdf:about="http://madrid.gobierto.test/datos/no-size">
70+
<dct:identifier>http://madrid.gobierto.test/datos/no-size</dct:identifier>
71+
<dct:title>No size</dct:title>
72+
<dct:description></dct:description>
73+
<dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2020-01-06 08:00:00 +0100</dct:issued>
74+
<dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2020-01-06 08:00:00 +0100</dct:modified>
75+
<dct:language>en</dct:language>
76+
<dct:license rdf:resource="No size"/>
77+
<dct:publisher>
78+
<foaf:Organization>
79+
<foaf:name>Ayuntamiento de Madrid</foaf:name>
80+
<foaf:mbox>[email protected]</foaf:mbox>
81+
</foaf:Organization>
82+
</dct:publisher>
83+
<dcat:distribution>
84+
<dcat:Distribution>
85+
<dct:identifier></dct:identifier>
86+
<dct:title>No size en format CSV</dct:title>
87+
<dct:description></dct:description>
88+
<dcat:downloadURL rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">http://madrid.gobierto.test/api/v1/data/datasets/no-size/download.csv</dcat:downloadURL>
89+
<dcat:mediaType>application/csv</dcat:mediaType>
90+
</dcat:Distribution>
91+
</dcat:distribution>
92+
</dcat:Dataset>
93+
</dcat:dataset>
94+
</dcat:Catalog>
95+
</rdf:RDF>

test/fixtures/gobierto_data/datasets.yml

+10-11
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ users_dataset:
33
name_translations: <%= { en: "Users", es: "Usuarios" }.to_json %>
44
table_name: users
55
slug: users-dataset
6-
created_at: <%= Time.current %>
7-
updated_at: <%= Time.current %>
6+
created_at: <%= Time.zone.parse('2020-01-02 8:00') %>
7+
updated_at: <%= Time.zone.parse('2020-01-02 8:00') %>
88
visibility_level: <%= GobiertoData::Dataset.visibility_levels["active"] %>
99
size: <%= { csv: 15.megabytes, json: 25.megabytes }.to_json %>
1010

@@ -13,8 +13,8 @@ events_dataset:
1313
name_translations: <%= { en: "Events", es: "Eventos" }.to_json %>
1414
table_name: gc_events
1515
slug: events-dataset
16-
created_at: <%= Time.current %>
17-
updated_at: <%= Time.current %>
16+
created_at: <%= Time.zone.parse('2020-01-03 8:00') %>
17+
updated_at: <%= Time.zone.parse('2020-01-03 8:00') %>
1818
visibility_level: <%= GobiertoData::Dataset.visibility_levels["active"] %>
1919
size: <%= { csv: 3.megabytes, json: 4.megabytes }.to_json %>
2020

@@ -23,25 +23,24 @@ draft_dataset:
2323
name_translations: <%= { en: "Interest Groups", es: "Grupos de Interés" }.to_json %>
2424
table_name: gp_interest_groups
2525
slug: interest-groups-dataset
26-
created_at: <%= Time.current %>
27-
updated_at: <%= Time.current %>
26+
created_at: <%= Time.zone.parse('2020-01-04 8:00') %>
27+
updated_at: <%= Time.zone.parse('2020-01-04 8:00') %>
2828
visibility_level: <%= GobiertoData::Dataset.visibility_levels["draft"] %>
2929

3030
santander_dataset:
3131
site: santander
3232
name_translations: <%= { en: "Santander dataset", es: "Dataset de Santander" }.to_json %>
3333
table_name: activities
3434
slug: santander-dataset
35-
created_at: <%= Time.current %>
36-
updated_at: <%= Time.current %>
35+
created_at: <%= Time.zone.parse('2020-01-05 8:00') %>
36+
updated_at: <%= Time.zone.parse('2020-01-05 8:00') %>
3737
visibility_level: <%= GobiertoData::Dataset.visibility_levels["active"] %>
3838

3939
no_size_dataset:
4040
site: madrid
4141
name_translations: <%= { en: "No size", es: "No se el size" }.to_json %>
4242
table_name: sites
4343
slug: no-size
44-
created_at: <%= Time.current %>
45-
updated_at: <%= Time.current %>
44+
created_at: <%= Time.zone.parse('2020-01-06 8:00') %>
45+
updated_at: <%= Time.zone.parse('2020-01-06 8:00') %>
4646
visibility_level: <%= GobiertoData::Dataset.visibility_levels["active"] %>
47-

test/fixtures/sites.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ madrid:
3434
organization_address: Fake St., 123
3535
organization_document_number: 0123456789A
3636
visibility_level: <%= Site.visibility_levels["active"] %>
37-
created_at: <%= 1.year.ago %>
38-
updated_at: <%= 1.week.ago %>
37+
created_at: <%= Time.zone.parse('2019-01-01 8:00') %>
38+
updated_at: <%= Time.zone.parse('2019-01-01 8:00') %>
3939

4040
santander:
4141
title_translations: <%= { 'en' => 'Transparencia Ciudadana', 'es' => 'Transparencia Ciudadana' }.to_json %>

test/presenters/gobierto_data/dataset_presenter_test.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def setup
1515

1616
def test_structure_catalog_building_do_not_show_draft_datasets
1717
catalog = @subject.build_catalog
18-
datasets_published = GobiertoData::Dataset.by_site(@site.id).visibles.size
18+
datasets_published = @site.datasets.visibles.size
1919
assert_equal datasets_published, catalog[:datasets].size
2020
end
2121

0 commit comments

Comments
 (0)