@@ -67,18 +67,34 @@ func TestUnion(t *testing.T) {
6767 members = append (members , NewUnionMember (f ))
6868 }
6969
70- // Create mock extractors that return predefined values instead of
71- // actually extracting from the object.
72- extractors := make ([]ExtractorFn [* testMember , bool ], len (tc .fieldValues ))
73- for i , val := range tc .fieldValues {
74- extractors [i ] = func (_ * testMember ) bool { return val }
75- }
70+ t .Run ("pointer" , func (t * testing.T ) {
71+ // Create mock extractors that return predefined values instead of
72+ // actually extracting from the object.
73+ extractors := make ([]ExtractorFn [* testMember , bool ], len (tc .fieldValues ))
74+ for i , val := range tc .fieldValues {
75+ extractors [i ] = func (_ * testMember ) bool { return val }
76+ }
7677
77- got := Union (context .Background (), operation.Operation {}, nil , & testMember {}, nil ,
78- NewUnionMembership (members ... ), extractors ... )
79- if ! reflect .DeepEqual (got , tc .expected ) {
80- t .Errorf ("got %v want %v" , got , tc .expected )
81- }
78+ got := Union (context .Background (), operation.Operation {}, nil , & testMember {}, nil ,
79+ NewUnionMembership (members ... ), extractors ... )
80+ if ! reflect .DeepEqual (got , tc .expected ) {
81+ t .Errorf ("got %v want %v" , got , tc .expected )
82+ }
83+ })
84+ t .Run ("value" , func (t * testing.T ) {
85+ // Create mock extractors that return predefined values instead of
86+ // actually extracting from the object.
87+ extractors := make ([]ExtractorFn [testMember , bool ], len (tc .fieldValues ))
88+ for i , val := range tc .fieldValues {
89+ extractors [i ] = func (_ testMember ) bool { return val }
90+ }
91+
92+ got := Union (context .Background (), operation.Operation {}, nil , testMember {}, testMember {},
93+ NewUnionMembership (members ... ), extractors ... )
94+ if ! reflect .DeepEqual (got , tc .expected ) {
95+ t .Errorf ("got %v want %v" , got , tc .expected )
96+ }
97+ })
8298 })
8399 }
84100}
@@ -131,26 +147,44 @@ func TestDiscriminatedUnion(t *testing.T) {
131147 }
132148
133149 for _ , tc := range testCases {
150+ members := []UnionMember {}
151+ for _ , f := range tc .fields {
152+ members = append (members , NewDiscriminatedUnionMember (f [0 ], f [1 ]))
153+ }
154+
134155 t .Run (tc .name , func (t * testing.T ) {
135- members := []UnionMember {}
136- for _ , f := range tc .fields {
137- members = append (members , NewDiscriminatedUnionMember (f [0 ], f [1 ]))
138- }
156+ t .Run ("pointer" , func (t * testing.T ) {
157+ discriminatorExtractor := func (_ * testMember ) string { return tc .discriminatorValue }
139158
140- discriminatorExtractor := func (_ * testMember ) string { return tc .discriminatorValue }
159+ // Create mock extractors that return predefined values instead of
160+ // actually extracting from the object.
161+ extractors := make ([]ExtractorFn [* testMember , bool ], len (tc .fieldValues ))
162+ for i , val := range tc .fieldValues {
163+ extractors [i ] = func (_ * testMember ) bool { return val }
164+ }
141165
142- // Create mock extractors that return predefined values instead of
143- // actually extracting from the object.
144- extractors := make ([]ExtractorFn [* testMember , bool ], len (tc .fieldValues ))
145- for i , val := range tc .fieldValues {
146- extractors [i ] = func (_ * testMember ) bool { return val }
147- }
166+ got := DiscriminatedUnion (context .Background (), operation.Operation {}, nil , & testMember {}, nil ,
167+ NewDiscriminatedUnionMembership (tc .discriminatorField , members ... ), discriminatorExtractor , extractors ... )
168+ if ! reflect .DeepEqual (got , tc .expected ) {
169+ t .Errorf ("got %v want %v" , got .ToAggregate (), tc .expected .ToAggregate ())
170+ }
171+ })
172+ t .Run ("value" , func (t * testing.T ) {
173+ discriminatorExtractor := func (_ testMember ) string { return tc .discriminatorValue }
148174
149- got := DiscriminatedUnion (context .Background (), operation.Operation {}, nil , & testMember {}, nil ,
150- NewDiscriminatedUnionMembership (tc .discriminatorField , members ... ), discriminatorExtractor , extractors ... )
151- if ! reflect .DeepEqual (got , tc .expected ) {
152- t .Errorf ("got %v want %v" , got .ToAggregate (), tc .expected .ToAggregate ())
153- }
175+ // Create mock extractors that return predefined values instead of
176+ // actually extracting from the object.
177+ extractors := make ([]ExtractorFn [testMember , bool ], len (tc .fieldValues ))
178+ for i , val := range tc .fieldValues {
179+ extractors [i ] = func (_ testMember ) bool { return val }
180+ }
181+
182+ got := DiscriminatedUnion (context .Background (), operation.Operation {}, nil , testMember {}, testMember {},
183+ NewDiscriminatedUnionMembership (tc .discriminatorField , members ... ), discriminatorExtractor , extractors ... )
184+ if ! reflect .DeepEqual (got , tc .expected ) {
185+ t .Errorf ("got %v want %v" , got .ToAggregate (), tc .expected .ToAggregate ())
186+ }
187+ })
154188 })
155189 }
156190}
0 commit comments