Files
RenewCMS/features/media_page_size_memory.qa.md

2.5 KiB

QA: Media page size memory (SPA)

Automated (Vitest + Vue Test Utils, task test:web)

Add web/src/views/__tests__/MediaPageSizeMemory.spec.ts, mirroring ArticlesPageSizeMemory.spec.ts and ActivityPageSizeMemory.spec.ts: stub localStorage per test (a Storage fake, plus variants whose getItem or setItem throws, and undefined), use the /v1/media/ mock of mediaTestKit.ts that honours page and size, and a real router. Extend web/src/lib/__tests__/pageSizeMemory.spec.ts for MEDIA_PAGE_SIZE_KEY.

  1. Choose a size table (5, 25, 50, 100) with nothing stored: stored value per the table and URLs /media?size=5, /media, /media?size=50, /media?size=100.
  2. Stored 5, open /media: request size=5, select reads "5 per page", URL replaced (not pushed) by /media?size=5.
  3. Leave and come back (navigate to / then /media): size=5.
  4. Reload on /media?size=5 and on /media with a fresh mount: size=5.
  5. Stored 50: Next, "Unused" tab, "Largest" sort, list view and search "wall" each carry size=50; the stored value stays "50".
  6. Choose 100 after 5: stored "100", next visit size=100. Choose 25 after 5: stored "25", URL stays /media.
  7. Explicit ?size=100 with stored 5: request size=100, stored still "5", later visit size=5.
  8. ?page=3 with stored 5: request page=3&size=5, URL replaced by /media?page=3&size=5.
  9. Invalid stored table (10, abc, 0, -5, 25.5, empty): request size=25, URL /media.
  10. Invalid URL ?size=10 with stored 5: request size=25, URL /media, stored still "5".
  11. Unavailable storage table (throws on getItem, throws on setItem, undefined): page renders, no error, size=25, then choosing 50 sends size=50 and URL /media?size=50.
  12. Logout and login keeps the key (clear the auth store only; storage untouched), then /media sends size=5.
  13. Separate keys: articles 50, activity 100, media 5 -> the three views send 50, 100 and 5.
  14. Duplicates tab: stored 5 -> requests carry size=100, stored unchanged, returning to All sends size=5.
  15. Unit test of the lib: readStoredPageSize, storePageSize and resolvePageSize with the media key and the valid sizes 5/25/50/100.

No Visual part: no visual or design change.

Manual verification

  • In a real browser (task dev): choose "5 per page", refresh, close and reopen the tab, confirm the select and the URL; in DevTools confirm only renewcms-page-size-media changed.
  • Block storage (private mode or disabled site data) and confirm the page still works.