1. Project Clover database Wed Nov 12 2025 05:07:35 UTC
  2. Package guru.mikelue.foxglove.junit

File FoxgloveJUnitExtensionTest.java

 

Code metrics

2
27
28
12
279
217
29
1.07
0.96
2.33
1.04

Classes

Class Line # Actions
FoxgloveJUnitExtensionTest 24 4 0% 6 0
1.0100%
FoxgloveJUnitExtensionTest.OnClassLevel 55 4 0% 4 0
1.0100%
FoxgloveJUnitExtensionTest.OnDefaultSources 87 3 0% 4 0
1.0100%
FoxgloveJUnitExtensionTest.OnTypedProviders 122 2 0% 2 0
1.0100%
FoxgloveJUnitExtensionTest.OnTypedProviders.InnerDataGeneratorProvider 123 1 0% 1 0
1.0100%
FoxgloveJUnitExtensionTest.OnTypedProviders.InnerTableFacetProvider 131 1 0% 1 0
1.0100%
FoxgloveJUnitExtensionTest.OnTypedProviders.StaticInnerDataGeneratorProvider 139 4 0% 3 2
0.7575%
FoxgloveJUnitExtensionTest.OnTypedProviders.StaticInnerTableFacetProvider 159 1 0% 1 0
1.0100%
FoxgloveJUnitExtensionTest.OnNamedProviders 194 3 0% 3 0
1.0100%
FoxgloveJUnitExtensionTest.OuterConfig 223 2 0% 2 0
1.0100%
FoxgloveJUnitExtensionTest.OuterConfig.InnerTest 225 1 0% 1 0
1.0100%
FoxgloveJUnitExtensionTest.OuterConfig.OuterTableFacetProvider 242 1 0% 1 0
1.0100%
 

Contributing tests

This file is covered by 8 tests. .

Source view

1    package guru.mikelue.foxglove.junit;
2   
3    import javax.sql.DataSource;
4   
5    import org.springframework.beans.factory.annotation.Autowired;
6   
7    import org.junit.jupiter.api.*;
8    import org.junit.jupiter.api.extension.ExtendWith;
9   
10    import guru.mikelue.foxglove.DataGenerator;
11    import guru.mikelue.foxglove.TableFacet;
12    import guru.mikelue.foxglove.annotation.DataGeneratorSource;
13    import guru.mikelue.foxglove.annotation.GenData;
14    import guru.mikelue.foxglove.annotation.TableFacetsSource;
15    import guru.mikelue.foxglove.functional.DataGeneratorProvider;
16    import guru.mikelue.foxglove.functional.TableFacetProvider;
17    import guru.mikelue.foxglove.jdbc.JdbcDataGenerator;
18    import guru.mikelue.foxglove.jdbc.JdbcTableFacet;
19    import guru.mikelue.foxglove.test.AbstractJdbcTestBase;
20   
21    import static guru.mikelue.foxglove.test.SampleSchema.TABLE_CAR;
22   
23    @ExtendWith(FoxgloveJUnitExtension.class)
 
