Implement snapshot version history
This commit is contained in:
@@ -89,6 +89,36 @@ final class SongProjectModelTests: XCTestCase {
|
||||
XCTAssertEqual(version.snapshot.instruments, project.instruments)
|
||||
}
|
||||
|
||||
func testVersionHistoryStoresIndependentSnapshots() {
|
||||
var project = SongProject(
|
||||
id: "versioned-project",
|
||||
title: "First Title",
|
||||
idea: "Original idea",
|
||||
genres: [GenreStyle(id: "folk", name: "Folk")]
|
||||
)
|
||||
let createdAt = Date(timeIntervalSince1970: 500)
|
||||
|
||||
let version = project.createVersion(
|
||||
id: "version-1",
|
||||
label: "Initial snapshot",
|
||||
createdAt: createdAt
|
||||
)
|
||||
|
||||
project.title = "Changed Title"
|
||||
project.idea = "Changed idea"
|
||||
project.selectGenreStyle(GenreStyle(id: "electronic", name: "Electronic"))
|
||||
|
||||
XCTAssertEqual(project.versions.count, 1)
|
||||
XCTAssertEqual(project.version(id: "version-1"), version)
|
||||
XCTAssertEqual(project.versions.first?.label, "Initial snapshot")
|
||||
XCTAssertEqual(project.versions.first?.createdAt, createdAt)
|
||||
XCTAssertEqual(project.versions.first?.snapshot.title, "First Title")
|
||||
XCTAssertEqual(project.versions.first?.snapshot.idea, "Original idea")
|
||||
XCTAssertEqual(project.versions.first?.snapshot.genres, [GenreStyle(id: "folk", name: "Folk")])
|
||||
XCTAssertEqual(project.title, "Changed Title")
|
||||
XCTAssertEqual(project.genres.map(\.id), ["folk", "electronic"])
|
||||
}
|
||||
|
||||
func testGenreStylesAreModeledAsMultiSelect() {
|
||||
let arabicPop = GenreStyle(id: "arabic-pop", name: "Arabic Pop")
|
||||
let synthwave = GenreStyle(id: "synthwave", name: "Synthwave")
|
||||
|
||||
Reference in New Issue
Block a user