()
| 150 | |
| 151 | #[test] |
| 152 | fn test_del_view() { |
| 153 | let dir = tempdir().unwrap(); |
| 154 | let db_path = dir.path().join("pristine"); |
| 155 | let pristine = Pristine::open(&db_path).unwrap(); |
| 156 | |
| 157 | // Create a shared parent and a draft view with some changes. |
| 158 | // del_view only works on Draft views (Shared views are permanent). |
| 159 | { |
| 160 | let mut txn = pristine.write_txn().unwrap(); |
| 161 | |
| 162 | let parent = txn.open_or_create_view("parent").unwrap(); |
| 163 | let mut view = txn |
| 164 | .create_view("to-delete", ViewScope::Draft, Some(parent.id)) |
| 165 | .unwrap(); |
| 166 | assert_eq!(view.name, "to-delete"); |
| 167 | |
| 168 | // Add some changes |
| 169 | let hash1 = Hash::of(b"change 1"); |
| 170 | let hash2 = Hash::of(b"change 2"); |
| 171 | let change_id1 = txn.register_change(&hash1).unwrap(); |
| 172 | let change_id2 = txn.register_change(&hash2).unwrap(); |
| 173 | |
| 174 | txn.put_change(&mut view, change_id1, &hash1).unwrap(); |
| 175 | txn.put_change(&mut view, change_id2, &hash2).unwrap(); |
| 176 | txn.update_view(&view).unwrap(); |
| 177 | |
| 178 | assert_eq!(view.change_count, 2); |
| 179 | |
| 180 | // Verify view exists |
| 181 | let views = txn.list_views().unwrap(); |
| 182 | assert!(views.contains(&"to-delete".to_string())); |
| 183 | |
| 184 | txn.commit().unwrap(); |
| 185 | } |
| 186 | |
| 187 | // Delete the view |
| 188 | { |
| 189 | let mut txn = pristine.write_txn().unwrap(); |
| 190 | |
| 191 | let view = txn.get_view("to-delete").unwrap().unwrap(); |
| 192 | txn.del_view(&view).unwrap(); |
| 193 | |
| 194 | txn.commit().unwrap(); |
| 195 | } |
| 196 | |
| 197 | // Verify view is gone |
| 198 | { |
| 199 | let txn = pristine.read_txn().unwrap(); |
| 200 | |
| 201 | let view = txn.get_view("to-delete").unwrap(); |
| 202 | assert!(view.is_none()); |
| 203 | |
| 204 | let views = txn.list_views().unwrap(); |
| 205 | assert!(!views.contains(&"to-delete".to_string())); |
| 206 | } |
| 207 | } |
| 208 | |
| 209 | #[test] |
nothing calls this directly
no test coverage detected