Files
radiantwave/tests/test_settings_menu.cpp
T
NeilClack 1bfe64580c Kiosk: System Name entry in System Settings
Adds a System Name text-entry page (hint 'e.g. Living Room', 1-40 char
validation) and a data-driven System Settings row for it. Saving persists
locally and nudges the background sync; conflict/invalid results surface
the message and restore the previous name. Extends the settings-menu
tests.
2026-09-29 09:58:08 -05:00

54 lines
2.0 KiB
C++

#include "settings_menu.h"
#include <gtest/gtest.h>
#include <set>
#include <string>
namespace settings = radiantwave::settings;
TEST(SystemSettingsMenuTest, ListsTheSystemSettingsInOrder) {
const auto entries = settings::systemSettingEntries();
ASSERT_EQ(entries.size(), 6u);
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, "WiFi Setup");
EXPECT_EQ(entries[3].id, settings::SystemSettingId::WiFiSetup);
EXPECT_EQ(entries[4].label, "Time Zone Setup");
EXPECT_EQ(entries[4].id, settings::SystemSettingId::Timezone);
EXPECT_EQ(entries[5].label, "Date Format");
EXPECT_EQ(entries[5].id, settings::SystemSettingId::DateFormat);
}
TEST(SystemSettingsMenuTest, LabelsAreNonEmptyAndUnique) {
const auto entries = settings::systemSettingEntries();
std::set<std::string> labels;
std::set<int> ids;
for (const auto& entry : entries) {
EXPECT_FALSE(entry.label.empty());
labels.insert(entry.label);
ids.insert(static_cast<int>(entry.id));
}
EXPECT_EQ(labels.size(), entries.size());
EXPECT_EQ(ids.size(), entries.size());
}
TEST(SystemSettingsMenuTest, EveryEntryMapsToAKnownPage) {
for (const auto& entry : settings::systemSettingEntries()) {
switch (entry.id) {
case settings::SystemSettingId::EmailAddress:
case settings::SystemSettingId::LicenseKey:
case settings::SystemSettingId::SystemName:
case settings::SystemSettingId::WiFiSetup:
case settings::SystemSettingId::Timezone:
case settings::SystemSettingId::DateFormat:
SUCCEED();
break;
default:
FAIL() << "Unhandled SystemSettingId for label " << entry.label;
}
}
}