aboutsummaryrefslogtreecommitdiff
path: root/jsonloader/parser2v2/parse_annotations_test.go
blob: 6ef5693c1729c7634e9f0c72c6cddf4d835eed25 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later

package parser2v2

import (
	"encoding/json"
	"reflect"
	"testing"

	"github.com/spdx/tools-golang/spdx"
)

func TestJSONSpdxDocument_parseJsonAnnotations2_2(t *testing.T) {

	data := []byte(`{
		"annotations" : [ {
		"annotationDate" : "2010-02-10T00:00:00Z",
		"annotationType" : "REVIEW",
		"annotator" : "Person: Joe Reviewer",
		"comment" : "This is just an example.  Some of the non-standard licenses look like they are actually BSD 3 clause licenses"
	  }, {
		"annotationDate" : "2011-03-13T00:00:00Z",
		"annotationType" : "REVIEW",
		"annotator" : "Person: Suzanne Reviewer",
		"comment" : "Another example reviewer."
	  }, {
		"annotationDate" : "2010-01-29T18:30:22Z",
		"annotationType" : "OTHER",
		"annotator" : "Person: Jane Doe ()",
		"comment" : "Document level annotation"
	  } ]
	}
  `)

	annotationstest1 := []*spdx.Annotation2_2{
		{
			AnnotationSPDXIdentifier: spdx.DocElementID{DocumentRefID: "", ElementRefID: "DOCUMENT"},
			AnnotationDate:           "2010-02-10T00:00:00Z",
			AnnotationType:           "REVIEW",
			AnnotatorType:            "Person",
			Annotator:                "Joe Reviewer",
			AnnotationComment:        "This is just an example.  Some of the non-standard licenses look like they are actually BSD 3 clause licenses",
		},
		{
			AnnotationSPDXIdentifier: spdx.DocElementID{DocumentRefID: "", ElementRefID: "DOCUMENT"},
			AnnotationDate:           "2011-03-13T00:00:00Z",
			AnnotationType:           "REVIEW",
			AnnotatorType:            "Person",
			Annotator:                "Suzanne Reviewer",
			AnnotationComment:        "Another example reviewer.",
		},
		{
			AnnotationSPDXIdentifier: spdx.DocElementID{DocumentRefID: "", ElementRefID: "DOCUMENT"},
			AnnotationDate:           "2010-01-29T18:30:22Z",
			AnnotationType:           "OTHER",
			AnnotatorType:            "Person",
			Annotator:                "Jane Doe ()",
			AnnotationComment:        "Document level annotation",
		},
	}

	var specs JSONSpdxDocument
	json.Unmarshal(data, &specs)

	type args struct {
		key           string
		value         interface{}
		doc           *spdxDocument2_2
		SPDXElementID spdx.DocElementID
	}
	tests := []struct {
		name    string
		spec    JSONSpdxDocument
		args    args
		want    []*spdx.Annotation2_2
		wantErr bool
	}{
		// TODO: Add test cases.
		{
			name: "successTest",
			spec: specs,
			args: args{
				key:           "annotations",
				value:         specs["annotations"],
				doc:           &spdxDocument2_2{},
				SPDXElementID: spdx.DocElementID{DocumentRefID: "", ElementRefID: "DOCUMENT"},
			},
			want:    annotationstest1,
			wantErr: false,
		},
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if err := tt.spec.parseJsonAnnotations2_2(tt.args.key, tt.args.value, tt.args.doc, tt.args.SPDXElementID); (err != nil) != tt.wantErr {
				t.Errorf("JSONSpdxDocument.parseJsonAnnotations2_2() error = %v, wantErr %v", err, tt.wantErr)
			}

			for i := 0; i < len(tt.want); i++ {
				if !reflect.DeepEqual(tt.args.doc.Annotations[i], tt.want[i]) {
					t.Errorf("Load2_2() = %v, want %v", tt.args.doc.Annotations[i], tt.want[i])
				}
			}

		})
	}
}