unit tests
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user