@@ -17,6 +17,8 @@ package config
1717import (
1818 "strings"
1919 "testing"
20+
21+ "github.com/google/go-cmp/cmp"
2022)
2123
2224func TestGlobalConfig_Validate (t * testing.T ) {
@@ -100,3 +102,67 @@ func TestGlobalConfig_Validate(t *testing.T) {
100102 })
101103 }
102104}
105+
106+ func TestLibraryConfigFor (t * testing.T ) {
107+ cases := []struct {
108+ name string
109+ config * LibrarianConfig
110+ LibraryID string
111+ wantLibrary * LibraryConfig
112+ wantErr bool
113+ wantErrSubstr string
114+ }{
115+ {
116+ name : "library found" ,
117+ config : & LibrarianConfig {
118+ Libraries : []* LibraryConfig {
119+ {LibraryID : "lib1" , NextVersion : "1.0.0" },
120+ {LibraryID : "lib2" , NextVersion : "2.0.0" },
121+ },
122+ },
123+ LibraryID : "lib1" ,
124+ wantLibrary : & LibraryConfig {LibraryID : "lib1" , NextVersion : "1.0.0" },
125+ },
126+ {
127+ name : "library not found" ,
128+ config : & LibrarianConfig {
129+ Libraries : []* LibraryConfig {
130+ {LibraryID : "lib1" , NextVersion : "1.0.0" },
131+ {LibraryID : "lib2" , NextVersion : "2.0.0" },
132+ },
133+ },
134+ LibraryID : "lib3" ,
135+ wantLibrary : nil ,
136+ },
137+ {
138+ name : "empty libraries" ,
139+ config : & LibrarianConfig {
140+ Libraries : []* LibraryConfig {},
141+ },
142+ LibraryID : "lib1" ,
143+ wantLibrary : nil ,
144+ },
145+ {
146+ name : "multiple libraries with target in middle" ,
147+ config : & LibrarianConfig {
148+ Libraries : []* LibraryConfig {
149+ {LibraryID : "lib1" , NextVersion : "1.0.0" },
150+ {LibraryID : "lib2" , NextVersion : "2.0.0" },
151+ {LibraryID : "lib3" , NextVersion : "3.0.0" },
152+ },
153+ },
154+ LibraryID : "lib2" ,
155+ wantLibrary : & LibraryConfig {LibraryID : "lib2" , NextVersion : "2.0.0" },
156+ },
157+ }
158+
159+ for _ , tc := range cases {
160+ t .Run (tc .name , func (t * testing.T ) {
161+ gotLibrary := tc .config .LibraryConfigFor (tc .LibraryID )
162+
163+ if diff := cmp .Diff (tc .wantLibrary , gotLibrary ); diff != "" {
164+ t .Errorf ("LibraryConfigFor() mismatch (-want +got):\n %s" , diff )
165+ }
166+ })
167+ }
168+ }
0 commit comments