Skip to content

Commit

Permalink
Merge branch 'main' into julong/zoom-in-out
Browse files Browse the repository at this point in the history
* main:
  fix: Monaco editor links opened in blank window in electron (#4269)
  feat: add notification center for composer (QnA url import) (#4080)
  fix: Object examples not properly displayed as placeholders (#4126)
  fix: allows spaces in bot project path (#4260)
  chore: extract build logic from components page (#4153)
  • Loading branch information
alanlong9278 committed Sep 28, 2020
2 parents a54f164 + 1143ea0 commit 899f653
Show file tree
Hide file tree
Showing 25 changed files with 780 additions and 271 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

import { FieldProps, UIOptions } from '@bfc/extension-client';

import { getUiLabel, getUiDescription, getUiPlaceholder } from '../uiOptionsHelpers';
import { getUiDescription, getUiLabel, getUiPlaceholder } from '../uiOptionsHelpers';

let props;

Expand Down Expand Up @@ -90,4 +90,10 @@ describe('getUiPlaceholder', () => {
'ex. one, two'
);
});

it('correctly display examples for non string types', () => {
expect(
getUiPlaceholder({ ...props, placeholder: undefined, schema: { examples: [true, 5, { arg1: 'test' }] } })
).toEqual('ex. true, 5, {"arg1":"test"}');
});
});
9 changes: 7 additions & 2 deletions Composer/packages/adaptive-form/src/utils/uiOptionsHelpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@

import { FieldProps } from '@bfc/extension-client';
import startCase from 'lodash/startCase';
import formatMessage from 'format-message';

export function getUiLabel(props: FieldProps): string | false | undefined {
const { uiOptions, schema, name, value, label } = props;
Expand Down Expand Up @@ -47,7 +46,13 @@ export function getUiPlaceholder(props: FieldProps): string | undefined {
} else if (placeholder) {
fieldUIPlaceholder = placeholder;
} else if (schema && Array.isArray(schema.examples) && schema.examples.length > 0) {
fieldUIPlaceholder = formatMessage('ex. { example }', { example: schema.examples.join(', ') });
const examplesStrings = schema.examples.map((example) => {
if (typeof example === 'object') {
return JSON.stringify(example);
}
return example;
});
fieldUIPlaceholder = `ex. ${examplesStrings.join(', ')}`;
}

if (fieldUIPlaceholder && schema.pattern) {
Expand Down
93 changes: 93 additions & 0 deletions Composer/packages/client/__tests__/utils/buildUtil.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.

import { DialogInfo, LuFile } from '@bfc/shared';

import { createCrossTrainConfig } from '../../src/utils/buildUtil';

describe('createCrossTrainConfig', () => {
it('should create crosstrain config', () => {
const dialogs = [
{
id: 'main',
luFile: 'main',
isRoot: true,
intentTriggers: [
{ intent: 'dia1_trigger', dialogs: ['dia1'] },
{ intent: 'dia2_trigger', dialogs: ['dia2'] },
{ intent: 'dias_trigger', dialogs: ['dia5', 'dia6'] },
{ intent: 'no_dialog', dialogs: [] },
{ intent: '', dialogs: ['start_dialog_without_intent'] },
],
},
{
id: 'dia1',
luFile: 'dia1',
intentTriggers: [
{ intent: 'dia3_trigger', dialogs: ['dia3'] },
{ intent: 'dia4_trigger', dialogs: ['dia4'] },
],
},
{
id: 'dia2',
luFile: 'dia2',
intentTriggers: [],
},
{
id: 'dia3',
luFile: 'dia3',
intentTriggers: [],
},
{
id: 'dia4',
luFile: 'dia4',
intentTriggers: [],
},
{
id: 'dia5',
luFile: 'dia5',
intentTriggers: [],
},
{
id: 'dia6',
luFile: 'dia6',
intentTriggers: [],
},
{
id: 'start_dialog_without_intent',
luFile: 'start_dialog_without_intent',
intentTriggers: [],
},
{
id: 'dialog_without_lu',
intentTriggers: [],
},
];
const luFiles = [
{
id: 'main.en-us',
intents: [
{ Name: 'dia1_trigger' },
{ Name: 'dia2_trigger' },
{ Name: 'dias_trigger' },
{ Name: 'no_dialog' },
{ Name: 'dialog_without_lu' },
],
},
{ id: 'dia1.en-us', intents: [{ Name: 'dia3_trigger' }, { Name: 'dia4_trigger' }] },
{ id: 'dia2.en-us' },
{ id: 'dia3.en-us' },
{ id: 'dia5.en-us' },
{ id: 'dia6.en-us' },
];
const config = createCrossTrainConfig(dialogs as DialogInfo[], luFiles as LuFile[]);
expect(config.rootIds.length).toEqual(1);
expect(config.rootIds[0]).toEqual('main.en-us.lu');
expect(config.triggerRules['main.en-us.lu'].dia1_trigger).toEqual('dia1.en-us.lu');
expect(config.triggerRules['main.en-us.lu'].no_dialog).toEqual('');
expect(config.triggerRules['main.en-us.lu'].dia1_trigger).toEqual('dia1.en-us.lu');
expect(config.triggerRules['main.en-us.lu'].dias_trigger.length).toBe(2);
expect(config.triggerRules['dia1.en-us.lu'].dia3_trigger).toEqual('dia3.en-us.lu');
expect(config.triggerRules['dia1.en-us.lu']['dia4.en-us.lu']).toBeUndefined();
});
});
87 changes: 1 addition & 86 deletions Composer/packages/client/__tests__/utils/luUtil.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

import { LuFile, DialogInfo, Diagnostic, DiagnosticSeverity } from '@bfc/shared';

import { getReferredLuFiles, createCrossTrainConfig, checkLuisBuild } from '../../src/utils/luUtil';
import { getReferredLuFiles, checkLuisBuild } from '../../src/utils/luUtil';

describe('getReferredLuFiles', () => {
it('returns referred luFiles from dialog', () => {
Expand All @@ -13,91 +13,6 @@ describe('getReferredLuFiles', () => {
expect(referred.length).toEqual(1);
expect(referred[0].id).toEqual('a.en-us');
});

it('should create crosstrain config', () => {
const dialogs = [
{
id: 'main',
luFile: 'main',
isRoot: true,
intentTriggers: [
{ intent: 'dia1_trigger', dialogs: ['dia1'] },
{ intent: 'dia2_trigger', dialogs: ['dia2'] },
{ intent: 'dias_trigger', dialogs: ['dia5', 'dia6'] },
{ intent: 'no_dialog', dialogs: [] },
{ intent: '', dialogs: ['start_dialog_without_intent'] },
],
},
{
id: 'dia1',
luFile: 'dia1',
intentTriggers: [
{ intent: 'dia3_trigger', dialogs: ['dia3'] },
{ intent: 'dia4_trigger', dialogs: ['dia4'] },
],
},
{
id: 'dia2',
luFile: 'dia2',
intentTriggers: [],
},
{
id: 'dia3',
luFile: 'dia3',
intentTriggers: [],
},
{
id: 'dia4',
luFile: 'dia4',
intentTriggers: [],
},
{
id: 'dia5',
luFile: 'dia5',
intentTriggers: [],
},
{
id: 'dia6',
luFile: 'dia6',
intentTriggers: [],
},
{
id: 'start_dialog_without_intent',
luFile: 'start_dialog_without_intent',
intentTriggers: [],
},
{
id: 'dialog_without_lu',
intentTriggers: [],
},
];
const luFiles = [
{
id: 'main.en-us',
intents: [
{ Name: 'dia1_trigger' },
{ Name: 'dia2_trigger' },
{ Name: 'dias_trigger' },
{ Name: 'no_dialog' },
{ Name: 'dialog_without_lu' },
],
},
{ id: 'dia1.en-us', intents: [{ Name: 'dia3_trigger' }, { Name: 'dia4_trigger' }] },
{ id: 'dia2.en-us' },
{ id: 'dia3.en-us' },
{ id: 'dia5.en-us' },
{ id: 'dia6.en-us' },
];
const config = createCrossTrainConfig(dialogs as DialogInfo[], luFiles as LuFile[]);
expect(config.rootIds.length).toEqual(1);
expect(config.rootIds[0]).toEqual('main.en-us.lu');
expect(config.triggerRules['main.en-us.lu'].dia1_trigger).toEqual('dia1.en-us.lu');
expect(config.triggerRules['main.en-us.lu'].no_dialog).toEqual('');
expect(config.triggerRules['main.en-us.lu'].dia1_trigger).toEqual('dia1.en-us.lu');
expect(config.triggerRules['main.en-us.lu'].dias_trigger.length).toBe(2);
expect(config.triggerRules['dia1.en-us.lu'].dia3_trigger).toEqual('dia3.en-us.lu');
expect(config.triggerRules['dia1.en-us.lu']['dia4.en-us.lu']).toBeUndefined();
});
});

it('check the lu files before publish', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
/** @jsx jsx */
import { jsx, css } from '@emotion/core';

import { NotificationContainer } from '../NotificationContainer';

import { SideBar } from './SideBar';
import { RightPanel } from './RightPanel';
import { Assistant } from './Assistant';
Expand All @@ -18,6 +20,7 @@ export const MainContainer = () => {
<SideBar />
<RightPanel />
<Assistant />
<NotificationContainer />
</div>
);
};
Loading

0 comments on commit 899f653

Please sign in to comment.