diff --git a/apps/kitchensink-react/e2e/multi-resource.spec.ts b/apps/kitchensink-react/e2e/multi-resource.spec.ts index a40800c14..c8f7899d3 100644 --- a/apps/kitchensink-react/e2e/multi-resource.spec.ts +++ b/apps/kitchensink-react/e2e/multi-resource.spec.ts @@ -23,15 +23,17 @@ test.describe('Multi Resource Route', () => { process.env['SDK_E2E_DATASET_0'], // First dataset ) - // Create a player document in dataset 1 + // Create a movie document in dataset 1 const { - documentIds: [playerId], + documentIds: [movieId], } = await createDocuments( [ { - _type: 'player', - name: 'Test Player Multi Resource', - slackUserId: 'U1234567890', + _type: 'movie', + title: 'Test Movie Multi Resource', + tmdb_id: 123456, + release_date: '2021-01-01', + hosted_poster_path: 'https://example.com/poster.jpg', }, ], {asDraft: false}, // Create as published document @@ -45,16 +47,16 @@ test.describe('Multi Resource Route', () => { // Wait for both document cards to be visible await expect(pageContext.getByTestId(/^author-document-/)).toBeVisible() - await expect(pageContext.getByTestId(/^player-document-/)).toBeVisible() + await expect(pageContext.getByTestId(/^movie-document-/)).toBeVisible() // Verify author document content is displayed await expect(pageContext.getByTestId('author-name-display')).toHaveText( 'Test Author Multi Resource', ) - // Verify player document content is displayed - await expect(pageContext.getByTestId('player-name-display')).toHaveText( - 'Test Player Multi Resource', + // Verify movie document content is displayed + await expect(pageContext.getByTestId('movie-name-display')).toHaveText( + 'Test Movie Multi Resource', ) // Test author projection data @@ -67,12 +69,14 @@ test.describe('Multi Resource Route', () => { 'Best Code Award', ) - // Test player projection data - await expect(pageContext.getByTestId('player-projection-name')).toContainText( - 'Test Player Multi Resource', + // Test movie projection data + await expect(pageContext.getByTestId('movie-projection-name')).toContainText( + 'Test Movie Multi Resource', ) - await expect(pageContext.getByTestId('player-projection-slack-id')).toContainText('U1234567890') - await expect(pageContext.getByTestId('player-projection-has-slack')).toContainText('Yes') + await expect(pageContext.getByTestId('movie-projection-release-date')).toContainText( + '2021-01-01', + ) + await expect(pageContext.getByTestId('movie-projection-has-poster')).toContainText('Yes') // Test editing the author document const authorNameInput = pageContext.getByTestId('author-name-input') @@ -87,26 +91,26 @@ test.describe('Multi Resource Route', () => { 'Updated Author Name', ) - // Test editing the player document - const playerNameInput = pageContext.getByTestId('player-name-input') - await playerNameInput.fill('Updated Player Name') - await playerNameInput.press('Enter') + // Test editing the movie document + const movieNameInput = pageContext.getByTestId('movie-name-input') + await movieNameInput.fill('Updated Movie Name') + await movieNameInput.press('Enter') // Verify the change is reflected in the display - await expect(pageContext.getByTestId('player-name-display')).toHaveText('Updated Player Name') + await expect(pageContext.getByTestId('movie-name-display')).toHaveText('Updated Movie Name') // Verify the change is also reflected in the projection - await expect(pageContext.getByTestId('player-projection-name')).toContainText( - 'Updated Player Name', + await expect(pageContext.getByTestId('movie-projection-name')).toContainText( + 'Updated Movie Name', ) // Test that external changes are reflected (simulating real-time updates) const authorClient = getClient(process.env['SDK_E2E_DATASET_0']) await authorClient.patch(`drafts.${authorId}`).set({name: 'Externally Updated Author'}).commit() - // Test external change for player - const playerClient = getClient(process.env['SDK_E2E_DATASET_1']) - await playerClient.patch(`drafts.${playerId}`).set({name: 'Externally Updated Player'}).commit() + // Test external change for movie + const movieClient = getClient(process.env['SDK_E2E_DATASET_1']) + await movieClient.patch(`drafts.${movieId}`).set({title: 'Externally Updated Movie'}).commit() // Verify external change is reflected await expect(async () => { @@ -118,10 +122,10 @@ test.describe('Multi Resource Route', () => { // Verify external change is reflected await expect(async () => { - const playerDisplay = await pageContext.getByTestId('player-name-display').textContent() - const playerProjection = await pageContext.getByTestId('player-projection-name').textContent() - expect(playerDisplay).toBe('Externally Updated Player') - expect(playerProjection).toContain('Externally Updated Player') + const movieDisplay = await pageContext.getByTestId('movie-name-display').textContent() + const movieProjection = await pageContext.getByTestId('movie-projection-name').textContent() + expect(movieDisplay).toBe('Externally Updated Movie') + expect(movieProjection).toContain('Externally Updated Movie') }).toPass({timeout: 5000}) }) }) diff --git a/apps/kitchensink-react/package.json b/apps/kitchensink-react/package.json index 775289f66..6424941ea 100644 --- a/apps/kitchensink-react/package.json +++ b/apps/kitchensink-react/package.json @@ -7,12 +7,12 @@ "build": "pnpm tsc && vite build", "clean": "rimraf dist", "deploy": "sanity deploy", - "dev": "vite", + "dev": "sanity dev", "install": "npm run schema:extract && npm run types:generate", "lint": "eslint .", "paramour": "npx paramour --config=./src/css/css.config.js --output=./src/css/paramour.css", "preview": "vite preview", - "schema:extract": "sanity schema extract --workspace ppsg7ml5-test --path schema.ppsg7ml5.test.json && sanity schema extract --workspace d45jg133-production --path schema.d45jg133.production.json", + "schema:extract": "sanity schema extract --workspace ppsg7ml5-test --path schema.ppsg7ml5.test.json && sanity schema extract --workspace vo1ysemo-production --path schema.vo1ysemo.production.json", "test:e2e": "playwright test", "tsc": "tsc --noEmit", "types:generate": "./node_modules/@sanity/cli/bin/sanity typegen generate" diff --git a/apps/kitchensink-react/sanity-typegen.json b/apps/kitchensink-react/sanity-typegen.json index 03481343d..3c488112c 100644 --- a/apps/kitchensink-react/sanity-typegen.json +++ b/apps/kitchensink-react/sanity-typegen.json @@ -5,8 +5,8 @@ "schemaId": "ppsg7ml5.test" }, { - "schemaPath": "./schema.d45jg133.production.json", - "schemaId": "d45jg133.production" + "schemaPath": "./schema.vo1ysemo.production.json", + "schemaId": "vo1ysemo.production" } ], "overloadClientMethods": false diff --git a/apps/kitchensink-react/sanity.cli.ts b/apps/kitchensink-react/sanity.cli.ts index e821d2947..1aec3fd55 100644 --- a/apps/kitchensink-react/sanity.cli.ts +++ b/apps/kitchensink-react/sanity.cli.ts @@ -2,8 +2,8 @@ import {defineCliConfig} from 'sanity/cli' export default defineCliConfig({ app: { - organizationId: 'oSyH1iET5', + organizationId: 'oblZgbTFj', entry: './src/App.tsx', - id: 'cbhuuqhkp6sevhpreoh0so8s', + id: 'wkyoigmzawwnnwx458zgoh46', }, }) diff --git a/apps/kitchensink-react/sanity.config.ts b/apps/kitchensink-react/sanity.config.ts index 523156389..de12ea7b6 100644 --- a/apps/kitchensink-react/sanity.config.ts +++ b/apps/kitchensink-react/sanity.config.ts @@ -69,13 +69,43 @@ const bookType = defineType({ ], }) -const playerType = defineType({ - name: 'player', - title: 'Player', +const movieType = defineType({ + name: 'movie', + title: 'Movie', type: 'document', fields: [ - defineField({name: 'name', title: 'Name', type: 'string'}), - defineField({name: 'slackUserId', title: 'Slack User ID', type: 'string'}), + { + name: 'title', + title: 'Title', + type: 'string', + validation: (Rule) => Rule.required(), + }, + { + name: 'tmdb_id', + title: 'TMDB ID', + type: 'number', + validation: (Rule) => Rule.required(), + }, + { + name: 'poster_path', + title: 'Poster Image', + type: 'string', + }, + { + name: 'hosted_poster_path', + title: 'Hosted Poster Image', + type: 'url', + }, + { + name: 'release_date', + title: 'Release Date', + type: 'string', + }, + { + name: 'overview', + title: 'Overview', + type: 'text', + }, ], }) @@ -90,12 +120,12 @@ export default defineConfig([ }, }, { - name: 'd45jg133-production', - basePath: '/d45jg133-production', - projectId: 'd45jg133', + name: 'vo1ysemo-production', + basePath: '/vo1ysemo-production', + projectId: 'vo1ysemo', dataset: 'production', schema: { - types: [playerType], + types: [movieType], }, }, ]) diff --git a/apps/kitchensink-react/src/DocumentCollection/MultiResourceRoute.tsx b/apps/kitchensink-react/src/DocumentCollection/MultiResourceRoute.tsx index 99d81bf56..fc4a4c34e 100644 --- a/apps/kitchensink-react/src/DocumentCollection/MultiResourceRoute.tsx +++ b/apps/kitchensink-react/src/DocumentCollection/MultiResourceRoute.tsx @@ -12,7 +12,7 @@ import {JSX, Suspense, useRef} from 'react' import { type MultiResourceAuthorProjectionProjectionResult, - type MultiResourcePlayerProjectionProjectionResult, + MultiResourceMovieProjectionProjectionResult, } from '../../sanity.types' import {devConfigs, e2eConfigs} from '../sanityConfigs' @@ -41,10 +41,10 @@ const multiResourceAuthorProjection = defineProjection(`{ "firstAward": awards[0] }`) -const multiResourcePlayerProjection = defineProjection(`{ - name, - slackUserId, - "hasSlackId": defined(slackUserId) +const multiResourceMovieProjection = defineProjection(`{ + title, + release_date, + "hasPoster": defined(hosted_poster_path) }`) interface ProjectionCardProps { @@ -222,13 +222,13 @@ function AuthorEditor({docHandle}: {docHandle: DocumentHandle<'author'>}) { ) } -function PlayerEditor({docHandle}: {docHandle: DocumentHandle<'player'>}) { - const {data: player} = useDocument(docHandle) - const setPlayerName = useEditDocument({...docHandle, path: 'name'}) +function MovieEditor({docHandle}: {docHandle: DocumentHandle<'movie'>}) { + const {data: movie} = useDocument(docHandle) + const setMovieName = useEditDocument({...docHandle, path: 'title'}) return ( }) { > View in Studio → -

- {player?.name} +

+ {movie?.title}

setPlayerName(e.currentTarget.value)} + value={movie?.title} + onChange={(e) => setMovieName(e.currentTarget.value)} /> -
- {player?.slackUserId && `Slack User ID: ${player.slackUserId}`} -
+
TMDB ID: {movie?.tmdb_id}
) } @@ -289,25 +287,25 @@ function AuthorProjection({docHandle}: {docHandle: DocumentHandle<'author'>}) { ) } -function PlayerProjection({docHandle}: {docHandle: DocumentHandle<'player'>}) { +function MovieProjection({docHandle}: {docHandle: DocumentHandle<'movie'>}) { return ( - + docHandle={docHandle} - projection={multiResourcePlayerProjection} - title="Player Projection" + projection={multiResourceMovieProjection} + title="Movie Projection" backgroundColor="#7fc7d1" borderColor="#4fb3c0" textColor="#1a1a1a" renderData={(data, isPending) => ( -
-

- Name: {data?.name ?? 'No name'} +

+

+ Title: {data?.title ?? 'No title'}

-

- Slack User ID: {data?.slackUserId ?? 'Not set'} +

+ Release Date: {data?.release_date ?? 'Not set'}

-

- Has Slack ID: {data?.hasSlackId ? 'Yes' : 'No'} +

+ Has Poster: {data?.hasPoster ? 'Yes' : 'No'}

)} @@ -326,11 +324,11 @@ function AuthorPreview({docHandle}: {docHandle: DocumentHandle<'author'>}) { ) } -function PlayerPreview({docHandle}: {docHandle: DocumentHandle<'player'>}) { +function MoviePreview({docHandle}: {docHandle: DocumentHandle<'movie'>}) { return ( No documents found in one or both datasets } - if (!authorHandle || !playerHandle) { + if (!authorHandle || !movieHandle) { return Loading... } @@ -377,7 +375,7 @@ export function MultiResourceRoute(): JSX.Element {

Document Editors

- +

Document Projections

@@ -385,8 +383,8 @@ export function MultiResourceRoute(): JSX.Element { }> - }> - + }> +
@@ -395,8 +393,8 @@ export function MultiResourceRoute(): JSX.Element { }> - }> - + }> + diff --git a/apps/kitchensink-react/src/Presence/PresenceRoute.tsx b/apps/kitchensink-react/src/Presence/PresenceRoute.tsx index 2468af1dd..f83282ca3 100644 --- a/apps/kitchensink-react/src/Presence/PresenceRoute.tsx +++ b/apps/kitchensink-react/src/Presence/PresenceRoute.tsx @@ -20,15 +20,15 @@ export function PresenceRoute(): JSX.Element {

Second Project Presence for {devConfigs[1].projectId}

View in Studio →

Loading...

} > diff --git a/apps/kitchensink-react/src/sanityConfigs.ts b/apps/kitchensink-react/src/sanityConfigs.ts index 998eaa007..d617833cc 100644 --- a/apps/kitchensink-react/src/sanityConfigs.ts +++ b/apps/kitchensink-react/src/sanityConfigs.ts @@ -6,11 +6,7 @@ export const devConfigs: SanityConfig[] = [ dataset: 'test', }, { - projectId: 'd45jg133', - dataset: 'production', - }, - { - projectId: 'v28v5k8m', + projectId: 'vo1ysemo', dataset: 'production', }, ]