Warning screen, smarter license re-validation, version reporting
Warning screen - New reusable WarningPage (word-wrapped message, ENTER acknowledges and continues to the screen you were about to enter). - First use: pressing Play while the selected audio is still downloading. Dynamic Audio requires every file; a fixed track requires its own file. License re-validation - No longer re-verifies on every Home render. Checks now run only when the email/license key is entered or changed, on the manual option, at startup when already due, and hourly while valid. - Invalid + unchanged credentials are never re-checked (persisted pair). - Valid re-checks at most once per hour, anchored on a DB timestamp so an overdue check runs immediately after a power cycle. - New system_kv keys track the checked pair, outcome, and last-check time. - Added a System Settings row "Manually Validate License Key OK|Invalid" (OK green, Invalid red, label white) that runs a check immediately. Portal / local integration - License validation request now sends the app version as `appVersion`. - The entered license key is mirrored to ~/.local/radiantwave/license.txt. Misc - "Please connect to WiFi" only shows when no WiFi is joined AND the internet is unreachable (fixes the NetworkManager-missing and Ethernet cases). - Added unit tests for the audio-download warning, license scheduling policy, license request shape, and the new settings-menu entry.
This commit is contained in:
@@ -7,21 +7,23 @@ namespace settings = radiantwave::settings;
|
||||
|
||||
TEST(SystemSettingsMenuTest, ListsTheSystemSettingsInOrder) {
|
||||
const auto entries = settings::systemSettingEntries();
|
||||
ASSERT_EQ(entries.size(), 7u);
|
||||
ASSERT_EQ(entries.size(), 8u);
|
||||
EXPECT_EQ(entries[0].label, "Email Address");
|
||||
EXPECT_EQ(entries[0].id, settings::SystemSettingId::EmailAddress);
|
||||
EXPECT_EQ(entries[1].label, "License Key");
|
||||
EXPECT_EQ(entries[1].id, settings::SystemSettingId::LicenseKey);
|
||||
EXPECT_EQ(entries[2].label, "System Name");
|
||||
EXPECT_EQ(entries[2].id, settings::SystemSettingId::SystemName);
|
||||
EXPECT_EQ(entries[3].label, "Schedule");
|
||||
EXPECT_EQ(entries[3].id, settings::SystemSettingId::Schedule);
|
||||
EXPECT_EQ(entries[4].label, "WiFi Setup");
|
||||
EXPECT_EQ(entries[4].id, settings::SystemSettingId::WiFiSetup);
|
||||
EXPECT_EQ(entries[5].label, "Time Zone Setup");
|
||||
EXPECT_EQ(entries[5].id, settings::SystemSettingId::Timezone);
|
||||
EXPECT_EQ(entries[6].label, "Date Format");
|
||||
EXPECT_EQ(entries[6].id, settings::SystemSettingId::DateFormat);
|
||||
EXPECT_EQ(entries[2].label, "Manually Validate License Key");
|
||||
EXPECT_EQ(entries[2].id, settings::SystemSettingId::ManualValidateLicense);
|
||||
EXPECT_EQ(entries[3].label, "System Name");
|
||||
EXPECT_EQ(entries[3].id, settings::SystemSettingId::SystemName);
|
||||
EXPECT_EQ(entries[4].label, "Schedule");
|
||||
EXPECT_EQ(entries[4].id, settings::SystemSettingId::Schedule);
|
||||
EXPECT_EQ(entries[5].label, "WiFi Setup");
|
||||
EXPECT_EQ(entries[5].id, settings::SystemSettingId::WiFiSetup);
|
||||
EXPECT_EQ(entries[6].label, "Time Zone Setup");
|
||||
EXPECT_EQ(entries[6].id, settings::SystemSettingId::Timezone);
|
||||
EXPECT_EQ(entries[7].label, "Date Format");
|
||||
EXPECT_EQ(entries[7].id, settings::SystemSettingId::DateFormat);
|
||||
}
|
||||
|
||||
TEST(SystemSettingsMenuTest, LabelsAreNonEmptyAndUnique) {
|
||||
@@ -42,6 +44,7 @@ TEST(SystemSettingsMenuTest, EveryEntryMapsToAKnownPage) {
|
||||
switch (entry.id) {
|
||||
case settings::SystemSettingId::EmailAddress:
|
||||
case settings::SystemSettingId::LicenseKey:
|
||||
case settings::SystemSettingId::ManualValidateLicense:
|
||||
case settings::SystemSettingId::SystemName:
|
||||
case settings::SystemSettingId::Schedule:
|
||||
case settings::SystemSettingId::WiFiSetup:
|
||||
|
||||
Reference in New Issue
Block a user