Skip to content

Commit 4de3a5c

Browse files
committed
PDOK-17552 Operator uitwerken voor ATOM v3. Mapping
1 parent 8860a12 commit 4de3a5c

File tree

4 files changed

+68
-12
lines changed

4 files changed

+68
-12
lines changed

api/v3/atom_types.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -77,14 +77,15 @@ type Author struct {
7777

7878
// DatasetFeed represents individual dataset feeds within the Atom service
7979
type DatasetFeed struct {
80-
TechnicalName string `json:"technicalName"`
81-
Title string `json:"title"`
82-
Subtitle string `json:"subtitle,omitempty"`
83-
Links []Link `json:"links,omitempty"` // Todo kan weg?
84-
DatasetMetadataLinks MetadataLink `json:"datasetMetadataLinks,omitempty"`
85-
SpatialDatasetIdentifierCode string `json:"spatial_dataset_identifier_code,omitempty"`
86-
SpatialDatasetIdentifierNamespace string `json:"spatial_dataset_identifier_namespace,omitempty"`
87-
Entries []Entry `json:"entries,omitempty"`
80+
TechnicalName string `json:"technicalName"`
81+
Title string `json:"title"`
82+
Subtitle string `json:"subtitle,omitempty"`
83+
Links []Link `json:"links,omitempty"` // Todo kan weg?
84+
DatasetMetadataLinks MetadataLink `json:"datasetMetadataLinks,omitempty"`
85+
//Author Author `json:"author,omitempty"`
86+
SpatialDatasetIdentifierCode string `json:"spatial_dataset_identifier_code,omitempty"`
87+
SpatialDatasetIdentifierNamespace string `json:"spatial_dataset_identifier_namespace,omitempty"`
88+
Entries []Entry `json:"entries,omitempty"`
8889
}
8990

9091
// MetadataLink represents a link in the service or dataset feed

api/v3/zz_generated.deepcopy.go

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/controller/atom_generator/mapping.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,13 @@ func MapAtomV3ToAtomGeneratorConfig(atom pdoknlv3.Atom, ownerInfo v1.OwnerInfo)
2626
return atom_feed.Feeds{}, err
2727
}
2828
relatedLink, err = getHTMLRelatedLink(atom, language, ownerInfo)
29-
latestUpdated := getLatestUpdate(atom.Spec.DatasetFeeds)
29+
if err != nil {
30+
return atom_feed.Feeds{}, err
31+
}
32+
latestUpdated, err := getLatestUpdate(atom.Spec.DatasetFeeds)
33+
if err != nil {
34+
return atom_feed.Feeds{}, err
35+
}
3036

3137
atomGeneratorConfig = atom_feed.Feeds{
3238
Feeds: []atom_feed.Feed{
@@ -57,7 +63,10 @@ func MapAtomV3ToAtomGeneratorConfig(atom pdoknlv3.Atom, ownerInfo v1.OwnerInfo)
5763
return atomGeneratorConfig, err
5864
}
5965

60-
func getLatestUpdate(feeds []pdoknlv3.DatasetFeed) string {
66+
func getLatestUpdate(feeds []pdoknlv3.DatasetFeed) (string, error) {
67+
if len(feeds) == 0 {
68+
return "", fmt.Errorf("OwnerInfo heeft geen html template")
69+
}
6170
updateTime := feeds[0].Entries[0].Updated
6271
for _, datasetFeed := range feeds {
6372
for _, entry := range datasetFeed.Entries {
@@ -66,7 +75,7 @@ func getLatestUpdate(feeds []pdoknlv3.DatasetFeed) string {
6675
}
6776
}
6877
}
69-
return updateTime.Format(time.RFC3339)
78+
return updateTime.Format(time.RFC3339), nil
7079
}
7180

7281
func getEntriesArray(atom pdoknlv3.Atom, ownerInfo v1.OwnerInfo) []atom_feed.Entry {
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package atom_generator
2+
3+
import (
4+
"github.com/pdok/atom-generator/feeds"
5+
v3 "github.com/pdok/atom-operator/api/v3"
6+
v1 "github.com/pdok/smooth-operator/api/v1"
7+
"reflect"
8+
"testing"
9+
)
10+
11+
func TestMapAtomV3ToAtomGeneratorConfig(t *testing.T) {
12+
type args struct {
13+
atom v3.Atom
14+
ownerInfo v1.OwnerInfo
15+
}
16+
tests := []struct {
17+
name string
18+
args args
19+
wantAtomGeneratorConfig feeds.Feeds
20+
wantErr bool
21+
}{
22+
// TODO: Add test cases.
23+
{
24+
name: "error_empty_scenario_01",
25+
args: args{
26+
atom: v3.Atom{},
27+
ownerInfo: v1.OwnerInfo{},
28+
},
29+
wantAtomGeneratorConfig: feeds.Feeds{},
30+
wantErr: true,
31+
},
32+
}
33+
for _, tt := range tests {
34+
t.Run(tt.name, func(t *testing.T) {
35+
gotAtomGeneratorConfig, err := MapAtomV3ToAtomGeneratorConfig(tt.args.atom, tt.args.ownerInfo)
36+
if (err != nil) != tt.wantErr {
37+
t.Errorf("MapAtomV3ToAtomGeneratorConfig() error = %v, wantErr %v", err, tt.wantErr)
38+
return
39+
}
40+
if !reflect.DeepEqual(gotAtomGeneratorConfig, tt.wantAtomGeneratorConfig) {
41+
t.Errorf("MapAtomV3ToAtomGeneratorConfig() gotAtomGeneratorConfig = %v, want %v", gotAtomGeneratorConfig, tt.wantAtomGeneratorConfig)
42+
}
43+
})
44+
}
45+
}

0 commit comments

Comments
 (0)