1+ # Run tests on exporting historical data to SQLite database
2+
3+ @testsetup module TestDatabase
4+
5+ export db, df_snow, df_rain, df_temp
6+
7+ using WeatherReport, SQLite, DataFrames
8+
9+ db_path = joinpath (@__DIR__ , " .." , " export" , " Veldhoven_all.sqlite" )
10+
11+ # Remove existing database otherwise new data gets appended to it
12+ if isfile (db_path)
13+ rm (db_path)
14+ end
15+
16+ export_to_sqlite (" Veldhoven" ,
17+ start_date = " 2022-01-01" ,
18+ end_date = " 2022-01-31" )
19+
20+ db = SQLite. DB (db_path)
21+
22+ df_snow = DBInterface. execute (db, " SELECT * FROM snowfall" ) |> DataFrame
23+ df_rain = DBInterface. execute (db, " SELECT * FROM rain" ) |> DataFrame
24+ df_temp = DBInterface. execute (db, " SELECT * FROM temperature_2m" ) |> DataFrame
25+ end
26+
27+ @testitem " SQLite database" setup = [TestDatabase] begin
28+
29+ using SQLite
30+
31+ @testset " Check number of tables" begin
32+ @test SQLite. tables (db) |> length == 6
33+ end
34+
35+ @testset " Check snowfall data size" begin
36+ rows, cols = size (df_snow)
37+
38+ @test rows == 744
39+ @test cols == 2
40+ end
41+
42+ @testset " Check rain data" begin
43+ df_filter = filter (row -> row. rain > 0 , df_rain)
44+ rows, cols = size (df_filter)
45+
46+ @test rows == 152
47+ @test cols == 2
48+
49+ @test df_rain[! , :rain ][2 ] ≈ 0.1
50+ @test df_rain[! , :rain ][742 ] ≈ 0.1
51+
52+ end
53+
54+ @testset " Check temperature data" begin
55+ df_filter = filter (row -> row. temperature_2m > 5.5 , df_temp)
56+ rows, cols = size (df_filter)
57+
58+ @test rows == 208
59+ @test cols == 3
60+
61+ @test df_temp[! , :temperature_2m ][1 ] ≈ 12.3
62+ @test df_temp[! , :temperature_2m ][744 ] ≈ 3.5
63+
64+ @test df_temp[! , :APP_TEMP ][2 ] ≈ 11.3
65+ @test df_temp[! , :APP_TEMP ][743 ] ≈ - 0.6
66+ end
67+
68+ end
0 commit comments