24    public class FoxgloveJUnitExtensionTest extends AbstractJdbcTestBase {
25    private final static int RANDOM_ROWS = gen()
26    .ints().range(10, 20).get();
27   
 
28  8 toggle public FoxgloveJUnitExtensionTest() {}
29   
 
30  1 toggle @BeforeAll
31    static void globalSetup(
32    @Autowired
33    DataSource ds
34    ) {
35  1 OnTypedProviders.StaticInnerDataGeneratorProvider
36    .injectDataSource(ds);
37    }
38   
 
39  8 toggle @BeforeEach
40    void setup() {}
41   
 
42  8 toggle @AfterEach
43    void tearDown()
44    {
45  8 deleteAll(TABLE_CAR);
46    }
47   
48    /**
49    * Tests the usage of class-level providers of table facets and data generator.
50    *
51    * The preparing of data should be done only once for all test methods in this class.
52    */
53    @Nested
54    @GenData
 
55    class OnClassLevel {
 
56  1 toggle @Test
57    void onClassLevel_1()
58    {
59  1 assertNumberOfRows(TABLE_CAR, "cr_color = 'red'")
60    .isEqualTo(RANDOM_ROWS);
61    }
62   
 
63  1 toggle @Test
64    void onClassLevel_2()
65    {
66  1 assertNumberOfRows(TABLE_CAR, "cr_color = 'red'")
67    .isEqualTo(RANDOM_ROWS);
68    }
69   
 
70  2 toggle @TableFacetsSource
71    JdbcTableFacet defaultTableFacets()
72    {
73  2 return newTableFacet();
74    }
75   
 
76  2 toggle @DataGeneratorSource
77    JdbcDataGenerator defaultDataGenerator()
78    {
79  2 return new JdbcDataGenerator(getDataSource());
80    }
81    }
82   
83    /**
84    * Tests the default providers of table facets and data generator.
85    */
86    @Nested
 
87    class OnDefaultSources {
88    /**
89    * Tests the referencing to default sources.
90    */
 
91  1 toggle @Test
92    @GenData
93    void defaultSources()
94    {
95  1 assertNumberOfRows(TABLE_CAR, "cr_color = 'red'")
96    .isEqualTo(RANDOM_ROWS);
97    }
98   
99    /**
100    * Tests the no needed of data generation.
101    */
 
102  1 toggle @Test
103    void nothing() {}
104   
 
105  1 toggle @TableFacetsSource
106    JdbcTableFacet defaultTableFacets()
107    {
108  1 return newTableFacet();
109    }
110   
 
111  1 toggle @DataGeneratorSource
112    JdbcDataGenerator defaultDataGenerator()
113    {
114  1 return new JdbcDataGenerator(getDataSource());
115    }
116    }
117   
118    /**
119    * Tests the usage of typed providers of table facets and data generator.
120    */
121    @Nested
 
122    class OnTypedProviders {
 
123    class InnerDataGeneratorProvider implements DataGeneratorProvider<TableFacet> {
 
124  1 toggle @Override
125    public DataGenerator<TableFacet> get()
126    {
127  1 return newDataGenerator();
128    }
129    }
130   
 
131    class InnerTableFacetProvider implements TableFacetProvider<TableFacet> {
 
132  1 toggle @Override
133    public TableFacet getOne()
134    {
135  1 return newTableFacet();
136    }
137    }
138   
 
139    static class StaticInnerDataGeneratorProvider implements DataGeneratorProvider<TableFacet> {
140    private static DataGenerator<TableFacet> dataGenerator;
141   
 
142  1 toggle @SuppressWarnings("unchecked")
143    static void injectDataSource(DataSource ds)
144    {
145  1 if (dataGenerator != null) {
146  0 return;
147    }
148   
149  1 dataGenerator = (DataGenerator<TableFacet>)(Object)new JdbcDataGenerator(ds);
150    }
151   
 
152  1 toggle @Override
153    public DataGenerator<TableFacet> get()
154    {
155  1 return dataGenerator;
156    }
157    }
158   
 
159    static class StaticInnerTableFacetProvider implements TableFacetProvider<TableFacet> {
 
160  1 toggle @Override
161    public TableFacet getOne()
162    {
163  1 return newTableFacet();
164    }
165    }
166   
 
167  1 toggle @Test
168    @GenData(
169    generator = InnerDataGeneratorProvider.class,
170    facets = InnerTableFacetProvider.class
171    )
172    void providersOfNonStaticMember()
173    {
174  1 assertNumberOfRows(TABLE_CAR, "cr_color = 'red'")
175    .isEqualTo(RANDOM_ROWS);
176    }
177   
 
178  1 toggle @Test
179    @GenData(
180    generator = StaticInnerDataGeneratorProvider.class,
181    facets = StaticInnerTableFacetProvider.class
182    )
183    void providersOfStaticMember()
184    {
185  1 assertNumberOfRows(TABLE_CAR, "cr_color = 'red'")
186    .isEqualTo(RANDOM_ROWS);
187    }
188    }
189   
190    /**
191    * Tests the usage of named providers of table facets and data generator.
192    */
193    @Nested
 
194    class OnNamedProviders {
 
195  1 toggle @Test
196    @GenData(
197    generatorName = "namedDataGenerator",
198    facetsNames = "namedTableFacets"
199    )
200    void namedProviders()
201    {
202  1 assertNumberOfRows(TABLE_CAR, "cr_color = 'red'")
203    .isEqualTo(RANDOM_ROWS);
204    }
205   
 
206  1 toggle @TableFacetsSource
207    JdbcTableFacet namedTableFacets()
208    {
209  1 return newTableFacet();
210    }
211   
 
212  1 toggle @DataGeneratorSource
213    JdbcDataGenerator namedDataGenerator()
214    {
215  1 return new JdbcDataGenerator(getDataSource());
216    }
217    }
218   
219    /**
220    * Tests the referencing generating sources from outer class.
221    */
222    @Nested
 
223    class OuterConfig {
224    @Nested
 
225    class InnerTest {
226    /**
227    * Tests the referencing generating sources from outer class.
228    */
 
229  1 toggle @Test
230    @GenData(
231    value = { OuterTableFacetProvider.class },
232    facetsNames = "outerTableFacets",
233    generatorName = "outerDataGenerator"
234    )
235    void useOuterConfig()
236    {
237  1 assertNumberOfRows(TABLE_CAR, "cr_color = 'outer'")
238    .isEqualTo(RANDOM_ROWS * 2);
239    }
240    }
241   
 
242    class OuterTableFacetProvider implements TableFacetProvider<TableFacet> {
 
243  1 toggle @Override
244    public TableFacet getOne()
245    {
246  1 return outerTableFacets();
247    }
248    }
249   
 
250  1 toggle @DataGeneratorSource
251    DataGenerator<TableFacet> outerDataGenerator()
252    {
253  1 return FoxgloveJUnitExtensionTest.this.newDataGenerator();
254    }
255   
 
256  2 toggle @TableFacetsSource
257    JdbcTableFacet outerTableFacets()
258    {
259  2 return JdbcTableFacet.builder("ap_car")
260    .numberOfRows(RANDOM_ROWS)
261    .column("cr_color").fixed("outer")
262    .build();
263    }
264    }
265   
 
266  2 toggle @SuppressWarnings("unchecked")
267    private DataGenerator<TableFacet> newDataGenerator()
268    {
269  2 return (DataGenerator<TableFacet>)(Object)new JdbcDataGenerator(getDataSource());
270    }
271   
 
272  6 toggle private static JdbcTableFacet newTableFacet()
273    {
274  6 return JdbcTableFacet.builder("ap_car")
275    .numberOfRows(RANDOM_ROWS)
276    .column("cr_color").fixed("red")
277    .build();
278    }
279    }