1. Project Clover database Fri Jul 17 2026 06:10:26 UTC
  2. Package guru.mikelue.foxglove.vendor

File DerbyTest.java

 

Code metrics

0
3
4
1
140
119
4
1.33
0.75
4
1

Classes

Class Line # Actions
DerbyTest 26 3 0% 4 7
0.00%
 

Contributing tests

No tests hitting this source file were found.

Source view

1    package guru.mikelue.foxglove.vendor;
2   
3    import java.io.IOException;
4    import java.sql.JDBCType;
5    import java.time.*;
6   
7    import org.springframework.beans.factory.annotation.Autowired;
8    import org.springframework.context.ApplicationContext;
9    import org.springframework.jdbc.core.JdbcTemplate;
10    import org.springframework.test.jdbc.JdbcTestUtils;
11    import org.springframework.transaction.annotation.Transactional;
12   
13    import org.junit.jupiter.api.AfterAll;
14    import org.junit.jupiter.api.BeforeAll;
15    import org.junit.jupiter.api.Tag;
16    import org.junit.jupiter.api.Test;
17   
18    import guru.mikelue.foxglove.TableFacet;
19    import guru.mikelue.foxglove.annotation.GenData;
20    import guru.mikelue.foxglove.annotation.TableFacetsSource;
21    import guru.mikelue.foxglove.jdbc.JdbcTableFacet;
22    import guru.mikelue.foxglove.setting.DataSetting;
23    import guru.mikelue.foxglove.test.AbstractVendorTestBase;
24   
25    @Tag("vendor-derby")
 
26    public class DerbyTest extends AbstractVendorTestBase {
27    private final static int RANDOM_ROWS = gen().ints().range(5, 10).get();
28   
 
29  0 toggle public DerbyTest() {}
30   
 
31  0 toggle @BeforeAll
32    static void beforeAllSetup(
33    @Autowired ApplicationContext appContext,
34    @Autowired JdbcTemplate jdbcTemplate
35    ) throws IOException {
36  0 build("classpath:derby-types.sql", appContext);
37    }
38   
 
39  0 toggle @AfterAll
40    static void afterAllTearDown(
41    @Autowired ApplicationContext appContext,
42    @Autowired JdbcTemplate jdbcTemplate
43    ) throws IOException {
44  0 JdbcTestUtils.dropTables(jdbcTemplate, "ap_types");
45    }
46   
47    private DataSetting derbyTyping = new DataSetting()
48    .givenType(JDBCType.TIMESTAMP)
49    .useSupplier(() -> gen().temporal().timestamp().get());
50   
51    private DataSetting derbyTypingForLocalDateTime = new DataSetting()
52    .givenType(JDBCType.TIMESTAMP)
53    .useSupplier(() -> gen().temporal().timestamp().get())
54    .addStatementSetter(
55    meta -> meta.name().equalsIgnoreCase("tp_date"),
56    (stmt, index, meta, value) ->
57    stmt.setDate(index, java.sql.Date.valueOf((LocalDate)value))
58    )
59    .addStatementSetter(
60    meta -> meta.name().equalsIgnoreCase("tp_time"),
61    (stmt, index, meta, value) ->
62    stmt.setTime(index, java.sql.Time.valueOf((LocalTime)value))
63    )
64    .addStatementSetter(
65    meta -> meta.name().equalsIgnoreCase("tp_timestamp"),
66    (stmt, index, meta, value) ->
67    stmt.setTimestamp(index, java.sql.Timestamp.valueOf((LocalDateTime)value))
68    );
69   
70    @TableFacetsSource
71    TableFacet[] defaultData = new JdbcTableFacet[] {
72    // Uses java.time.Instant as values for Derby temporal types
73    JdbcTableFacet.builder("ap_types")
74    .withSetting(derbyTyping)
75    .numberOfRows(RANDOM_ROWS)
76    .column("tp_color").fixed("green")
77    .column("tp_date").fixed(Instant.now())
78    .column("tp_time").fixed(Instant.now())
79    .column("tp_timestamp").fixed(Instant.now())
80    .build(),
81    // Uses java.time.OffsetXXX as values for Derby temporal types
82    JdbcTableFacet.builder("ap_types")
83    .withSetting(derbyTyping)
84    .numberOfRows(RANDOM_ROWS)
85    .column("tp_color").fixed("green")
86    .column("tp_date").fixed(OffsetDateTime.now())
87    .column("tp_time").fixed(OffsetTime.now())
88    .column("tp_timestamp").fixed(OffsetDateTime.now())
89    .build(),
90    // Uses java.time.ZonedDateTime as values for Derby temporal types
91    JdbcTableFacet.builder("ap_types")
92    .withSetting(derbyTyping)
93    .numberOfRows(RANDOM_ROWS)
94    .column("tp_color").fixed("green")
95    .column("tp_date").fixed(ZonedDateTime.now())
96    .column("tp_time").fixed(ZonedDateTime.now())
97    .column("tp_timestamp").fixed(ZonedDateTime.now())
98    .build(),
99    // Uses java.sql temporal types as values for Derby temporal types
100    JdbcTableFacet.builder("ap_types")
101    .withSetting(derbyTyping)
102    .numberOfRows(RANDOM_ROWS)
103    .column("tp_color").fixed("green")
104    .column("tp_date").fixed(java.sql.Date.from(Instant.now()))
105    .column("tp_time").fixed(java.sql.Time.from(Instant.now()))
106    .column("tp_timestamp").fixed(java.sql.Timestamp.from(Instant.now()))
107    .build(),
108    // Uses java.time.LocalXXX values for Derby temporal types
109    JdbcTableFacet.builder("ap_types")
110    .withSetting(derbyTypingForLocalDateTime)
111    .numberOfRows(RANDOM_ROWS)
112    .column("tp_color").fixed("green")
113    .column("tp_date").fixed(LocalDate.now())
114    .column("tp_time").fixed(LocalTime.now())
115    .column("tp_timestamp").fixed(LocalDateTime.now())
116    .build(),
117    // Uses string values for Derby temporal types
118    JdbcTableFacet.builder("ap_types")
119    .withSetting(derbyTyping)
120    .numberOfRows(RANDOM_ROWS)
121    .column("tp_color").fixed("green")
122    .column("tp_date").fixed("2026-07-16")
123    .column("tp_time").fixed("12:34:56")
124    .column("tp_timestamp").fixed("2026-07-16 12:34:56")
125    .build(),
126    };
127   
128    /**
129    * Tests basic functionality of Derby database.
130    */
 
131  0 toggle @Test
132    @GenData @Transactional
133    void basic()
134    {
135  0 assertNumberOfRows(
136    "ap_types", "tp_color = 'green'"
137    )
138    .isEqualTo(RANDOM_ROWS * defaultData.length);
139    }
140    }