mirror of
https://github.com/supabase/supabase.git
synced 2026-09-06 09:59:03 +08:00
## What kind of change does this PR introduce? Feature. Stack 1 of 5 for [PIPE-1007](https://linear.app/supabase/issue/PIPE-1007/move-read-replicas-out-of-replication-into-infrastructure). ## What is the current behavior? Read replica UI lives under Database / Replication. ## What is the new behavior? Moves replica form, row, and modals into Settings/Infrastructure and extracts `REPLICA_STATUS` plus path helpers. URLs and user-facing behaviour are unchanged. ## Additional context Keep `infrastructure:read_replicas` off in prod until the full stack lands. Stack: this PR → [#49044](https://github.com/supabase/supabase/pull/49044) → [#49045](https://github.com/supabase/supabase/pull/49045) → [#49046](https://github.com/supabase/supabase/pull/49046) → [#48921](https://github.com/supabase/supabase/pull/48921) ## To test Open [Database / Replication](https://studio-staging-git-danny-pipe-1007-01-relocate-701014-supabase.vercel.app/dashboard/project/_/database/replication?destinationType=Read+Replica). Confirm add replica still works as today. No new Infrastructure section yet. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Added navigation for viewing a specific read replica and starting the add-replica setup flow. - Improved read-replica setup validation, including unsupported regions and invalid PostgreSQL versions. - **Bug Fixes** - Corrected default region and success messaging behavior. - Prevented incomplete pricing labels and clarified eligibility warnings. - Improved display handling for localized pricing values. - **Tests** - Added coverage for read-replica navigation paths and fallback behavior. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
46 lines
1.3 KiB
TypeScript
46 lines
1.3 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
|
|
import {
|
|
getAddReadReplicaPath,
|
|
getInfrastructurePath,
|
|
getReadReplicaPath,
|
|
} from './Infrastructure.utils'
|
|
|
|
describe('getInfrastructurePath', () => {
|
|
it('builds the path for a project ref', () => {
|
|
expect(getInfrastructurePath('project-ref')).toBe(
|
|
'/project/project-ref/settings/infrastructure'
|
|
)
|
|
})
|
|
|
|
it('falls back to the default project placeholder', () => {
|
|
expect(getInfrastructurePath()).toBe('/project/_/settings/infrastructure')
|
|
})
|
|
})
|
|
|
|
describe('getReadReplicaPath', () => {
|
|
it('builds the replica detail path', () => {
|
|
expect(getReadReplicaPath('project-ref', 'replica-1')).toBe(
|
|
'/project/project-ref/settings/infrastructure/replica/replica-1'
|
|
)
|
|
})
|
|
|
|
it('falls back to the default project placeholder', () => {
|
|
expect(getReadReplicaPath(undefined, 'replica-1')).toBe(
|
|
'/project/_/settings/infrastructure/replica/replica-1'
|
|
)
|
|
})
|
|
})
|
|
|
|
describe('getAddReadReplicaPath', () => {
|
|
it('opens the add-replica sheet on infrastructure', () => {
|
|
expect(getAddReadReplicaPath('project-ref')).toBe(
|
|
'/project/project-ref/settings/infrastructure?addReplica=true'
|
|
)
|
|
})
|
|
|
|
it('falls back to the default project placeholder', () => {
|
|
expect(getAddReadReplicaPath()).toBe('/project/_/settings/infrastructure?addReplica=true')
|
|
})
|
|
})
|