Skip to content

Commit 2e2cfcc

Browse files
refactor(persistence): tidy loading and share the test settings loader
Signed-off-by: Maika Namuo <httpworldview@gmail.com>
1 parent 41d7fc1 commit 2e2cfcc

6 files changed

Lines changed: 17 additions & 39 deletions

File tree

‎src/persistence/schema.rs‎

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -244,15 +244,13 @@ mod tests {
244244
assert_eq!(settings.visuals.order, vec![VisualKind::Spectrum]);
245245
assert_eq!(settings.visuals.width_basis.len(), 1);
246246
assert_eq!(settings.visuals.width_basis[&VisualKind::Spectrum], 320.0);
247-
assert_eq!(settings.visuals.popouts.len(), 2);
248-
assert_eq!(settings.visuals.popouts[&VisualKind::Spectrum].width, 640);
249-
assert_eq!(settings.visuals.popouts[&VisualKind::Spectrum].height, 0);
250-
assert!(settings.visuals.popouts[&VisualKind::Spectrum].popped_out);
251-
assert_eq!(
252-
settings.visuals.popouts[&VisualKind::Oscilloscope].width,
253-
300
254-
);
255-
assert!(!settings.visuals.popouts[&VisualKind::Oscilloscope].popped_out);
247+
let popouts = &settings.visuals.popouts;
248+
assert_eq!(popouts.len(), 2);
249+
assert_eq!(popouts[&VisualKind::Spectrum].width, 640);
250+
assert_eq!(popouts[&VisualKind::Spectrum].height, 0);
251+
assert!(popouts[&VisualKind::Spectrum].popped_out);
252+
assert_eq!(popouts[&VisualKind::Oscilloscope].width, 300);
253+
assert!(!popouts[&VisualKind::Oscilloscope].popped_out);
256254

257255
let saved = serde_json::to_value(&settings.visuals).unwrap();
258256
assert_eq!(saved["modules"].as_object().unwrap().len(), 1);

‎src/persistence/store.rs‎

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -156,13 +156,10 @@ pub struct SettingsHandle(Rc<RefCell<SettingsManager>>);
156156

157157
impl SettingsHandle {
158158
pub fn load_or_default() -> Self {
159-
Self(Rc::new(RefCell::new(SettingsManager::load_from_dir(
160-
&config_dir(),
161-
))))
159+
Self::load_from(&config_dir())
162160
}
163161

164-
#[cfg(test)]
165-
pub(crate) fn for_test(dir: &Path) -> Self {
162+
pub(crate) fn load_from(dir: &Path) -> Self {
166163
Self(Rc::new(RefCell::new(SettingsManager::load_from_dir(dir))))
167164
}
168165

@@ -216,15 +213,8 @@ mod tests {
216213
manager.update_active_theme(|theme| theme.author = Some("OpenMeters".into()));
217214

218215
assert_eq!(manager.active_theme(), "default-custom-2");
219-
assert_eq!(
220-
manager
221-
.theme_store
222-
.load("default-custom-2")
223-
.unwrap()
224-
.author
225-
.as_deref(),
226-
Some("OpenMeters")
227-
);
216+
let theme = manager.theme_store.load("default-custom-2").unwrap();
217+
assert_eq!(theme.author.as_deref(), Some("OpenMeters"));
228218
}
229219

230220
#[test]
@@ -241,8 +231,7 @@ mod tests {
241231
if let Some(original) = original {
242232
fs::write(&path, original).unwrap();
243233
}
244-
let manager = SettingsManager::load_from_dir(dir.path());
245-
let handle = SettingsHandle(Rc::new(RefCell::new(manager)));
234+
let handle = SettingsHandle::load_from(dir.path());
246235
let saved =
247236
|| serde_json::from_slice::<serde_json::Value>(&fs::read(&path).unwrap()).unwrap();
248237
let changed = handle.set(User, |s| &mut s.decorations, decorations);

‎src/persistence/theme.rs‎

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -177,14 +177,8 @@ mod tests {
177177
fs::write(themes_dir.join("zebra.json"), "{}").unwrap();
178178
fs::write(themes_dir.join("alpha.json"), "{}").unwrap();
179179

180-
let names = store.list();
181-
assert_eq!(
182-
names
183-
.iter()
184-
.map(|choice| choice.name.as_str())
185-
.collect::<Vec<_>>(),
186-
["default", "alpha", "zebra"]
187-
);
180+
let names = store.list().into_iter().map(|choice| choice.name);
181+
assert_eq!(names.collect::<Vec<_>>(), ["default", "alpha", "zebra"]);
188182
}
189183

190184
#[test]

‎src/persistence/visuals.rs‎

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -181,9 +181,6 @@ macro_rules! visual_configs {
181181
}
182182

183183
fn from_value_lossy(kind: VisualKind, value: Value, scope: &str) -> Self {
184-
if value.is_null() {
185-
return Self::default_for(kind);
186-
}
187184
match kind {
188185
$(VisualKind::$variant => Self::$variant($settings::from_value_lossy(value, scope))),*
189186
}.normalized()

‎src/ui/app/message.rs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,7 @@ mod tests {
248248
UiConfig {
249249
capture: CaptureControl::for_test(),
250250
audio: Rc::new(RefCell::new(Some(test_audio_reader()))),
251-
settings_handle: SettingsHandle::for_test(dir.path()),
251+
settings_handle: SettingsHandle::load_from(dir.path()),
252252
},
253253
true,
254254
);

‎src/ui/settings.rs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ mod tests {
287287
#[test]
288288
fn palette_drags_save_with_settings_and_only_when_changed() {
289289
let dir = tempfile::tempdir().unwrap();
290-
let settings = SettingsHandle::for_test(dir.path());
290+
let settings = SettingsHandle::load_from(dir.path());
291291
let manager = VisualManagerHandle::default();
292292
let mut pane = ActiveSettings::new(VisualKind::Waveform, &manager);
293293
let mut send =
@@ -323,7 +323,7 @@ mod tests {
323323
fn toggling_sections_and_typing_hex_neither_apply_nor_save() {
324324
use spectrum::Message;
325325
let dir = tempfile::tempdir().unwrap();
326-
let settings = SettingsHandle::for_test(dir.path());
326+
let settings = SettingsHandle::load_from(dir.path());
327327
let manager = VisualManagerHandle::default();
328328
let config = || manager.borrow().config(VisualKind::Spectrum);
329329
let before = config();

0 commit comments

Comments
 (0)