@@ -5,7 +5,9 @@ package tests
55
66import (
77 "context"
8+ "strconv"
89 "testing"
10+ "time"
911
1012 "github.com/communitybridge/easycla/cla-backend-go/project/common"
1113
@@ -14,6 +16,84 @@ import (
1416 "github.com/stretchr/testify/assert"
1517)
1618
19+ func createDocument (major , minor int , date time.Time , name string ) models.ClaGroupDocument {
20+ return models.ClaGroupDocument {
21+ DocumentMajorVersion : strconv .Itoa (major ),
22+ DocumentMinorVersion : strconv .Itoa (minor ),
23+ DocumentCreationDate : utils .TimeToString (date ),
24+ DocumentName : name ,
25+ }
26+ }
27+
28+ func mustParseTime (t * testing.T , value string ) time.Time {
29+ dt , err := time .Parse (time .RFC3339 , value )
30+ assert .Nil (t , err )
31+ return dt
32+ }
33+
34+ func TestGetCurrentDocument (t * testing.T ) {
35+ // Dates
36+ dt_250217 := mustParseTime (t , "2025-02-17T15:00:13Z" )
37+ dt_240217 := mustParseTime (t , "2024-02-17T15:00:13Z" )
38+ dt_240218 := mustParseTime (t , "2024-02-18T15:00:13Z" )
39+ dt_230217 := mustParseTime (t , "2023-02-17T15:00:13Z" )
40+ dt_230218 := mustParseTime (t , "2023-02-18T15:00:13Z" )
41+ dt_220218 := mustParseTime (t , "2022-02-18T15:00:13Z" )
42+
43+ // Create documents
44+ document_15 := createDocument (1 , 5 , dt_250217 , "document_15" )
45+ document_29 := createDocument (2 , 9 , dt_240217 , "document_29" )
46+ document_29_newer := createDocument (2 , 9 , dt_240218 , "document_29_newer" )
47+ document_210 := createDocument (2 , 10 , dt_230217 , "document_210" )
48+ document_210_newer := createDocument (2 , 10 , dt_230218 , "document_210_newer" )
49+ document_30 := createDocument (3 , 0 , dt_220218 , "document_30" )
50+ document_31 := createDocument (3 , 1 , dt_220218 , "document_31" )
51+ document_310 := createDocument (3 , 10 , dt_220218 , "document_310" )
52+
53+ // Test cases
54+ tests := []struct {
55+ docs []models.ClaGroupDocument
56+ expectedName string
57+ expectedMajor int
58+ expectedMinor int
59+ }{
60+ {[]models.ClaGroupDocument {document_29 }, "document_29" , 2 , 9 },
61+ {[]models.ClaGroupDocument {document_29_newer , document_29 }, "document_29_newer" , 2 , 9 },
62+ {[]models.ClaGroupDocument {document_29 , document_29_newer }, "document_29_newer" , 2 , 9 },
63+ {[]models.ClaGroupDocument {document_29 , document_210 }, "document_210" , 2 , 10 },
64+ {[]models.ClaGroupDocument {document_29_newer , document_210 }, "document_210" , 2 , 10 },
65+ {[]models.ClaGroupDocument {document_29 , document_210_newer }, "document_210_newer" , 2 , 10 },
66+ {[]models.ClaGroupDocument {document_29_newer , document_210_newer }, "document_210_newer" , 2 , 10 },
67+ {[]models.ClaGroupDocument {document_29 , document_29_newer , document_210 }, "document_210" , 2 , 10 },
68+ {[]models.ClaGroupDocument {document_29 , document_210 , document_210_newer }, "document_210_newer" , 2 , 10 },
69+ {[]models.ClaGroupDocument {document_29 , document_29_newer , document_210 , document_210_newer }, "document_210_newer" , 2 , 10 },
70+ {[]models.ClaGroupDocument {document_210 , document_210_newer , document_29_newer , document_29 }, "document_210_newer" , 2 , 10 },
71+ {[]models.ClaGroupDocument {document_210 , document_15 , document_210_newer , document_29_newer , document_29 }, "document_210_newer" , 2 , 10 },
72+ {[]models.ClaGroupDocument {document_210 , document_210_newer , document_29_newer , document_30 , document_29 }, "document_30" , 3 , 0 },
73+ {[]models.ClaGroupDocument {document_210 , document_15 , document_210_newer , document_29_newer , document_30 , document_29 }, "document_30" , 3 , 0 },
74+ {[]models.ClaGroupDocument {document_15 , document_30 , document_29 }, "document_30" , 3 , 0 },
75+ {[]models.ClaGroupDocument {document_31 , document_310 , document_30 }, "document_310" , 3 , 10 },
76+ }
77+
78+ for _ , tt := range tests {
79+ doc , err := common .GetCurrentDocument (context .Background (), tt .docs )
80+ assert .Nil (t , err )
81+
82+ // Check the document name
83+ assert .Equal (t , tt .expectedName , doc .DocumentName )
84+
85+ // Check the major version
86+ major , err := strconv .Atoi (doc .DocumentMajorVersion )
87+ assert .Nil (t , err )
88+ assert .Equal (t , tt .expectedMajor , major )
89+
90+ // Check the minor version
91+ minor , err := strconv .Atoi (doc .DocumentMinorVersion )
92+ assert .Nil (t , err )
93+ assert .Equal (t , tt .expectedMinor , minor )
94+ }
95+ }
96+
1797func TestGetCurrentDocumentVersion (t * testing.T ) {
1898 currentTime , _ := utils .CurrentTime ()
1999 yesterday := currentTime .AddDate (0 , 0 , - 1 )
0 commit comments