Fixed workspace tests
This commit is contained in:
parent
e1eff3f4cd
commit
cf4c103660
1 changed files with 79 additions and 2 deletions
|
@ -147,6 +147,11 @@ impl WorkspaceDb {
|
||||||
DELETE FROM panes WHERE workspace_id = ?1;"})?(workspace.id)
|
DELETE FROM panes WHERE workspace_id = ?1;"})?(workspace.id)
|
||||||
.context("Clearing old panes")?;
|
.context("Clearing old panes")?;
|
||||||
|
|
||||||
|
self.exec_bound(indoc! {"
|
||||||
|
DELETE FROM workspaces WHERE workspace_location = ? AND workspace_id != ?
|
||||||
|
"})?((&workspace.location, workspace.id))
|
||||||
|
.context("clearing out old locations")?;
|
||||||
|
|
||||||
// Update or insert
|
// Update or insert
|
||||||
self.exec_bound(indoc! {
|
self.exec_bound(indoc! {
|
||||||
"INSERT INTO
|
"INSERT INTO
|
||||||
|
@ -154,7 +159,7 @@ impl WorkspaceDb {
|
||||||
VALUES
|
VALUES
|
||||||
(?1, ?2, ?3, ?4, CURRENT_TIMESTAMP)
|
(?1, ?2, ?3, ?4, CURRENT_TIMESTAMP)
|
||||||
ON CONFLICT DO UPDATE SET
|
ON CONFLICT DO UPDATE SET
|
||||||
workspace_location = ?2, dock_visible = ?3, dock_anchor = ?4, timestamp = CURRENT_TIMESTAMP"
|
workspace_location = ?2, dock_visible = ?3, dock_anchor = ?4, timestamp = CURRENT_TIMESTAMP"
|
||||||
})?((workspace.id, &workspace.location, workspace.dock_position))
|
})?((workspace.id, &workspace.location, workspace.dock_position))
|
||||||
.context("Updating workspace")?;
|
.context("Updating workspace")?;
|
||||||
|
|
||||||
|
@ -372,11 +377,83 @@ impl WorkspaceDb {
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
|
||||||
|
use std::sync::Arc;
|
||||||
|
|
||||||
use db::open_memory_db;
|
use db::open_memory_db;
|
||||||
use settings::DockAnchor;
|
use settings::DockAnchor;
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_workspace_id_stability() {
|
||||||
|
env_logger::try_init().ok();
|
||||||
|
|
||||||
|
let db = WorkspaceDb(open_memory_db(Some("test_workspace_id_stability")));
|
||||||
|
|
||||||
|
db.migrate(
|
||||||
|
"test_table",
|
||||||
|
&["CREATE TABLE test_table(
|
||||||
|
text TEXT,
|
||||||
|
workspace_id INTEGER,
|
||||||
|
FOREIGN KEY(workspace_id) REFERENCES workspaces(workspace_id)
|
||||||
|
ON DELETE CASCADE
|
||||||
|
) STRICT;"],
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
let mut workspace_1 = SerializedWorkspace {
|
||||||
|
id: 1,
|
||||||
|
location: (["/tmp", "/tmp2"]).into(),
|
||||||
|
dock_position: crate::dock::DockPosition::Shown(DockAnchor::Bottom),
|
||||||
|
center_group: Default::default(),
|
||||||
|
dock_pane: Default::default(),
|
||||||
|
};
|
||||||
|
|
||||||
|
let mut workspace_2 = SerializedWorkspace {
|
||||||
|
id: 2,
|
||||||
|
location: (["/tmp"]).into(),
|
||||||
|
dock_position: crate::dock::DockPosition::Hidden(DockAnchor::Expanded),
|
||||||
|
center_group: Default::default(),
|
||||||
|
dock_pane: Default::default(),
|
||||||
|
};
|
||||||
|
|
||||||
|
db.save_workspace(&workspace_1);
|
||||||
|
|
||||||
|
db.exec_bound("INSERT INTO test_table(text, workspace_id) VALUES (?, ?)")
|
||||||
|
.unwrap()(("test-text-1", 1))
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
db.save_workspace(&workspace_2);
|
||||||
|
|
||||||
|
db.exec_bound("INSERT INTO test_table(text, workspace_id) VALUES (?, ?)")
|
||||||
|
.unwrap()(("test-text-2", 2))
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
workspace_1.location = (["/tmp", "/tmp3"]).into();
|
||||||
|
db.save_workspace(&workspace_1);
|
||||||
|
db.save_workspace(&workspace_1);
|
||||||
|
|
||||||
|
workspace_2.dock_pane.children.push(SerializedItem {
|
||||||
|
kind: Arc::from("Test"),
|
||||||
|
item_id: 10,
|
||||||
|
});
|
||||||
|
db.save_workspace(&workspace_2);
|
||||||
|
|
||||||
|
let test_text_1 = db
|
||||||
|
.select_row_bound::<_, String>("SELECT text FROM test_table WHERE workspace_id = ?")
|
||||||
|
.unwrap()(2)
|
||||||
|
.unwrap()
|
||||||
|
.unwrap();
|
||||||
|
assert_eq!(test_text_1, "test-text-2");
|
||||||
|
|
||||||
|
let test_text_2 = db
|
||||||
|
.select_row_bound::<_, String>("SELECT text FROM test_table WHERE workspace_id = ?")
|
||||||
|
.unwrap()(1)
|
||||||
|
.unwrap()
|
||||||
|
.unwrap();
|
||||||
|
assert_eq!(test_text_2, "test-text-1");
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_full_workspace_serialization() {
|
fn test_full_workspace_serialization() {
|
||||||
env_logger::try_init().ok();
|
env_logger::try_init().ok();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue