From cf36b2745742373104487f3c4533843a86537a8f Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 6 Sep 2026 18:56:55 +0000 Subject: [PATCH] Wave 4 (partial): live-sync harness + Library screenshots; fix authors null decode Both wave-4 workers hit the 5h session limit ~11 minutes in and were then lost to a sprite suspend. This commit preserves the work that landed before that, independently verified green (assembleDebug + testDebugUnitTest, 94 tests). F1-livesync: - LiveSyncTest + server/live-sync-test.sh: end-to-end exercise against a real PocketBase (auth, push with client ids, pull, tombstones, cover round-trip). Gated behind LIVE_SYNC=1 so the normal test task stays green with no server. - Fix: BookDto.authors must be nullable. PocketBase serializes an unset `json` field as literal null (unlike text/number, which come back ""/0), so decoding any real response with empty authors threw. Found by the live test; no fake had ever reproduced it. - Fix: cover upload derived its media type from the filename instead of hardcoding image/jpeg. F2-release: - ScreenFixtures + LibraryScreenPaparazziTest: library populated and empty, light and dark (4 PNGs). Still owed by wave 4: screenshots for the other five screens, release keystore + signed APK, top-level README. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_016mTs3kQXQsQwonXpEq7aEw --- .../org/modg/bookshelf/data/remote/Dtos.kt | 7 +- .../modg/bookshelf/data/repo/SyncEngine.kt | 23 +- .../modg/bookshelf/ui/detail/DetailScreen.kt | 8 +- .../bookshelf/ui/library/LibraryScreen.kt | 4 +- .../bookshelf/ui/locations/LocationsScreen.kt | 6 +- .../org/modg/bookshelf/ui/scan/ScanScreen.kt | 12 +- .../bookshelf/ui/settings/SettingsScreen.kt | 6 +- .../modg/bookshelf/livesync/LiveSyncTest.kt | 324 ++++++++++++++++++ .../ui/screens/LibraryScreenPaparazziTest.kt | 116 +++++++ .../bookshelf/ui/screens/ScreenFixtures.kt | 124 +++++++ ...t_libraryEmptyLight_library-empty-dark.png | Bin 0 -> 25277 bytes ..._libraryEmptyLight_library-empty-light.png | Bin 0 -> 26924 bytes ...yPopulatedLight_library-populated-dark.png | Bin 0 -> 51469 bytes ...PopulatedLight_library-populated-light.png | Bin 0 -> 52743 bytes logs/F1-livesync.sid | 1 + logs/F2-release.sid | 1 + logs/WAVE3-DONE | 15 + server/live-sync-test.sh | 56 +++ 18 files changed, 682 insertions(+), 21 deletions(-) create mode 100644 app/app/src/test/java/org/modg/bookshelf/livesync/LiveSyncTest.kt create mode 100644 app/app/src/test/java/org/modg/bookshelf/ui/screens/LibraryScreenPaparazziTest.kt create mode 100644 app/app/src/test/java/org/modg/bookshelf/ui/screens/ScreenFixtures.kt create mode 100644 app/app/src/test/snapshots/images/org.modg.bookshelf.ui.screens_LibraryScreenPaparazziTest_libraryEmptyLight_library-empty-dark.png create mode 100644 app/app/src/test/snapshots/images/org.modg.bookshelf.ui.screens_LibraryScreenPaparazziTest_libraryEmptyLight_library-empty-light.png create mode 100644 app/app/src/test/snapshots/images/org.modg.bookshelf.ui.screens_LibraryScreenPaparazziTest_libraryPopulatedLight_library-populated-dark.png create mode 100644 app/app/src/test/snapshots/images/org.modg.bookshelf.ui.screens_LibraryScreenPaparazziTest_libraryPopulatedLight_library-populated-light.png create mode 100644 logs/F1-livesync.sid create mode 100644 logs/F2-release.sid create mode 100644 logs/WAVE3-DONE create mode 100755 server/live-sync-test.sh diff --git a/app/app/src/main/java/org/modg/bookshelf/data/remote/Dtos.kt b/app/app/src/main/java/org/modg/bookshelf/data/remote/Dtos.kt index 4e71d23..489ac3e 100644 --- a/app/app/src/main/java/org/modg/bookshelf/data/remote/Dtos.kt +++ b/app/app/src/main/java/org/modg/bookshelf/data/remote/Dtos.kt @@ -18,7 +18,12 @@ data class BookDto( val id: String = "", val title: String = "", val subtitle: String = "", - val authors: List = emptyList(), + // Nullable: PocketBase's `authors` field is type `json`, and its unset/zero + // value serializes as a raw JSON `null` (unlike text/number fields, which + // come back as "" / 0) -- a non-nullable List here throws decoding a real + // server response the moment authors is empty. Discovered via the wave 4 + // live-server sync test (org.modg.bookshelf.livesync.LiveSyncTest). + val authors: List? = emptyList(), val isbn13: String = "", val isbn10: String = "", val publisher: String = "", diff --git a/app/app/src/main/java/org/modg/bookshelf/data/repo/SyncEngine.kt b/app/app/src/main/java/org/modg/bookshelf/data/repo/SyncEngine.kt index 30df4b8..c71fa81 100644 --- a/app/app/src/main/java/org/modg/bookshelf/data/repo/SyncEngine.kt +++ b/app/app/src/main/java/org/modg/bookshelf/data/repo/SyncEngine.kt @@ -171,7 +171,7 @@ class SyncEngine( return } try { - val body = file.asRequestBody("image/jpeg".toMediaTypeOrNull()) + val body = file.asRequestBody(guessImageMediaType(file.name)) val part = MultipartBody.Part.createFormData("cover", file.name, body) val response = api.uploadBookCover(synced.id, part) val baseUrl = settingsStore.serverUrl.first() @@ -291,6 +291,25 @@ class SyncEngine( } } +/** + * PocketBase's `cover` field is a generic image-mimes file field; it does not + * infer the multipart part's Content-Type from the actual bytes, only from + * whatever we declare here. [BookRepository]'s downloader always writes + * `.jpg` today, but [BookEntity.localCoverPath] is a plain file path with no + * other type guarantee, so this derives the media type from the extension + * instead of hardcoding `image/jpeg` — a mismatch would silently mislabel + * (and, on stricter servers, could get the upload rejected). + */ +private fun guessImageMediaType(fileName: String): okhttp3.MediaType? { + val type = when (fileName.substringAfterLast('.', "").lowercase()) { + "png" -> "image/png" + "webp" -> "image/webp" + "gif" -> "image/gif" + else -> "image/jpeg" + } + return type.toMediaTypeOrNull() +} + // ---------------------------------------------------------------- mapping private fun BookEntity.toDto(): BookDto = BookDto( @@ -318,7 +337,7 @@ private fun BookDto.toEntity(updatedMillis: Long, localCoverPath: String?, cover id = id, title = title, subtitle = subtitle.ifBlank { null }, - authorsJson = encodeAuthors(authors), + authorsJson = encodeAuthors(authors.orEmpty()), isbn13 = isbn13.ifBlank { null }, isbn10 = isbn10.ifBlank { null }, publisher = publisher.ifBlank { null }, diff --git a/app/app/src/main/java/org/modg/bookshelf/ui/detail/DetailScreen.kt b/app/app/src/main/java/org/modg/bookshelf/ui/detail/DetailScreen.kt index 449287d..99f5bc6 100644 --- a/app/app/src/main/java/org/modg/bookshelf/ui/detail/DetailScreen.kt +++ b/app/app/src/main/java/org/modg/bookshelf/ui/detail/DetailScreen.kt @@ -175,7 +175,7 @@ fun DetailScreen( } @Composable -private fun BookHeader(book: BookEntity) { +internal fun BookHeader(book: BookEntity) { Row(modifier = Modifier.fillMaxWidth()) { BookCover( coverUrl = book.coverUrl ?: book.coverSourceUrl, @@ -222,7 +222,7 @@ private fun InfoLine(label: String, value: String?) { } @Composable -private fun DescriptionSection(description: String?) { +internal fun DescriptionSection(description: String?) { if (description.isNullOrBlank()) return var expanded by remember { mutableStateOf(false) } Column { @@ -245,7 +245,7 @@ private fun DescriptionSection(description: String?) { } @Composable -private fun NotesSection(book: BookEntity, onSave: (String) -> Unit) { +internal fun NotesSection(book: BookEntity, onSave: (String) -> Unit) { var notes by remember(book.id) { mutableStateOf(book.notes.orEmpty()) } Column { Text(text = "Notes", style = MaterialTheme.typography.titleSmall, color = MaterialTheme.colorScheme.onSurfaceVariant) @@ -267,7 +267,7 @@ private fun NotesSection(book: BookEntity, onSave: (String) -> Unit) { } @Composable -private fun LocationSection( +internal fun LocationSection( book: BookEntity, bookcases: List, shelves: List, diff --git a/app/app/src/main/java/org/modg/bookshelf/ui/library/LibraryScreen.kt b/app/app/src/main/java/org/modg/bookshelf/ui/library/LibraryScreen.kt index 25148a5..0a77d91 100644 --- a/app/app/src/main/java/org/modg/bookshelf/ui/library/LibraryScreen.kt +++ b/app/app/src/main/java/org/modg/bookshelf/ui/library/LibraryScreen.kt @@ -160,7 +160,7 @@ fun LibraryScreen( } @Composable -private fun LibraryToolbar( +internal fun LibraryToolbar( query: String, onQueryChange: (String) -> Unit, sortOption: LibrarySortOption, @@ -257,7 +257,7 @@ private fun LibraryToolbar( } @Composable -private fun LibraryBookCard(book: BookEntity, onClick: () -> Unit) { +internal fun LibraryBookCard(book: BookEntity, onClick: () -> Unit) { Column(modifier = Modifier.fillMaxWidth().clickable(onClick = onClick)) { BookCover( coverUrl = book.coverUrl ?: book.coverSourceUrl, diff --git a/app/app/src/main/java/org/modg/bookshelf/ui/locations/LocationsScreen.kt b/app/app/src/main/java/org/modg/bookshelf/ui/locations/LocationsScreen.kt index 8a6acd3..a1f2e17 100644 --- a/app/app/src/main/java/org/modg/bookshelf/ui/locations/LocationsScreen.kt +++ b/app/app/src/main/java/org/modg/bookshelf/ui/locations/LocationsScreen.kt @@ -166,7 +166,7 @@ fun LocationsScreen( } @Composable -private fun BookcaseRow( +internal fun BookcaseRow( bookcaseUi: BookcaseUi, onEdit: () -> Unit, onDelete: () -> Unit, @@ -220,7 +220,7 @@ private fun BookcaseRow( } @Composable -private fun ShelfRow( +internal fun ShelfRow( shelfUi: ShelfUi, onClick: () -> Unit, onEdit: () -> Unit, @@ -252,7 +252,7 @@ private fun ShelfRow( } @Composable -private fun ReorderButtons(onMoveUp: () -> Unit, onMoveDown: () -> Unit) { +internal fun ReorderButtons(onMoveUp: () -> Unit, onMoveDown: () -> Unit) { Row { IconButton(onClick = onMoveUp) { Icon(Icons.Filled.ArrowDropUp, contentDescription = "Move up") } IconButton(onClick = onMoveDown) { Icon(Icons.Filled.ArrowDropDown, contentDescription = "Move down") } diff --git a/app/app/src/main/java/org/modg/bookshelf/ui/scan/ScanScreen.kt b/app/app/src/main/java/org/modg/bookshelf/ui/scan/ScanScreen.kt index 891aad9..727e416 100644 --- a/app/app/src/main/java/org/modg/bookshelf/ui/scan/ScanScreen.kt +++ b/app/app/src/main/java/org/modg/bookshelf/ui/scan/ScanScreen.kt @@ -222,7 +222,7 @@ private fun CameraPreview(controller: ScannerController, torchEnabled: Boolean) } @Composable -private fun ScanReticle(modifier: Modifier = Modifier) { +internal fun ScanReticle(modifier: Modifier = Modifier) { Column(modifier = modifier, horizontalAlignment = Alignment.CenterHorizontally) { Box( modifier = Modifier @@ -239,7 +239,7 @@ private fun ScanReticle(modifier: Modifier = Modifier) { } @Composable -private fun SessionBadge(count: Int, modifier: Modifier = Modifier) { +internal fun SessionBadge(count: Int, modifier: Modifier = Modifier) { if (count == 0) return Text( text = "Added this session: $count", @@ -252,7 +252,7 @@ private fun SessionBadge(count: Int, modifier: Modifier = Modifier) { } @Composable -private fun PermissionDeniedContent(onRequestAgain: () -> Unit) { +internal fun PermissionDeniedContent(onRequestAgain: () -> Unit) { EmptyState( title = "Camera access needed", message = "Bookshelf needs the camera to scan barcodes. Grant permission to continue.", @@ -261,7 +261,7 @@ private fun PermissionDeniedContent(onRequestAgain: () -> Unit) { } @Composable -private fun FoundBookSheet( +internal fun FoundBookSheet( metadata: BookMetadata, duplicate: DuplicateStatus, bookcases: List, @@ -309,7 +309,7 @@ private fun FoundBookSheet( } @Composable -private fun ManualEntrySheet( +internal fun ManualEntrySheet( isbn13: String, bookcases: List, shelves: List, @@ -362,7 +362,7 @@ private fun ManualEntrySheet( } @Composable -private fun ShelfPicker( +internal fun ShelfPicker( bookcases: List, shelves: List, selectedShelfId: String?, diff --git a/app/app/src/main/java/org/modg/bookshelf/ui/settings/SettingsScreen.kt b/app/app/src/main/java/org/modg/bookshelf/ui/settings/SettingsScreen.kt index 22b2b86..ac068ac 100644 --- a/app/app/src/main/java/org/modg/bookshelf/ui/settings/SettingsScreen.kt +++ b/app/app/src/main/java/org/modg/bookshelf/ui/settings/SettingsScreen.kt @@ -120,7 +120,7 @@ fun SettingsScreen( } @Composable -private fun SectionHeading(text: String) { +internal fun SectionHeading(text: String) { Text( text = text, style = MaterialTheme.typography.titleMedium, @@ -129,7 +129,7 @@ private fun SectionHeading(text: String) { } @Composable -private fun InfoRow(label: String, value: String) { +internal fun InfoRow(label: String, value: String) { Row( modifier = Modifier.fillMaxWidth().padding(top = 8.dp), horizontalArrangement = Arrangement.SpaceBetween, @@ -146,7 +146,7 @@ private fun syncLabel(state: SettingsUiState): String = when { else -> "Not synced yet" } -private fun formatLastSync(epochMillis: Long?): String { +internal fun formatLastSync(epochMillis: Long?): String { if (epochMillis == null) return "Never" val elapsed = System.currentTimeMillis() - epochMillis return when { diff --git a/app/app/src/test/java/org/modg/bookshelf/livesync/LiveSyncTest.kt b/app/app/src/test/java/org/modg/bookshelf/livesync/LiveSyncTest.kt new file mode 100644 index 0000000..31b904b --- /dev/null +++ b/app/app/src/test/java/org/modg/bookshelf/livesync/LiveSyncTest.kt @@ -0,0 +1,324 @@ +package org.modg.bookshelf.livesync + +import android.content.Context +import androidx.room.Room +import androidx.test.core.app.ApplicationProvider +import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory +import kotlinx.coroutines.test.runTest +import kotlinx.coroutines.flow.first +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.boolean +import kotlinx.serialization.json.jsonObject +import kotlinx.serialization.json.jsonPrimitive +import okhttp3.MediaType.Companion.toMediaType +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.RequestBody.Companion.toRequestBody +import org.junit.After +import org.junit.Assert.assertArrayEquals +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNotNull +import org.junit.Assert.assertNull +import org.junit.Assert.assertTrue +import org.junit.Assume.assumeTrue +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.modg.bookshelf.data.local.BookEntity +import org.modg.bookshelf.data.local.BookcaseEntity +import org.modg.bookshelf.data.local.BookshelfDatabase +import org.modg.bookshelf.data.local.IdGenerator +import org.modg.bookshelf.data.local.ShelfEntity +import org.modg.bookshelf.data.local.SyncState +import org.modg.bookshelf.data.prefs.SettingsStore +import org.modg.bookshelf.data.remote.PbAuthInterceptor +import org.modg.bookshelf.data.remote.PocketBaseApi +import org.modg.bookshelf.data.repo.AuthRepository +import org.modg.bookshelf.data.repo.SyncEngine +import org.modg.bookshelf.data.repo.SyncResult +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config +import retrofit2.Retrofit +import java.io.ByteArrayOutputStream +import java.io.File +import java.util.zip.CRC32 +import java.util.zip.Deflater + +/** + * Wave 4 (F1): proves the sync + cover pipeline against a REAL PocketBase, + * not the fakes every other test in this repo uses. See docs/HANDOFF.md, + * "known gaps carried into wave 4" #1 — this closes that gap. + * + * NEVER runs as part of the default `testDebugUnitTest` suite: gated behind + * the `LIVE_SYNC` environment variable via [assumeTrue], so machines with no + * PocketBase running stay green (JUnit reports this test as SKIPPED, not + * failed or passed). Invoke it explicitly with `server/live-sync-test.sh`, + * which starts from a throwaway app user and sets the env vars below. + * + * Deliberately does NOT go through [PocketBaseApi]/Retrofit for its own + * assertions (only for driving [SyncEngine] itself, exactly like production + * code would) — the read-back/mutate/download helpers at the bottom hit the + * documented REST endpoints directly with a plain OkHttpClient, so this is + * really checking the wire contract and not just replaying our own client + * code back at itself. + */ +@RunWith(RobolectricTestRunner::class) +@Config(sdk = [34]) +class LiveSyncTest { + + private val baseUrl = System.getenv("LIVE_SYNC_BASE_URL") ?: "http://127.0.0.1:8090" + private val email = System.getenv("LIVE_SYNC_EMAIL") ?: "livetest@example.com" + private val password = System.getenv("LIVE_SYNC_PASSWORD") ?: "livetest-passw0rd-1" + + private val json = Json { ignoreUnknownKeys = true; encodeDefaults = false; explicitNulls = false } + private val plainHttp = OkHttpClient() + + private lateinit var db: BookshelfDatabase + private lateinit var settingsStore: SettingsStore + private lateinit var api: PocketBaseApi + private lateinit var authRepository: AuthRepository + private lateinit var engine: SyncEngine + private var token: String = "" + + @Before + fun setUp() { + assumeTrue( + "Live PocketBase test skipped (set LIVE_SYNC=1; see server/live-sync-test.sh)", + System.getenv("LIVE_SYNC") != null, + ) + + val context = ApplicationProvider.getApplicationContext() + db = Room.inMemoryDatabaseBuilder(context, BookshelfDatabase::class.java) + .allowMainThreadQueries() + .build() + settingsStore = SettingsStore(context) + runTest { settingsStore.setServerUrl(baseUrl) } + + // Mirrors AppContainer's real wiring (Retrofit + PbAuthInterceptor reading + // a token supplier) rather than inventing a parallel client shape. + val okHttpClient = OkHttpClient.Builder() + .addInterceptor(PbAuthInterceptor { token.ifBlank { null } }) + .build() + api = Retrofit.Builder() + .baseUrl("$baseUrl/") + .client(okHttpClient) + .addConverterFactory(json.asConverterFactory("application/json".toMediaType())) + .build() + .create(PocketBaseApi::class.java) + + authRepository = AuthRepository({ api }, settingsStore) + engine = SyncEngine( + apiProvider = { api }, + bookDao = db.bookDao(), + bookcaseDao = db.bookcaseDao(), + shelfDao = db.shelfDao(), + settingsStore = settingsStore, + ) + } + + @After + fun tearDown() { + if (::db.isInitialized) db.close() + } + + @Test + fun `end to end sync and cover round trip against a live PocketBase`() = runTest { + // ---- 1. AUTH: login as the throwaway test user, token feeds PbAuthInterceptor + val loginResult = authRepository.login(email, password) + assertTrue("login failed: ${loginResult.exceptionOrNull()}", loginResult.isSuccess) + token = settingsStore.authToken.first().orEmpty() + assertTrue("no auth token persisted after login", token.isNotBlank()) + + // ---- 2. PUSH: bookcase -> shelf -> book, client-generated 15-char ids, + // book carries a cover from the very first create push (also covers #5). + val bookcaseId = IdGenerator.newId() + val shelfId = IdGenerator.newId() + val bookId = IdGenerator.newId() + val now = System.currentTimeMillis() + + db.bookcaseDao().upsert( + BookcaseEntity(id = bookcaseId, name = "Live Sync Case", createdAt = now, updatedAt = now, syncState = SyncState.PENDING_CREATE), + ) + db.shelfDao().upsert( + ShelfEntity(id = shelfId, bookcaseId = bookcaseId, label = "Top Shelf", createdAt = now, updatedAt = now, syncState = SyncState.PENDING_CREATE), + ) + val coverBytes = tinyPng() + val coverFile = File.createTempFile("livesync-cover", ".png").apply { writeBytes(coverBytes) } + db.bookDao().upsert( + BookEntity( + id = bookId, title = "Live Sync Test Book", shelfId = shelfId, + createdAt = now, updatedAt = now, syncState = SyncState.PENDING_CREATE, + localCoverPath = coverFile.absolutePath, + ), + ) + + val firstSync = engine.sync() + assertTrue("first sync (push) failed: $firstSync", firstSync is SyncResult.Success) + + // Ids preserved and NOT remapped -- verified by reading back through the + // raw REST API, independent of our own DAOs/Retrofit client. + val remoteBookcase = getRecord("bookcases", bookcaseId) + val remoteShelf = getRecord("shelves", shelfId) + var remoteBook = getRecord("books", bookId) + assertEquals(bookcaseId, remoteBookcase["id"]?.jsonPrimitive?.content) + assertEquals(shelfId, remoteShelf["id"]?.jsonPrimitive?.content) + assertEquals(bookId, remoteBook["id"]?.jsonPrimitive?.content) + assertEquals(bookcaseId, remoteShelf["bookcase"]?.jsonPrimitive?.content) + assertEquals(shelfId, remoteBook["shelf"]?.jsonPrimitive?.content) + + // ---- 5. COVER ROUND-TRIP: fetch the uploaded file back and compare bytes. + val coverFilename = remoteBook["cover"]?.jsonPrimitive?.content.orEmpty() + assertTrue("server record has no cover filename -- upload did not land", coverFilename.isNotBlank()) + val downloadedCover = getFileBytes("books", bookId, coverFilename) + assertArrayEquals("downloaded cover bytes must match what was uploaded", coverBytes, downloadedCover) + + val localAfterFirstSync = db.bookDao().getById(bookId) + assertEquals(SyncState.SYNCED, localAfterFirstSync?.syncState) + assertNull("localCoverPath must be cleared once the upload succeeds", localAfterFirstSync?.localCoverPath) + assertTrue( + "coverUrl should point at the uploaded file", + localAfterFirstSync?.coverUrl?.endsWith("/api/files/books/$bookId/$coverFilename") == true, + ) + + // ---- 3. PULL + last-write-wins: mutate server-side (as if another + // device edited it), then pull and confirm the newer remote copy wins. + Thread.sleep(1100) // PocketBase `updated` has millisecond precision; force a distinct value. + rawPatch("books", bookId, """{"title":"Server-Side Edit"}""") + val secondSync = engine.sync() + assertTrue("second sync (pull) failed: $secondSync", secondSync is SyncResult.Success) + val afterPull = db.bookDao().getById(bookId) + assertEquals("LWW should have pulled the server-side edit", "Server-Side Edit", afterPull?.title) + + // ---- 6. CURSOR: a second, immediate pull is a no-op -- no duplicate rows, + // cursor does not regress. + val cursorAfterPull = settingsStore.cursorFor(SettingsStore.COLLECTION_BOOKS).first() + val thirdSync = engine.sync() + assertTrue("third sync failed: $thirdSync", thirdSync is SyncResult.Success) + val cursorAfterNoOpPull = settingsStore.cursorFor(SettingsStore.COLLECTION_BOOKS).first() + assertEquals("cursor must not move on a no-op pull", cursorAfterPull, cursorAfterNoOpPull) + val stillOne = db.bookDao().getById(bookId) + assertEquals("no duplicate/second row for the same id", "Server-Side Edit", stillOne?.title) + + // ---- 4. TOMBSTONE: soft-delete locally, push, confirm deleted=true + // propagates and the record is filtered out of local (non-tombstone) queries. + val toDelete = db.bookDao().getById(bookId)!! + db.bookDao().upsert(toDelete.copy(deleted = true, syncState = SyncState.PENDING_DELETE, updatedAt = System.currentTimeMillis())) + val deleteSync = engine.sync() + assertTrue("delete sync failed: $deleteSync", deleteSync is SyncResult.Success) + + remoteBook = getRecord("books", bookId) + assertEquals(true, remoteBook["deleted"]?.jsonPrimitive?.boolean) + assertNull("soft-deleted record must be filtered from normal local reads", db.bookDao().getById(bookId)) + assertNotNull("tombstone row must still exist locally for sync bookkeeping", db.bookDao().getByIdIncludingDeleted(bookId)) + + // Best-effort cleanup so repeated runs don't accumulate junk on the server. + rawDelete("books", bookId) + rawDelete("shelves", shelfId) + rawDelete("bookcases", bookcaseId) + } + + // ------------------------------------------------------------------ + // Raw REST helpers -- intentionally bypass PocketBaseApi/Retrofit so the + // assertions above check the actual documented HTTP contract. + // ------------------------------------------------------------------ + + private fun getRecord(collection: String, id: String): kotlinx.serialization.json.JsonObject { + val request = Request.Builder() + .url("$baseUrl/api/collections/$collection/records/$id") + .header("Authorization", token) + .build() + plainHttp.newCall(request).execute().use { resp -> + val bodyText = resp.body.string() + assertTrue("GET $collection/$id failed: HTTP ${resp.code} $bodyText", resp.isSuccessful) + return json.parseToJsonElement(bodyText).jsonObject + } + } + + private fun rawPatch(collection: String, id: String, jsonBody: String) { + val body = jsonBody.toRequestBody("application/json".toMediaType()) + val request = Request.Builder() + .url("$baseUrl/api/collections/$collection/records/$id") + .header("Authorization", token) + .patch(body) + .build() + plainHttp.newCall(request).execute().use { resp -> + val bodyText = resp.body.string() + assertTrue("PATCH $collection/$id failed: HTTP ${resp.code} $bodyText", resp.isSuccessful) + } + } + + private fun rawDelete(collection: String, id: String) { + val request = Request.Builder() + .url("$baseUrl/api/collections/$collection/records/$id") + .header("Authorization", token) + .delete() + .build() + runCatching { plainHttp.newCall(request).execute().close() } + } + + private fun getFileBytes(collection: String, id: String, filename: String): ByteArray { + val request = Request.Builder() + .url("$baseUrl/api/files/$collection/$id/$filename") + .header("Authorization", token) + .build() + plainHttp.newCall(request).execute().use { resp -> + assertTrue("file download failed: HTTP ${resp.code}", resp.isSuccessful) + return resp.body.bytes() + } + } + + /** + * Hand-assembled minimal valid 1x1 PNG (no ImageIO/asset/network dependency + * per the task -- must not depend on openlibrary.org or any external + * service being reachable). Single opaque red pixel. + */ + private fun tinyPng(): ByteArray { + fun chunk(type: String, data: ByteArray): ByteArray { + val typeAndData = type.toByteArray(Charsets.US_ASCII) + data + val crc = CRC32().apply { update(typeAndData) }.value + val out = ByteArrayOutputStream() + out.write(intToBytes(data.size)) + out.write(typeAndData) + out.write(intToBytes(crc.toInt())) + return out.toByteArray() + } + + val ihdr = ByteArrayOutputStream().apply { + write(intToBytes(1)) // width + write(intToBytes(1)) // height + write(8) // bit depth + write(2) // color type: truecolor (RGB) + write(0) // compression + write(0) // filter + write(0) // interlace + }.toByteArray() + + // One scanline: filter-type byte (0 = none) + one RGB pixel (opaque red). + val raw = byteArrayOf(0, 0xFF.toByte(), 0x00, 0x00) + val compressed = ByteArrayOutputStream().also { out -> + val deflater = Deflater() + deflater.setInput(raw) + deflater.finish() + val buf = ByteArray(64) + while (!deflater.finished()) { + val n = deflater.deflate(buf) + out.write(buf, 0, n) + } + }.toByteArray() + + val signature = byteArrayOf(0x89.toByte(), 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A) + val out = ByteArrayOutputStream() + out.write(signature) + out.write(chunk("IHDR", ihdr)) + out.write(chunk("IDAT", compressed)) + out.write(chunk("IEND", ByteArray(0))) + return out.toByteArray() + } + + private fun intToBytes(value: Int): ByteArray = byteArrayOf( + (value ushr 24).toByte(), + (value ushr 16).toByte(), + (value ushr 8).toByte(), + value.toByte(), + ) +} diff --git a/app/app/src/test/java/org/modg/bookshelf/ui/screens/LibraryScreenPaparazziTest.kt b/app/app/src/test/java/org/modg/bookshelf/ui/screens/LibraryScreenPaparazziTest.kt new file mode 100644 index 0000000..0b964e8 --- /dev/null +++ b/app/app/src/test/java/org/modg/bookshelf/ui/screens/LibraryScreenPaparazziTest.kt @@ -0,0 +1,116 @@ +package org.modg.bookshelf.ui.screens + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.grid.GridCells +import androidx.compose.foundation.lazy.grid.LazyVerticalGrid +import androidx.compose.foundation.lazy.grid.items +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.QrCodeScanner +import androidx.compose.material.icons.outlined.Settings +import androidx.compose.material.icons.outlined.Warehouse +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.FloatingActionButton +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.unit.dp +import app.cash.paparazzi.DeviceConfig +import app.cash.paparazzi.Paparazzi +import org.junit.Rule +import org.junit.Test +import org.modg.bookshelf.data.local.BookEntity +import org.modg.bookshelf.ui.components.BookshelfScaffold +import org.modg.bookshelf.ui.components.EmptyState +import org.modg.bookshelf.ui.components.PaperSurface +import org.modg.bookshelf.ui.components.PrimaryButton +import org.modg.bookshelf.ui.components.SyncStatus +import org.modg.bookshelf.ui.components.SyncStatusBar +import org.modg.bookshelf.ui.library.LibraryBookCard +import org.modg.bookshelf.ui.library.LibraryFilter +import org.modg.bookshelf.ui.library.LibraryScreen +import org.modg.bookshelf.ui.library.LibrarySortOption +import org.modg.bookshelf.ui.library.LibraryToolbar +import org.modg.bookshelf.ui.theme.BookshelfTheme + +/** + * SPEC.md "library" screen — cover grid, search/filter/sort toolbar, sync + * status line, empty state. Real screen shell (see [LibraryScreen]) rebuilt + * here around the real [LibraryToolbar]/[LibraryBookCard] with static fixture + * data — see [ScreenFixtures] for why a real [org.modg.bookshelf.AppContainer] + * can't be used inside Paparazzi. + */ +@OptIn(ExperimentalMaterial3Api::class) +class LibraryScreenPaparazziTest { + + @get:Rule + val paparazzi = Paparazzi(deviceConfig = DeviceConfig.PIXEL_6) + + @Test + fun libraryPopulatedLight() = snapshotBoth("library-populated") { Populated() } + + @Test + fun libraryEmptyLight() = snapshotBoth("library-empty") { Empty() } + + @Composable + private fun Populated() = Shell(books = ScreenFixtures.books, syncStatus = SyncStatus.Synced, syncLabel = "Synced • 2m ago") + + @Composable + private fun Empty() = Shell(books = emptyList(), syncStatus = SyncStatus.Offline, syncLabel = "Not synced yet") + + @Composable + private fun Shell(books: List, syncStatus: SyncStatus, syncLabel: String) { + BookshelfScaffold( + title = "Bookshelf", + actions = { + IconButton(onClick = {}) { Icon(Icons.Outlined.Warehouse, contentDescription = "Bookcases & shelves") } + IconButton(onClick = {}) { Icon(Icons.Outlined.Settings, contentDescription = "Settings") } + }, + floatingActionButton = { + FloatingActionButton(onClick = {}) { Icon(Icons.Outlined.QrCodeScanner, contentDescription = "Scan a book") } + }, + syncStatusBar = { SyncStatusBar(status = syncStatus, label = syncLabel) }, + ) { innerPadding -> + PaperSurface(modifier = Modifier.fillMaxSize()) { + Column(modifier = Modifier.fillMaxSize()) { + LibraryToolbar( + query = "", + onQueryChange = {}, + sortOption = LibrarySortOption.TITLE, + onSortOptionChange = {}, + filter = LibraryFilter.All, + onFilterChange = {}, + bookcases = ScreenFixtures.bookcases, + shelves = ScreenFixtures.shelves, + ) + if (books.isEmpty()) { + EmptyState( + title = "Your shelves are empty", + message = "Scan a barcode to add your first book.", + action = { PrimaryButton(text = "Scan a book", onClick = {}) }, + ) + } else { + LazyVerticalGrid( + columns = GridCells.Adaptive(minSize = 110.dp), + contentPadding = PaddingValues(16.dp), + horizontalArrangement = Arrangement.spacedBy(12.dp), + verticalArrangement = Arrangement.spacedBy(16.dp), + modifier = Modifier.padding(innerPadding).fillMaxSize(), + ) { + items(books, key = { it.id }) { book -> LibraryBookCard(book = book, onClick = {}) } + } + } + } + } + } + } + + private fun snapshotBoth(name: String, content: @Composable () -> Unit) { + paparazzi.snapshot(name = "$name-light") { BookshelfTheme(darkTheme = false) { content() } } + paparazzi.snapshot(name = "$name-dark") { BookshelfTheme(darkTheme = true) { content() } } + } +} diff --git a/app/app/src/test/java/org/modg/bookshelf/ui/screens/ScreenFixtures.kt b/app/app/src/test/java/org/modg/bookshelf/ui/screens/ScreenFixtures.kt new file mode 100644 index 0000000..e646a11 --- /dev/null +++ b/app/app/src/test/java/org/modg/bookshelf/ui/screens/ScreenFixtures.kt @@ -0,0 +1,124 @@ +package org.modg.bookshelf.ui.screens + +import org.modg.bookshelf.data.local.BookEntity +import org.modg.bookshelf.data.local.BookcaseEntity +import org.modg.bookshelf.data.local.ShelfEntity +import org.modg.bookshelf.data.local.SyncState +import org.modg.bookshelf.data.repo.encodeAuthors + +/** + * Static fixture data shared by the wave-4 (F2) screen Paparazzi tests. + * + * Why static fixtures instead of driving the real screens through + * [org.modg.bookshelf.AppContainer]: every screen's ViewModel reaches Room + * (via a repository) and/or builds an OkHttpClient (SetupViewModel's + * reachability probe), and both blow up inside Paparazzi's headless + * rendering sandbox — confirmed empirically before writing these tests: + * - Room: any real query throws `NullPointerException` out of + * `SQLiteConnection.setJournalMode` — the sandbox has no native SQLite. + * - OkHttpClient: constructing one throws `NoClassDefFoundError` on + * `com.android.org.conscrypt.TrustManagerImpl` — no real Android platform + * TLS stack on the host JVM. + * Neither is a production bug; both are artifacts of Paparazzi's JVM-only + * environment. So these tests render the screens' actual presentational + * composables (the ones each screen file exposes at `internal` visibility + * for this purpose — no behavior changed, only widened visibility) fed with + * plain in-memory data, and rebuild each screen's thin Scaffold/layout shell + * inline. See docs/BUILD_NOTES.md and the wave-4 report for the full story. + */ +object ScreenFixtures { + + val livingRoom = BookcaseEntity( + id = "bc-living-room", + name = "Living Room", + note = "Built-ins by the window", + position = 0, + createdAt = 1, + updatedAt = 1, + syncState = SyncState.SYNCED, + ) + val study = BookcaseEntity( + id = "bc-study", + name = "Study", + note = null, + position = 1, + createdAt = 1, + updatedAt = 1, + syncState = SyncState.SYNCED, + ) + + val topShelf = ShelfEntity(id = "sh-top", bookcaseId = livingRoom.id, label = "Top shelf — fiction", position = 0, createdAt = 1, updatedAt = 1, syncState = SyncState.SYNCED) + val bottomShelf = ShelfEntity(id = "sh-bottom", bookcaseId = livingRoom.id, label = "Bottom shelf — reference", position = 1, createdAt = 1, updatedAt = 1, syncState = SyncState.SYNCED) + val deskShelf = ShelfEntity(id = "sh-desk", bookcaseId = study.id, label = "Desk shelf", position = 0, createdAt = 1, updatedAt = 1, syncState = SyncState.SYNCED) + + val bookcases = listOf(livingRoom, study) + val shelves = listOf(topShelf, bottomShelf, deskShelf) + + private fun book( + id: String, + title: String, + authors: List, + subtitle: String? = null, + isbn13: String? = null, + publisher: String? = null, + publishedDate: String? = null, + pageCount: Int? = null, + description: String? = null, + shelfId: String? = null, + notes: String? = null, + createdAt: Long = 1, + ) = BookEntity( + id = id, + title = title, + subtitle = subtitle, + authorsJson = encodeAuthors(authors), + isbn13 = isbn13, + isbn10 = null, + publisher = publisher, + publishedDate = publishedDate, + pageCount = pageCount, + description = description, + coverUrl = null, // placeholder art only — see task instructions, no network in Paparazzi anyway + coverSourceUrl = null, + shelfId = shelfId, + notes = notes, + addedBy = null, + createdAt = createdAt, + updatedAt = createdAt, + syncState = SyncState.SYNCED, + ) + + /** A plausible shelf of a two-person household's books, spread across both bookcases. */ + val books = listOf( + book("b1", "Dune", listOf("Frank Herbert"), isbn13 = "9780441013593", publisher = "Ace", publishedDate = "1965", pageCount = 412, shelfId = topShelf.id), + book("b2", "The Hobbit", listOf("J.R.R. Tolkien"), isbn13 = "9780547928227", publisher = "Houghton Mifflin", publishedDate = "1937", pageCount = 310, shelfId = topShelf.id), + book("b3", "A Wizard of Earthsea", listOf("Ursula K. Le Guin"), isbn13 = "9780547773742", publisher = "Parnassus Press", publishedDate = "1968", pageCount = 183, shelfId = topShelf.id), + book("b4", "Piranesi", listOf("Susanna Clarke"), isbn13 = "9781635575637", publisher = "Bloomsbury", publishedDate = "2020", pageCount = 245, shelfId = topShelf.id), + book("b5", "The Left Hand of Darkness", listOf("Ursula K. Le Guin"), isbn13 = "9780441478125", publisher = "Ace", publishedDate = "1969", pageCount = 304, shelfId = bottomShelf.id), + book("b6", "On Cooking", listOf("Sarah R. Labensky", "Alan M. Hause"), publisher = "Pearson", publishedDate = "2017", pageCount = 1200, shelfId = bottomShelf.id), + book("b7", "The Way of Kings", listOf("Brandon Sanderson"), subtitle = "The Stormlight Archive, Book One", isbn13 = "9780765326355", publisher = "Tor", publishedDate = "2010", pageCount = 1007, shelfId = deskShelf.id), + book("b8", "Klara and the Sun", listOf("Kazuo Ishiguro"), isbn13 = "9780571364879", publisher = "Faber & Faber", publishedDate = "2021", pageCount = 303, shelfId = deskShelf.id), + book("b9", "Project Hail Mary", listOf("Andy Weir"), isbn13 = "9780593135204", publisher = "Ballantine", publishedDate = "2021", pageCount = 476, shelfId = deskShelf.id), + book("b10", "Circe", listOf("Madeline Miller"), isbn13 = "9780316556347", publisher = "Little, Brown", publishedDate = "2018", pageCount = 393, shelfId = null), + book("b11", "The Fifth Season", listOf("N.K. Jemisin"), subtitle = "The Broken Earth, Book One", isbn13 = "9780316229296", publisher = "Orbit", publishedDate = "2015", pageCount = 468, shelfId = null), + book("b12", "Howl's Moving Castle", listOf("Diana Wynne Jones"), isbn13 = "9780064410670", publisher = "Greenwillow Books", publishedDate = "1986", pageCount = 329, shelfId = topShelf.id), + ) + + /** The book shown on the detail screen — has notes, a description, and a shelf, so every section renders. */ + val detailBook = book( + id = "b-detail", + title = "Piranesi", + authors = listOf("Susanna Clarke"), + isbn13 = "9781635575637", + publisher = "Bloomsbury Publishing", + publishedDate = "September 15, 2020", + pageCount = 245, + description = "Piranesi lives in the House. Perhaps he always has. In his notebooks, he " + + "makes a clear and careful record of its wonders: the labyrinth of halls, the thousands upon " + + "thousands of statues, the tides that thunder up staircases, the clouds that move in slow " + + "procession through the upper halls. On Tuesdays and Fridays Piranesi sees the Other, who needs " + + "help with research into A Great and Secret Knowledge.", + shelfId = topShelf.id, + notes = "First edition, gift from Mom. Reread every autumn.", + ) +} diff --git a/app/app/src/test/snapshots/images/org.modg.bookshelf.ui.screens_LibraryScreenPaparazziTest_libraryEmptyLight_library-empty-dark.png b/app/app/src/test/snapshots/images/org.modg.bookshelf.ui.screens_LibraryScreenPaparazziTest_libraryEmptyLight_library-empty-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..6fdb4705f61c6e0fc4d1570c24b5c668ca1bf88f GIT binary patch literal 25277 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 z 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 D0+C6f literal 0 HcmV?d00001 diff --git a/app/app/src/test/snapshots/images/org.modg.bookshelf.ui.screens_LibraryScreenPaparazziTest_libraryPopulatedLight_library-populated-dark.png b/app/app/src/test/snapshots/images/org.modg.bookshelf.ui.screens_LibraryScreenPaparazziTest_libraryPopulatedLight_library-populated-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..dbecbd139ecd955070b7b02776552ed115834502 GIT binary patch literal 51469 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
KrU^P^S%a(ryow2}3^D{FxzGZG0mgik{j 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 } +ok() { printf '\033[32m✓\033[0m %s\n' "$*" >&2; } +fail() { printf '\033[31m✗ ERROR:\033[0m %s\n' "$*" >&2; exit 1; } + +command -v curl >/dev/null 2>&1 || fail "curl is required but not installed." + +if ! curl -sf -o /dev/null --connect-timeout 5 "$PB_URL/api/health"; then + fail "Cannot reach $PB_URL/api/health -- is PocketBase running? (sprite-env services restart pocketbase)" +fi + +log "Ensuring throwaway test user exists: $LIVE_EMAIL" +CREATE_OUTPUT="$(PB_URL="$PB_URL" "$SCRIPT_DIR/create-user.sh" "$LIVE_EMAIL" "$LIVE_PASSWORD" "Live Sync Test" 2>&1)" +if echo "$CREATE_OUTPUT" | grep -qi "not_unique\|already in use\|Created user"; then + ok "Test user ready" +else + log "$CREATE_OUTPUT" + fail "Could not create or confirm the throwaway test user." +fi + +export LIVE_SYNC=1 +export LIVE_SYNC_BASE_URL="$PB_URL" +export LIVE_SYNC_EMAIL="$LIVE_EMAIL" +export LIVE_SYNC_PASSWORD="$LIVE_PASSWORD" + +log "Running LiveSyncTest against $PB_URL as $LIVE_EMAIL" +"$REPO_ROOT/tasks/gw" testDebugUnitTest --tests "org.modg.bookshelf.livesync.LiveSyncTest" --rerun