| 244 | #[test] |
| 245 | #[serial] |
| 246 | fn test_delete_existing_view() { |
| 247 | use tempfile::tempdir; |
| 248 | |
| 249 | let _guard = DirGuard::new(); |
| 250 | let temp = tempdir().unwrap(); |
| 251 | let repo_path = temp.path(); |
| 252 | |
| 253 | // Initialize a repository and create a view, then drop to release lock |
| 254 | { |
| 255 | let mut repo = Repository::init(repo_path).unwrap(); |
| 256 | // Create a draft view (shared views cannot be deleted) |
| 257 | { |
| 258 | use atomic_core::pristine::{MutTxnT, ViewScope, ViewTxnT}; |
| 259 | let mut txn = repo.pristine().write_txn().unwrap(); |
| 260 | let dev = txn.get_view("dev").unwrap().unwrap(); |
| 261 | txn.create_view("to-delete", ViewScope::Draft, Some(dev.id)) |
| 262 | .unwrap(); |
| 263 | txn.commit().unwrap(); |
| 264 | } |
| 265 | // Verify it exists |
| 266 | assert!(repo.view_exists("to-delete").unwrap()); |
| 267 | } |
| 268 | |
| 269 | // Change to the repo directory |
| 270 | std::env::set_current_dir(repo_path).unwrap(); |
| 271 | |
| 272 | // Delete the view |
| 273 | let cmd = Delete::with_name("to-delete"); |
| 274 | let result = cmd.run(); |
| 275 | assert!(result.is_ok()); |
| 276 | |
| 277 | // Verify it's gone |
| 278 | let repo = Repository::open(repo_path).unwrap(); |
| 279 | assert!(!repo.view_exists("to-delete").unwrap()); |
| 280 | } |
| 281 | |
| 282 | #[test] |
| 283 | #[serial] |