[Perl] DAQ system for the FAPG.
1
use Mojo::Base -strict;
2
3
use Test2::V0;
4
5
use FindBin;
6
use lib "${FindBin::Bin}/../lib/";
7
use lib "${FindBin::Bin}/lib/";
8
use Dashboard::Test qw(test_app);
9
10
my $t = test_app();
11
12
$t->get_ok('/probes/ph')
13
->status_is(200)
14
->element_exists_not('#navbar-title')
15
->element_exists(
16
'main section[data-controls-panel][aria-labelledby="probe-controls-title"]'
17
)
18
->text_is( '#probe-controls-title', 'pH chart controls' )
19
->element_exists('#probe-controls .graph-control')
20
->text_is( '#probe-controls [data-control-group="range"]', 'Range' )
21
->text_is( '#probe-controls [data-control-group="timeframe"]',
22
'Timeframe' )
23
->text_is( '.card-header h2 a[href="/probes/ph"]', 'pH' )
24
->element_exists('.navbar-nav a.nav-link.active.dropdown-toggle')
25
->element_exists('section#probe-ph[data-panel="ph"] canvas#chart-ph')
26
->text_is( 'a[data-raw-download][data-probe="ph"]', 'Download data' )
27
->element_exists(
28
'button[data-timeframe="day"].timeframe-button.dropdown-item')
29
->element_exists(
30
'.timeframe-control.dropdown > button[data-timeframe-dropdown-label]')
31
->element_exists_not('.timeframe-control.btn-group')
32
->element_exists(
33
'script[src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"]'
34
. '[integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz"]'
35
)
36
->element_exists('tbody[data-reading-messages="ph"]')
37
->element_exists_not('section#probe-do[data-panel="do"]');
38
39
for my $timeframe (qw(hour day week month year)) {
40
$t->element_exists(
41
qq{.timeframe-control button[data-timeframe="$timeframe"]});
42
}
43
44
$t->get_ok('/probes/unknown')->status_is(404);
45
$t->get_ok('/graphs/ph')->status_is(404);
46
47
$t->get_ok('/probes')
48
->status_is(200)
49
->element_exists(
50
'main section[data-controls-panel][aria-labelledby="probes-controls-title"]'
51
)
52
->text_is( '#probes-controls-title', 'Probe chart controls' )
53
->element_exists(
54
'#probes-controls .graph-control[data-default-timeframe="day"]')
55
->element_exists('main.container')
56
->element_exists('div.probes-grid')
57
->element_exists('.navbar-nav a.nav-link.active.dropdown-toggle');
58
59
for my $probe (qw(ph do orp ec)) {
60
$t->element_exists(
61
qq{div.probes-grid .card-header h2 a[href="/probes/$probe"]});
62
$t->element_exists(
63
qq{section#probe-${probe}[data-panel="$probe"] canvas#chart-$probe});
64
$t->element_exists(qq{a[data-raw-download][data-probe="$probe"]});
65
}
66
67
done_testing;
68