@@ -1021,3 +1021,113 @@ test.concurrent('promote delete schema version results in correct state', async
10211021 expect ( serviceDeletedVersion . valid ) . toEqual ( true ) ;
10221022 expect ( promotedVersion . supergraph ) . toEqual ( serviceDeletedVersion . supergraph ) ;
10231023} ) ;
1024+
1025+ test . concurrent ( 'promote monolith schema version succeeds' , async ( { expect } ) => {
1026+ const { createOrg } = await initSeed ( ) . createOwner ( ) ;
1027+ const { createProject, createOrganizationAccessToken } = await createOrg ( ) ;
1028+ const { target, fetchVersions } = await createProject ( ProjectType . Single ) ;
1029+ const { privateAccessKey } = await createOrganizationAccessToken ( {
1030+ resources : {
1031+ mode : ResourceAssignmentModeType . All ,
1032+ } ,
1033+ permissions : [
1034+ 'schemaVersion:publish' ,
1035+ 'target:modifySettings' ,
1036+ 'project:describe' ,
1037+ 'schemaVersion:promote' ,
1038+ ] ,
1039+ } ) ;
1040+
1041+ await publishSchema (
1042+ {
1043+ author : 'a' ,
1044+ commit : 'a' ,
1045+ sdl : /* GraphQL */ `
1046+ type Query {
1047+ a: String!
1048+ }
1049+ ` ,
1050+ target : {
1051+ byId : target . id ,
1052+ } ,
1053+ } ,
1054+ privateAccessKey ,
1055+ ) . then ( r => r . expectNoGraphQLErrors ( ) ) ;
1056+ await publishSchema (
1057+ {
1058+ author : 'b' ,
1059+ commit : 'b' ,
1060+ sdl : /* GraphQL */ `
1061+ type Query {
1062+ b: String!
1063+ }
1064+ ` ,
1065+ target : {
1066+ byId : target . id ,
1067+ } ,
1068+ } ,
1069+ privateAccessKey ,
1070+ ) . then ( r => r . expectNoGraphQLErrors ( ) ) ;
1071+
1072+ const [ publishedVersion , versionToPromote ] = await fetchVersions ( 2 ) ;
1073+ assertNonNullish ( versionToPromote ) ;
1074+ assertNonNullish ( publishedVersion ) ;
1075+ expect ( versionToPromote . sdl ) . toContain ( 'a: String!' ) ;
1076+
1077+ let promoteResult = await schemaVersionPromote (
1078+ {
1079+ source : {
1080+ fromSchemaVersionById : versionToPromote . id ,
1081+ } ,
1082+ target : {
1083+ toTarget : {
1084+ byId : target . id ,
1085+ } ,
1086+ } ,
1087+ } ,
1088+ privateAccessKey ,
1089+ ) . then ( r => r . expectNoGraphQLErrors ( ) ) ;
1090+
1091+ expect ( promoteResult . schemaVersionPromote . error ) . toEqual ( null ) ;
1092+ assertNonNullish ( promoteResult . schemaVersionPromote . ok ) ;
1093+ let promotedVersionDetails = await getSchemaVersionWithAllDetails (
1094+ target . id ,
1095+ promoteResult . schemaVersionPromote . ok . newSchemaVersion . id ,
1096+ privateAccessKey ,
1097+ ) ;
1098+ assertNonNull ( promotedVersionDetails ) ;
1099+ expect ( promotedVersionDetails . origin ) . toEqual ( {
1100+ __typename : 'SchemaVersionPromoteOrigin' ,
1101+ schemaVersionId : versionToPromote . id ,
1102+ } ) ;
1103+ expect ( promotedVersionDetails . sdl ) . toContain ( 'a: String!' ) ;
1104+
1105+ // why not also publish another version just to be sure
1106+ promoteResult = await schemaVersionPromote (
1107+ {
1108+ source : {
1109+ fromSchemaVersionById : publishedVersion . id ,
1110+ } ,
1111+ target : {
1112+ toTarget : {
1113+ byId : target . id ,
1114+ } ,
1115+ } ,
1116+ } ,
1117+ privateAccessKey ,
1118+ ) . then ( r => r . expectNoGraphQLErrors ( ) ) ;
1119+
1120+ expect ( promoteResult . schemaVersionPromote . error ) . toEqual ( null ) ;
1121+ assertNonNullish ( promoteResult . schemaVersionPromote . ok ) ;
1122+ promotedVersionDetails = await getSchemaVersionWithAllDetails (
1123+ target . id ,
1124+ promoteResult . schemaVersionPromote . ok . newSchemaVersion . id ,
1125+ privateAccessKey ,
1126+ ) ;
1127+ assertNonNull ( promotedVersionDetails ) ;
1128+ expect ( promotedVersionDetails . origin ) . toEqual ( {
1129+ __typename : 'SchemaVersionPromoteOrigin' ,
1130+ schemaVersionId : publishedVersion . id ,
1131+ } ) ;
1132+ expect ( promotedVersionDetails . sdl ) . toContain ( 'b: String!' ) ;
1133+ } ) ;
0 commit comments