75 lines
1.8 KiB
Swift
75 lines
1.8 KiB
Swift
import Foundation
|
|
import Testing
|
|
|
|
@testable import Peered
|
|
|
|
@Suite
|
|
struct NotesStorageTests {
|
|
private func makeStorage(root: URL = URL(filePath: "/test")) -> (
|
|
NotesStorage, InMemoryStorageProvider
|
|
) {
|
|
let provider = InMemoryStorageProvider()
|
|
let storage = NotesStorage(storageProvider: provider, rootDirectory: root)
|
|
return (storage, provider)
|
|
}
|
|
|
|
@Test
|
|
func loadNotesReturnsEmptyArrayWhenNoFiles() {
|
|
let (storage, _) = makeStorage()
|
|
let notes = storage.loadNotes()
|
|
#expect(notes.isEmpty)
|
|
}
|
|
|
|
@Test
|
|
func createNoteCreatesFile() {
|
|
let root = URL(filePath: "/test")
|
|
let (storage, provider) = makeStorage(root: root)
|
|
|
|
storage.createNote(name: "My note")
|
|
|
|
#expect(!provider.files.isEmpty)
|
|
}
|
|
|
|
@Test
|
|
func loadNotesReturnCreatedNote() {
|
|
let root = URL(filePath: "/test")
|
|
let (storage, provider) = makeStorage(root: root)
|
|
|
|
let filePath = root.appendingPathComponent("Note").path
|
|
provider.createFile(atPath: filePath, contents: Data(), attributes: nil)
|
|
|
|
let notes = storage.loadNotes()
|
|
|
|
#expect(notes.count == 1)
|
|
#expect(notes.first?.name == "Note")
|
|
}
|
|
|
|
@Test
|
|
func createNoteDeduplicatesNames() {
|
|
let root = URL(filePath: "/test")
|
|
let (storage, provider) = makeStorage(root: root)
|
|
|
|
let existingPath = root.appendingPathComponent("Note").path
|
|
provider.createFile(atPath: existingPath, contents: Data(), attributes: nil)
|
|
|
|
storage.createNote(name: "Note")
|
|
|
|
#expect(provider.files.count == 2)
|
|
|
|
let paths = provider.files.keys
|
|
#expect(paths.contains(where: { $0.contains("Note 1") }))
|
|
}
|
|
|
|
@Test
|
|
func createNoteTwiceCreatesTwoFiles() {
|
|
let root = URL(filePath: "/test")
|
|
let (storage, _) = makeStorage(root: root)
|
|
|
|
storage.createNote(name: "Note")
|
|
storage.createNote(name: "Note")
|
|
|
|
let notes = storage.loadNotes()
|
|
#expect(notes.count == 2)
|
|
}
|
|
}
|