chore: migration translation extension creator

Signed-off-by: blam <ben@blam.sh>
This commit is contained in:
blam
2024-08-01 16:21:57 +02:00
parent 8897c29ecc
commit da75ca4e47
2 changed files with 114 additions and 0 deletions
@@ -0,0 +1,81 @@
/*
* Copyright 2024 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { createExtensionTester } from '@backstage/frontend-test-utils';
import {
createTranslationMessages,
createTranslationRef,
} from '../translation';
import { TranslationBlueprint } from './TranslationBlueprint';
describe('TranslationBlueprint', () => {
const translationRef = createTranslationRef({
id: 'test',
messages: {
test: 'test',
},
});
const messages = createTranslationMessages({
ref: translationRef,
messages: {
test: 'test2',
},
});
it('should return an extension instance with sane defaults', () => {
expect(
TranslationBlueprint.make({
params: {
resource: messages,
},
}),
).toMatchInlineSnapshot(`
{
"$$type": "@backstage/ExtensionDefinition",
"attachTo": {
"id": "app",
"input": "translations",
},
"configSchema": undefined,
"disabled": false,
"factory": [Function],
"inputs": {},
"kind": "translation",
"name": undefined,
"namespace": undefined,
"output": [
[Function],
],
"toString": [Function],
"version": "v2",
}
`);
});
it('should output a translation data ref', () => {
const extension = TranslationBlueprint.make({
params: {
resource: messages,
},
});
expect(
createExtensionTester(extension).data(
TranslationBlueprint.dataRefs.translation,
),
).toBe(messages);
});
});
@@ -0,0 +1,33 @@
/*
* Copyright 2024 The Backstage Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { createExtensionBlueprint } from '../wiring';
import { createTranslationExtension } from './createTranslationExtension';
import { TranslationMessages, TranslationResource } from '../translation';
export const TranslationBlueprint = createExtensionBlueprint({
kind: 'translation',
attachTo: { id: 'app', input: 'translations' },
output: [createTranslationExtension.translationDataRef],
dataRefs: {
translation: createTranslationExtension.translationDataRef,
},
factory: ({
resource,
}: {
resource: TranslationResource | TranslationMessages;
}) => [createTranslationExtension.translationDataRef(resource)],
});