@spinnaker/core 0.14.2 → 0.16.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +59 -0
- package/dist/config/settings.d.ts +1 -0
- package/dist/core.module.d.ts +1 -1
- package/dist/index.js +89 -47
- package/dist/index.js.map +1 -1
- package/dist/instance/instanceType.service.d.ts +3 -2
- package/dist/managed/artifactActions/ArtifactActions.d.ts +24 -0
- package/dist/managed/constraints/registry.d.ts +13 -2
- package/dist/managed/environmentBaseElements/EnvironmentItem.d.ts +3 -2
- package/dist/managed/graphql/graphql-sdk.d.ts +123 -11
- package/dist/managed/overview/Resource.d.ts +5 -2
- package/dist/managed/overview/artifact/Artifact.d.ts +2 -1
- package/dist/managed/overview/artifact/ArtifactActionModal.d.ts +20 -9
- package/dist/managed/overview/artifact/ArtifactCollapsibleSection.d.ts +7 -0
- package/dist/managed/overview/artifact/ArtifactVersions.d.ts +9 -0
- package/dist/managed/overview/artifact/CurrentVersion.d.ts +7 -6
- package/dist/managed/overview/artifact/VersionTitle.d.ts +9 -0
- package/dist/managed/overview/artifact/hooks.d.ts +6 -11
- package/dist/managed/overview/artifact/useCreateRollbackActions.hook.d.ts +3 -0
- package/dist/managed/overview/artifact/utils.d.ts +15 -14
- package/dist/managed/overview/useIsUpdatingResources.hook.d.ts +1 -0
- package/dist/managed/resources/ResourceTitle.d.ts +3 -3
- package/dist/managed/resources/resourceRegistry.d.ts +1 -1
- package/dist/managed/utils/ActionModal.d.ts +1 -0
- package/dist/managed/utils/defaults.d.ts +1 -0
- package/dist/managed/versionMetadata/MetadataComponents.d.ts +18 -19
- package/dist/managed/versionMetadata/VersionMetadata.d.ts +6 -2
- package/dist/search/infrastructure/infrastructureSearch.service.d.ts +2 -1
- package/dist/securityGroup/index.d.ts +2 -1
- package/package.json +6 -6
- package/src/account/AccountSelectInput.spec.tsx +9 -4
- package/src/account/AccountService.spec.ts +6 -6
- package/src/api/ApiService.spec.ts +2 -2
- package/src/api/ApiServiceDeprecated.spec.ts +5 -2
- package/src/application/application.model.spec.ts +78 -79
- package/src/application/applications.state.provider.ts +1 -1
- package/src/application/config/applicationAttributes.directive.html +6 -2
- package/src/application/config/applicationAttributes.directive.js +4 -0
- package/src/application/config/applicationConfig.view.html +14 -1
- package/src/application/config/customBanner/CustomBannerConfig.spec.tsx +3 -3
- package/src/application/config/dataSources/applicationDataSourceEditor.component.spec.ts +4 -3
- package/src/application/config/footer/configSectionFooter.component.spec.ts +2 -1
- package/src/application/listExtractor/AppListExtractor.spec.ts +4 -4
- package/src/application/modal/PermissionsConfigurer.spec.tsx +3 -2
- package/src/application/modal/createApplication.modal.controller.js +7 -6
- package/src/application/modal/createApplication.modal.controller.spec.js +1 -0
- package/src/application/modal/editApplication.controller.modal.js +1 -0
- package/src/application/modal/editApplication.html +2 -2
- package/src/application/modal/validation/ApplicationNameValidator.spec.ts +2 -1
- package/src/application/modal/validation/validateApplicationName.directive.spec.ts +3 -2
- package/src/application/nav/ApplicationNavigation.spec.tsx +12 -11
- package/src/application/nav/NavItem.spec.tsx +7 -5
- package/src/application/nav/NavSection.spec.tsx +3 -2
- package/src/application/search/Applications.tsx +48 -0
- package/src/application/service/ApplicationReader.spec.ts +13 -8
- package/src/application/service/ApplicationWriter.spec.ts +4 -2
- package/src/application/service/InferredApplicationWarningService.spec.ts +2 -3
- package/src/artifact/expectedArtifact.service.spec.ts +2 -1
- package/src/artifact/react/ExpectedArtifactSelector.spec.tsx +2 -3
- package/src/authentication/AuthenticationInitializer.spec.ts +2 -1
- package/src/authentication/AuthenticationService.spec.ts +2 -1
- package/src/authentication/authentication.interceptor.spec.ts +4 -2
- package/src/cache/cacheInitializer.service.spec.ts +7 -4
- package/src/cache/infrastructureCaches.spec.ts +4 -4
- package/src/chaosMonkey/chaosMonkeyExceptions.component.spec.ts +4 -2
- package/src/cloudProvider/providerSelection/ProviderSelectionService.spec.ts +23 -21
- package/src/cluster/ClusterRuleMatcher.spec.ts +2 -1
- package/src/cluster/cluster.service.spec.ts +7 -7
- package/src/cluster/filter/ClusterFilterService.spec.ts +15 -14
- package/src/cluster/filter/LabelFilter.spec.tsx +3 -3
- package/src/cluster/filter/MultiselectModel.spec.ts +2 -2
- package/src/cluster/filter/labelFilterUtils.spec.ts +3 -7
- package/src/config/settings.ts +1 -1
- package/src/core.module.ts +1 -1
- package/src/filterModel/dependentFilter/DependentFilterService.spec.ts +1 -1
- package/src/function/filter/FunctionFilterService.spec.ts +5 -3
- package/src/function/function.read.service.spec.ts +4 -3
- package/src/header/customBanner/CustomBanner.spec.tsx +3 -4
- package/src/healthCounts/HealthCounts.spec.tsx +2 -2
- package/src/history/recentHistory.service.spec.ts +2 -1
- package/src/insight/InsightMenu.spec.tsx +9 -6
- package/src/insight/InsightMenu.tsx +3 -0
- package/src/instance/instance.write.service.spec.ts +8 -7
- package/src/instance/instanceType.service.ts +12 -2
- package/src/instance/instanceTypeService.spec.ts +2 -1
- package/src/loadBalancer/LoadBalancersTag.spec.tsx +8 -6
- package/src/loadBalancer/filter/LoadBalancerFilterService.spec.ts +2 -2
- package/src/managed/Environments.less +4 -4
- package/src/managed/Environments.tsx +1 -1
- package/src/managed/RelativeTimestamp.tsx +8 -6
- package/src/managed/artifactActions/ArtifactActions.tsx +77 -0
- package/src/managed/constraints/AllowedTimes.spec.ts +2 -1
- package/src/managed/constraints/registry.tsx +27 -1
- package/src/managed/environmentBaseElements/BaseEnvironment.less +3 -3
- package/src/managed/environmentBaseElements/EnvironmentItem.tsx +11 -4
- package/src/managed/graphql/graphql-sdk.ts +218 -29
- package/src/managed/graphql/schema.graphql +14 -1
- package/src/managed/overview/EnvironmentOverview.tsx +12 -15
- package/src/managed/overview/EnvironmentsOverview.less +6 -5
- package/src/managed/overview/PreviewEnvironments.tsx +0 -3
- package/src/managed/overview/Resource.less +1 -1
- package/src/managed/overview/Resource.tsx +62 -47
- package/src/managed/overview/artifact/Artifact.less +27 -52
- package/src/managed/overview/artifact/Artifact.tsx +86 -22
- package/src/managed/overview/artifact/ArtifactActionModal.less +19 -0
- package/src/managed/overview/artifact/ArtifactActionModal.tsx +150 -68
- package/src/managed/overview/artifact/ArtifactCollapsibleSection.tsx +32 -0
- package/src/managed/overview/artifact/ArtifactVersionTasks.tsx +2 -0
- package/src/managed/overview/artifact/{PendingVersion.tsx → ArtifactVersions.tsx} +35 -25
- package/src/managed/overview/artifact/Constraints.tsx +61 -21
- package/src/managed/overview/artifact/CurrentVersion.tsx +42 -27
- package/src/managed/overview/artifact/VersionTitle.tsx +18 -0
- package/src/managed/overview/artifact/hooks.ts +71 -34
- package/src/managed/overview/artifact/useCreateRollbackActions.hook.ts +75 -0
- package/src/managed/overview/artifact/utils.spec.ts +1 -1
- package/src/managed/overview/artifact/utils.ts +47 -80
- package/src/managed/overview/baseStyles.less +124 -88
- package/src/managed/overview/queries.graphql +54 -13
- package/src/managed/overview/useIsUpdatingResources.hook.ts +9 -0
- package/src/managed/resources/ResourceTitle.tsx +12 -5
- package/src/managed/utils/ActionModal.tsx +4 -1
- package/src/managed/utils/defaults.ts +3 -0
- package/src/managed/utils/useNotifyOnError.hook.ts +1 -1
- package/src/managed/versionMetadata/MetadataComponents.tsx +100 -68
- package/src/managed/versionMetadata/VersionMetadata.less +17 -18
- package/src/managed/versionMetadata/VersionMetadata.tsx +23 -31
- package/src/managed/versionsHistory/VersionContent.tsx +20 -13
- package/src/managed/versionsHistory/VersionHeading.tsx +2 -1
- package/src/managed/versionsHistory/VersionsHistory.less +11 -3
- package/src/manifest/PodNameProvider.spec.ts +1 -1
- package/src/navigation/customParamTypes.spec.ts +1 -1
- package/src/pagerDuty/pagerDuty.read.service.spec.ts +4 -2
- package/src/pagerDuty/pagerDutyTag.component.spec.ts +7 -3
- package/src/pipeline/config/PipelineRegistry.spec.ts +38 -37
- package/src/pipeline/config/actions/templateJson/ShowPipelineTemplateJsonModal.spec.tsx +3 -3
- package/src/pipeline/config/pipelineConfigurer.controller.spec.ts +3 -3
- package/src/pipeline/config/services/PipelineConfigService.spec.ts +4 -3
- package/src/pipeline/config/stages/bakeManifest/helm/BakeHelmConfigForm.spec.tsx +51 -8
- package/src/pipeline/config/stages/bakeManifest/helm/BakeHelmConfigForm.tsx +36 -6
- package/src/pipeline/config/stages/findArtifactFromExecution/findArtifactFromExecution.controller.spec.ts +2 -1
- package/src/pipeline/config/stages/manualJudgment/manualJudgment.service.spec.ts +6 -4
- package/src/pipeline/config/stages/travis/travisExecutionDetails.controller.spec.ts +5 -2
- package/src/pipeline/config/stages/travis/travisStage.controller.spec.ts +3 -2
- package/src/pipeline/config/stages/unmatchedStageTypeStage/unmatchedStageTypeStage.controller.spec.ts +2 -1
- package/src/pipeline/config/stages/wait/SkipWait.tsx +3 -1
- package/src/pipeline/config/stages/wercker/werckerExecutionDetails.controller.spec.ts +5 -2
- package/src/pipeline/config/stages/wercker/werckerStage.controller.spec.ts +3 -2
- package/src/pipeline/config/templates/Variable.spec.tsx +6 -5
- package/src/pipeline/config/templates/configurePipelineTemplateModal.controller.spec.ts +7 -8
- package/src/pipeline/config/templates/v2/configurePipelineTemplateModalV2.controller.spec.ts +7 -8
- package/src/pipeline/config/templates/v2/pipelineTemplateV2.service.spec.ts +1 -1
- package/src/pipeline/config/triggers/TriggersPageContent.spec.tsx +4 -4
- package/src/pipeline/config/triggers/TriggersPageContent.tsx +1 -2
- package/src/pipeline/config/triggers/artifacts/docker/defaultDocker.artifact.spec.ts +1 -2
- package/src/pipeline/config/validation/pipelineConfig.validator.spec.ts +14 -15
- package/src/pipeline/create/CreatePipelineModal.spec.tsx +9 -7
- package/src/pipeline/details/StageFailureMessage.tsx +25 -10
- package/src/pipeline/details/executionDetailsSection.service.spec.ts +3 -2
- package/src/pipeline/executions/Executions.spec.tsx +9 -6
- package/src/pipeline/executions/executionAction/ExecutionAction.spec.tsx +1 -1
- package/src/pipeline/executions/executionGroup/ExecutionGroup.tsx +2 -1
- package/src/pipeline/filter/executionFilter.service.spec.ts +1 -1
- package/src/pipeline/pipeline.dataSource.spec.ts +8 -7
- package/src/pipeline/service/ExecutionsTransformer.spec.ts +2 -2
- package/src/pipeline/service/execution.service.spec.ts +7 -5
- package/src/pipeline/status/Artifact.spec.tsx +7 -6
- package/src/pipeline/status/ArtifactList.spec.tsx +7 -6
- package/src/pipeline/status/ExecutionParameters.spec.tsx +5 -4
- package/src/pipeline/status/ResolvedArtifactList.spec.tsx +7 -6
- package/src/plugins/deck.plugin.spec.ts +4 -2
- package/src/plugins/plugin.registry.spec.ts +6 -4
- package/src/presentation/forms/SpinFormik.spec.tsx +3 -2
- package/src/presentation/forms/fields/FormikFormField.spec.tsx +3 -3
- package/src/presentation/forms/hooks/useSaveRestoreMutuallyExclusiveFields.hook.spec.tsx +4 -3
- package/src/presentation/forms/inputs/ChecklistInput.spec.tsx +1 -1
- package/src/presentation/forms/inputs/RadioButtonInput.spec.tsx +2 -1
- package/src/presentation/forms/inputs/SelectInput.spec.tsx +2 -1
- package/src/presentation/forms/inputs/hooks/useInternalValidator.hook.spec.tsx +4 -3
- package/src/presentation/forms/validation/FormValidator.spec.ts +2 -2
- package/src/presentation/forms/validation/useValidationData.spec.tsx +4 -3
- package/src/presentation/hooks/useContainerClassNames.hook.spec.tsx +2 -1
- package/src/presentation/hooks/useData.hook.spec.tsx +3 -2
- package/src/presentation/hooks/useDebouncedValue.hook.spec.tsx +1 -1
- package/src/presentation/hooks/useDeepObjectDiff.hook.spec.tsx +2 -1
- package/src/presentation/hooks/useEventListener.hook.spec.tsx +2 -1
- package/src/presentation/hooks/useForceUpdate.hook.spec.tsx +2 -1
- package/src/presentation/hooks/useInterval.hook.spec.tsx +2 -1
- package/src/presentation/hooks/useIsMountedRef.hook.spec.tsx +1 -1
- package/src/presentation/hooks/useLatestCallback.hook.spec.tsx +2 -1
- package/src/presentation/hooks/useLatestPromise.hook.spec.tsx +9 -3
- package/src/presentation/hooks/useMountStatusRef.hook.spec.tsx +3 -1
- package/src/presentation/hooks/usePollingData.hook.spec.tsx +3 -2
- package/src/presentation/hooks/usePrevious.hook.spec.tsx +2 -1
- package/src/presentation/navigation/pageNavigator.component.spec.ts +3 -3
- package/src/presentation/spel/SpelInput.spec.tsx +9 -4
- package/src/presentation/spel/SpelService.spec.ts +1 -1
- package/src/scheduler/SchedulerFactory.spec.ts +2 -1
- package/src/search/infrastructure/infrastructure.controller.js +3 -0
- package/src/search/infrastructure/infrastructureSearch.service.ts +3 -2
- package/src/search/widgets/Filter.spec.tsx +5 -3
- package/src/search/widgets/Filters.spec.tsx +5 -3
- package/src/search/widgets/Search.spec.tsx +4 -2
- package/src/securityGroup/index.ts +2 -1
- package/src/securityGroup/securityGroupReader.service.spec.ts +8 -10
- package/src/serverGroup/configure/common/deployInitializer.component.spec.ts +7 -3
- package/src/serverGroup/configure/common/v2instanceArchetypeSelector.component.ts +1 -1
- package/src/serverGroup/details/capacity/CapacityDetailsSection.spec.tsx +1 -1
- package/src/serverGroup/details/scalingActivities/ScalingActivitiesModal.spec.ts +2 -1
- package/src/serverGroup/details/serverGroupWarningMessage.service.spec.ts +4 -4
- package/src/serverGroup/serverGroupWriter.service.spec.ts +10 -8
- package/src/slack/SlackReader.spec.ts +2 -1
- package/src/subnet/subnet.read.service.spec.ts +4 -3
- package/src/task/monitor/taskMonitor.spec.ts +6 -5
- package/src/task/task.dataSource.spec.ts +5 -4
- package/src/task/task.write.service.spec.ts +3 -1
- package/src/utils/clipboard/CopyToClipboard.spec.tsx +2 -1
- package/src/utils/json/json.utility.service.spec.ts +2 -1
- package/src/utils/timeFormatters.spec.ts +3 -2
- package/src/utils/workerPool.spec.ts +2 -1
- package/src/widgets/ApplicationsPickerInput.spec.tsx +3 -2
- package/src/widgets/spelText/SpelAutocompleteService.spec.ts +4 -3
- package/src/widgets/tags/Tag.spec.tsx +4 -2
- package/src/widgets/tags/TagList.spec.tsx +5 -3
- package/src/yamlEditor/yamlEditorUtils.spec.ts +1 -1
- package/dist/managed/overview/artifact/PendingVersion.d.ts +0 -7
|
@@ -71,18 +71,33 @@ export class StageFailureMessage extends React.Component<IStageFailureMessagePro
|
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
public render() {
|
|
74
|
-
const { message, messages } = this.props;
|
|
74
|
+
const { message, messages, stage } = this.props;
|
|
75
75
|
const { isFailed, failedTask, failedExecutionId, failedStageName, failedStageId } = this.state;
|
|
76
|
-
|
|
76
|
+
|
|
77
|
+
let stageMessages = message || !messages.length ? [message] : messages;
|
|
78
|
+
if (stageMessages.length > 0) {
|
|
77
79
|
const exceptionTitle = isFailed ? (messages.length ? 'Exceptions' : 'Exception') : 'Warning';
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
);
|
|
80
|
+
|
|
81
|
+
// expression evaluation warnings can get really long and hide actual failure messages, source
|
|
82
|
+
// filter out expression evaluation failure messages if either:
|
|
83
|
+
// - there was a stage failure (and failed expressions don't fail the stage)
|
|
84
|
+
// - expression evaluation was explicitly disabled for the stage(as Orca still processes expressions and populates
|
|
85
|
+
// warnings when evaluation is disabled disabled)
|
|
86
|
+
const shouldFilterExpressionFailures =
|
|
87
|
+
(isFailed && !stage.context?.failOnFailedExpressions) || stage.context?.skipExpressionEvaluation;
|
|
88
|
+
|
|
89
|
+
if (shouldFilterExpressionFailures) {
|
|
90
|
+
stageMessages = stageMessages.filter((m) => !m.startsWith('Failed to evaluate'));
|
|
91
|
+
|
|
92
|
+
if (stageMessages.length === 0) {
|
|
93
|
+
// no messages to be displayed after filtering
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
const displayMessages = stageMessages.map((m, i) => (
|
|
99
|
+
<Markdown key={i} message={m || StageFailureMessages.NO_REASON_PROVIDED} className="break-word" />
|
|
100
|
+
));
|
|
86
101
|
|
|
87
102
|
if (displayMessages) {
|
|
88
103
|
return (
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import type { StateParams, StateService } from '@uirouter/angularjs';
|
|
1
2
|
import { mock, noop } from 'angular';
|
|
2
|
-
import { StateParams, StateService } from '@uirouter/angularjs';
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import type { ExecutionDetailsSectionService } from './executionDetailsSection.service';
|
|
5
|
+
import { EXECUTION_DETAILS_SECTION_SERVICE } from './executionDetailsSection.service';
|
|
5
6
|
|
|
6
7
|
describe('executionDetailsSectionService', function () {
|
|
7
8
|
let $state: StateService,
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
-
import
|
|
2
|
-
import {
|
|
1
|
+
import type { IScope } from 'angular';
|
|
2
|
+
import { mock, noop } from 'angular';
|
|
3
|
+
import type { ReactWrapper } from 'enzyme';
|
|
4
|
+
import { mount } from 'enzyme';
|
|
3
5
|
import { set } from 'lodash';
|
|
4
|
-
import
|
|
6
|
+
import React from 'react';
|
|
5
7
|
|
|
6
|
-
import {
|
|
8
|
+
import type { IExecutionsProps, IExecutionsState } from './Executions';
|
|
9
|
+
import { Executions } from './Executions';
|
|
10
|
+
import type { Application } from '../../application';
|
|
7
11
|
import { ApplicationModelBuilder } from '../../application/applicationModel.builder';
|
|
8
12
|
import { INSIGHT_FILTER_STATE_MODEL } from '../../insight/insightFilterState.model';
|
|
9
|
-
import { REACT_MODULE } from '../../reactShims';
|
|
10
13
|
import { OVERRIDE_REGISTRY } from '../../overrideRegistry';
|
|
14
|
+
import { REACT_MODULE } from '../../reactShims';
|
|
11
15
|
import * as State from '../../state';
|
|
12
|
-
import { IExecutionsProps, IExecutionsState, Executions } from './Executions';
|
|
13
16
|
import { Spinner } from '../../widgets/spinners/Spinner';
|
|
14
17
|
|
|
15
18
|
describe('<Executions/>', () => {
|
|
@@ -9,6 +9,7 @@ import { MigrationTag } from './MigrationTag';
|
|
|
9
9
|
import { AccountTag } from '../../../account';
|
|
10
10
|
import type { Application } from '../../../application/application.model';
|
|
11
11
|
import { CollapsibleSectionStateCache } from '../../../cache';
|
|
12
|
+
import { SETTINGS } from '../../../config/settings';
|
|
12
13
|
import { PipelineTemplateReader, PipelineTemplateV2Service } from '../../config/templates';
|
|
13
14
|
import type {
|
|
14
15
|
IExecution,
|
|
@@ -36,7 +37,7 @@ import { Spinner } from '../../../widgets/spinners/Spinner';
|
|
|
36
37
|
|
|
37
38
|
import './executionGroup.less';
|
|
38
39
|
|
|
39
|
-
const ACCOUNT_TAG_OVERFLOW_LIMIT = 1;
|
|
40
|
+
const ACCOUNT_TAG_OVERFLOW_LIMIT = SETTINGS.accountTagLimit ?? 1;
|
|
40
41
|
|
|
41
42
|
export interface IExecutionGroupProps {
|
|
42
43
|
group: IExecutionGroup;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import type { ExecutionFilterModel } from './ExecutionFilterModel';
|
|
1
2
|
import { ExecutionFilterService } from './executionFilter.service';
|
|
2
|
-
import { ExecutionFilterModel } from './ExecutionFilterModel';
|
|
3
3
|
import { ExecutionState } from '../../state';
|
|
4
4
|
|
|
5
5
|
describe('ExecutionFilterService', function () {
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { IQProvider
|
|
1
|
+
import type { IQProvider } from 'angular';
|
|
2
|
+
import { mock } from 'angular';
|
|
2
3
|
|
|
3
|
-
import { Application } from '../application/application.model';
|
|
4
|
+
import type { Application } from '../application/application.model';
|
|
4
5
|
import { ApplicationModelBuilder } from '../application/applicationModel.builder';
|
|
5
6
|
import { ApplicationDataSourceRegistry } from '../application/service/ApplicationDataSourceRegistry';
|
|
6
|
-
import { EXECUTION_SERVICE } from './service/execution.service';
|
|
7
7
|
import { PipelineConfigService } from './config/services/PipelineConfigService';
|
|
8
|
+
import { EXECUTION_SERVICE } from './service/execution.service';
|
|
8
9
|
|
|
9
10
|
describe('Pipeline Data Source', function () {
|
|
10
11
|
let application: Application, executionService: any, $scope: ng.IScope, $q: ng.IQService;
|
|
@@ -93,8 +94,8 @@ describe('Pipeline Data Source', function () {
|
|
|
93
94
|
|
|
94
95
|
it('sets appropriate flags when executions reload fails; subscriber is responsible for error checking', function () {
|
|
95
96
|
spyOn(executionService, 'getExecutions').and.returnValue($q.reject(null));
|
|
96
|
-
let errorsHandled = 0
|
|
97
|
-
|
|
97
|
+
let errorsHandled = 0;
|
|
98
|
+
let successesHandled = 0;
|
|
98
99
|
configureApplication();
|
|
99
100
|
application.getDataSource('executions').activate();
|
|
100
101
|
|
|
@@ -141,8 +142,8 @@ describe('Pipeline Data Source', function () {
|
|
|
141
142
|
it('sets appropriate flags when pipeline config reload fails; subscriber is responsible for error checking', function () {
|
|
142
143
|
spyOn(PipelineConfigService, 'getPipelinesForApplication').and.returnValue($q.when([]));
|
|
143
144
|
spyOn(PipelineConfigService, 'getStrategiesForApplication').and.returnValue($q.reject([]));
|
|
144
|
-
let errorsHandled = 0
|
|
145
|
-
|
|
145
|
+
let errorsHandled = 0;
|
|
146
|
+
let successesHandled = 0;
|
|
146
147
|
configureApplication();
|
|
147
148
|
application.getDataSource('pipelineConfigs').activate();
|
|
148
149
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { map } from 'lodash';
|
|
2
2
|
|
|
3
|
-
import { Application } from '../../application';
|
|
4
3
|
import { ExecutionsTransformer } from './ExecutionsTransformer';
|
|
5
|
-
import {
|
|
4
|
+
import type { Application } from '../../application';
|
|
5
|
+
import type { IExecution } from '../../domain';
|
|
6
6
|
|
|
7
7
|
describe('ExecutionTransformerService', function () {
|
|
8
8
|
describe('transformExecution', () => {
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
+
import type { IQProvider, IQService, ITimeoutService } from 'angular';
|
|
2
|
+
import { mock, noop } from 'angular';
|
|
3
|
+
|
|
1
4
|
import { mockHttpClient } from '../../api/mock/jasmine';
|
|
2
|
-
import {
|
|
5
|
+
import type { Application } from '../../application';
|
|
6
|
+
import type { IExecution } from '../../domain';
|
|
7
|
+
import type { ExecutionService } from './execution.service';
|
|
8
|
+
import { EXECUTION_SERVICE } from './execution.service';
|
|
3
9
|
import { REACT_MODULE } from '../../reactShims';
|
|
4
|
-
|
|
5
|
-
import { EXECUTION_SERVICE, ExecutionService } from './execution.service';
|
|
6
|
-
import { IExecution } from '../../domain';
|
|
7
|
-
import { Application } from '../../application';
|
|
8
10
|
import * as State from '../../state';
|
|
9
11
|
|
|
10
12
|
describe('Service: executionService', () => {
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { ShallowWrapper, shallow } from 'enzyme';
|
|
3
1
|
import { mock } from 'angular';
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
import
|
|
2
|
+
import type { ShallowWrapper } from 'enzyme';
|
|
3
|
+
import { shallow } from 'enzyme';
|
|
4
|
+
import React from 'react';
|
|
7
5
|
|
|
8
|
-
import {
|
|
6
|
+
import type { IArtifactProps } from './Artifact';
|
|
7
|
+
import { Artifact } from './Artifact';
|
|
8
|
+
import type { IArtifact } from '../../domain';
|
|
9
|
+
import { REACT_MODULE } from '../../reactShims';
|
|
9
10
|
|
|
10
11
|
const ARTIFACT_TYPE = 'docker/image';
|
|
11
12
|
const ARTIFACT_NAME = 'example.com/container';
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { ShallowWrapper, shallow } from 'enzyme';
|
|
3
1
|
import { mock } from 'angular';
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
import
|
|
2
|
+
import type { ShallowWrapper } from 'enzyme';
|
|
3
|
+
import { shallow } from 'enzyme';
|
|
4
|
+
import React from 'react';
|
|
7
5
|
|
|
8
6
|
import { Artifact } from './Artifact';
|
|
9
|
-
import {
|
|
7
|
+
import type { IArtifactListProps } from './ArtifactList';
|
|
8
|
+
import { ArtifactList } from './ArtifactList';
|
|
9
|
+
import type { IArtifact } from '../../domain';
|
|
10
|
+
import { REACT_MODULE } from '../../reactShims';
|
|
10
11
|
|
|
11
12
|
const ARTIFACT_TYPE = 'docker/image';
|
|
12
13
|
const ARTIFACT_NAME = 'example.com/container';
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { ShallowWrapper, shallow } from 'enzyme';
|
|
3
1
|
import { mock } from 'angular';
|
|
2
|
+
import type { ShallowWrapper } from 'enzyme';
|
|
3
|
+
import { shallow } from 'enzyme';
|
|
4
|
+
import React from 'react';
|
|
4
5
|
|
|
6
|
+
import type { IDisplayableParameter, IExecutionParametersProps } from './ExecutionParameters';
|
|
7
|
+
import { ExecutionParameters } from './ExecutionParameters';
|
|
5
8
|
import { REACT_MODULE } from '../../reactShims';
|
|
6
9
|
|
|
7
|
-
import { IExecutionParametersProps, ExecutionParameters, IDisplayableParameter } from './ExecutionParameters';
|
|
8
|
-
|
|
9
10
|
describe('<ExecutionParameters/>', () => {
|
|
10
11
|
let component: ShallowWrapper<IExecutionParametersProps>;
|
|
11
12
|
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { ShallowWrapper, shallow } from 'enzyme';
|
|
3
1
|
import { mock } from 'angular';
|
|
4
|
-
import {
|
|
2
|
+
import type { ShallowWrapper } from 'enzyme';
|
|
3
|
+
import { shallow } from 'enzyme';
|
|
4
|
+
import React from 'react';
|
|
5
5
|
|
|
6
|
-
import { IArtifact, IExpectedArtifact } from '../../domain';
|
|
7
6
|
import { Artifact } from './Artifact';
|
|
8
|
-
|
|
9
|
-
import { ResolvedArtifactList
|
|
7
|
+
import type { IResolvedArtifactListProps } from './ResolvedArtifactList';
|
|
8
|
+
import { ResolvedArtifactList } from './ResolvedArtifactList';
|
|
9
|
+
import type { IArtifact, IExpectedArtifact } from '../../domain';
|
|
10
|
+
import { REACT_MODULE } from '../../reactShims';
|
|
10
11
|
|
|
11
12
|
const ARTIFACT_TYPE = 'docker/image';
|
|
12
13
|
const ARTIFACT_NAME = 'example.com/container';
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import type { IDeckPlugin } from './deck.plugin';
|
|
2
|
+
import { registerPluginExtensions } from './deck.plugin';
|
|
3
3
|
import { HelpContentsRegistry } from '../help';
|
|
4
4
|
import { Registry } from '../registry';
|
|
5
|
+
import type { SearchResultType } from '../search/searchResult';
|
|
6
|
+
import { searchResultTypeRegistry } from '../search/searchResult';
|
|
5
7
|
|
|
6
8
|
describe('deck plugin registerPluginExtensions', () => {
|
|
7
9
|
it('returns a promise', async () => {
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { mock } from 'angular';
|
|
2
|
+
|
|
3
3
|
import { RequestBuilder } from '../api';
|
|
4
|
-
import {
|
|
4
|
+
import type { IDeckPlugin } from './deck.plugin';
|
|
5
|
+
import type { IStageTypeConfig } from '../domain';
|
|
6
|
+
import type { IPluginMetaData } from './plugin.registry';
|
|
7
|
+
import { PluginRegistry } from './plugin.registry';
|
|
5
8
|
import { Registry } from '../registry';
|
|
6
|
-
import { mock } from 'angular';
|
|
7
9
|
|
|
8
10
|
const fakePromise = (result: any = undefined) => () => new Promise((resolve) => resolve(result));
|
|
9
11
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { FormikProps } from 'formik/dist/types';
|
|
2
|
-
import React from 'react';
|
|
3
1
|
import { mount } from 'enzyme';
|
|
2
|
+
import type { FormikProps } from 'formik/dist/types';
|
|
3
|
+
import React from 'react';
|
|
4
4
|
|
|
5
|
+
import type { IFormInputProps } from '../..';
|
|
5
6
|
import {
|
|
6
7
|
FormikFormField,
|
|
7
8
|
FormikSpelContextProvider,
|
|
8
|
-
IFormInputProps,
|
|
9
9
|
ReactSelectInput,
|
|
10
10
|
SpelToggle,
|
|
11
11
|
SpinFormik,
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { mount } from 'enzyme';
|
|
2
|
-
import {
|
|
3
|
-
import { Formik, FormikProps } from 'formik';
|
|
2
|
+
import type { Formik, FormikProps } from 'formik';
|
|
4
3
|
import React from 'react';
|
|
4
|
+
|
|
5
|
+
import { SpinFormik } from '../SpinFormik';
|
|
5
6
|
import { FormikFormField } from '../fields';
|
|
6
7
|
import { SelectInput } from '../inputs';
|
|
7
|
-
import {
|
|
8
|
+
import { useSaveRestoreMutuallyExclusiveFields } from './useSaveRestoreMutuallyExclusiveFields.hook';
|
|
8
9
|
|
|
9
10
|
function PizzaComponent() {
|
|
10
11
|
return (
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import { mount } from 'enzyme';
|
|
3
|
-
import
|
|
4
|
-
|
|
2
|
+
import React from 'react';
|
|
3
|
+
|
|
4
|
+
import type { IValidator } from '../../../forms/validation';
|
|
5
|
+
import type { IFormInputProps, IFormInputValidation } from '../interface';
|
|
5
6
|
import { useInternalValidator } from './useInternalValidator.hook';
|
|
6
7
|
|
|
7
8
|
function TestInputComponent(props: IFormInputProps & { validator?: IValidator; revalidateDeps?: any[] }) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Validators } from './validators';
|
|
2
1
|
import { FormValidator } from './FormValidator';
|
|
3
|
-
import {
|
|
2
|
+
import type { IArrayItemValidator, IValidator } from './validation';
|
|
3
|
+
import { Validators } from './validators';
|
|
4
4
|
|
|
5
5
|
const { maxValue, arrayNotEmpty } = Validators;
|
|
6
6
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { mount } from 'enzyme';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
|
|
4
|
-
import {
|
|
5
|
-
import { IValidationData
|
|
4
|
+
import { asyncMessage, errorMessage, infoMessage, messageMessage, successMessage, warningMessage } from './categories';
|
|
5
|
+
import type { IValidationData } from './useValidationData';
|
|
6
|
+
import { useValidationData } from './useValidationData';
|
|
6
7
|
|
|
7
8
|
interface IComponentProps {
|
|
8
9
|
validationMessage: React.ReactNode;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import { mount } from 'enzyme';
|
|
3
|
-
import
|
|
2
|
+
import React from 'react';
|
|
3
|
+
|
|
4
4
|
import { useData } from './useData.hook';
|
|
5
|
+
import type { IUseLatestPromiseResult } from './useLatestPromise.hook';
|
|
5
6
|
|
|
6
7
|
describe('useData hook', () => {
|
|
7
8
|
function TestComponent(props: any) {
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import { mount } from 'enzyme';
|
|
3
|
-
import
|
|
2
|
+
import React from 'react';
|
|
3
|
+
|
|
4
|
+
import type { IUseLatestPromiseResult } from './useLatestPromise.hook';
|
|
5
|
+
import { useLatestPromise } from './useLatestPromise.hook';
|
|
4
6
|
|
|
5
7
|
describe('useLatestPromise hook', () => {
|
|
6
8
|
// Remove the the refresh function for .isEqual assertions
|
|
@@ -68,9 +70,13 @@ describe('useLatestPromise hook', () => {
|
|
|
68
70
|
expect(spy).toHaveBeenCalledTimes(2);
|
|
69
71
|
|
|
70
72
|
deferred.reject('error');
|
|
73
|
+
let caught = false;
|
|
71
74
|
try {
|
|
72
75
|
await deferred.promise;
|
|
73
|
-
} catch (error) {
|
|
76
|
+
} catch (error) {
|
|
77
|
+
caught = true;
|
|
78
|
+
}
|
|
79
|
+
expect(caught).toBe(true);
|
|
74
80
|
component.setProps({});
|
|
75
81
|
|
|
76
82
|
expect(spy).toHaveBeenCalledTimes(3);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import React, { useEffect } from 'react';
|
|
2
1
|
import { mount } from 'enzyme';
|
|
3
|
-
import {
|
|
2
|
+
import React, { useEffect } from 'react';
|
|
3
|
+
|
|
4
|
+
import type { IUseLatestPromiseResult } from './useLatestPromise.hook';
|
|
4
5
|
import { usePollingData } from './usePollingData.hook';
|
|
5
6
|
|
|
6
7
|
describe('usePollingData hook', () => {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import
|
|
1
|
+
import UI_ROUTER from '@uirouter/angularjs';
|
|
2
2
|
import { mock } from 'angular';
|
|
3
|
+
import $ from 'jquery';
|
|
3
4
|
|
|
5
|
+
import type { INavigationPage } from './PageNavigationState';
|
|
4
6
|
import { PAGE_NAVIGATOR_COMPONENT } from './pageNavigator.component';
|
|
5
|
-
import { INavigationPage } from './PageNavigationState';
|
|
6
7
|
import { ScrollToService } from '../../utils/scrollTo/scrollTo.service';
|
|
7
|
-
import UI_ROUTER from '@uirouter/angularjs';
|
|
8
8
|
|
|
9
9
|
describe('Component: Page Navigator', () => {
|
|
10
10
|
let $compile: ng.ICompileService, $scope: ng.IScope, $timeout: ng.ITimeoutService, elem: JQuery;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
1
|
import { mount } from 'enzyme';
|
|
3
|
-
import
|
|
4
|
-
|
|
2
|
+
import React from 'react';
|
|
3
|
+
|
|
4
|
+
import type { IFormInputProps, IStageForSpelPreview, IValidator } from '..';
|
|
5
5
|
import { SpelInput } from './SpelInput';
|
|
6
|
+
import { SpelService } from './SpelService';
|
|
6
7
|
|
|
7
8
|
function defer() {
|
|
8
9
|
let resolve: Function, reject: Function;
|
|
@@ -208,10 +209,14 @@ describe('<SpelInput/>', () => {
|
|
|
208
209
|
expect(mockValidate).toHaveBeenCalledTimes(1);
|
|
209
210
|
expect(mockValidate.calls.mostRecent().returnValue).toMatch('Async: ');
|
|
210
211
|
|
|
212
|
+
let caught = false;
|
|
211
213
|
deferred.reject('something bad happened');
|
|
212
214
|
try {
|
|
213
215
|
await deferred.promise;
|
|
214
|
-
} catch (error) {
|
|
216
|
+
} catch (error) {
|
|
217
|
+
caught = true;
|
|
218
|
+
}
|
|
219
|
+
expect(caught).toBe(true);
|
|
215
220
|
component.setProps({});
|
|
216
221
|
|
|
217
222
|
expect(mockValidate).toHaveBeenCalledTimes(2);
|
|
@@ -136,6 +136,9 @@ angular
|
|
|
136
136
|
'createApplicationModal',
|
|
137
137
|
require('../../application/modal/newapplication.html'),
|
|
138
138
|
),
|
|
139
|
+
resolve: {
|
|
140
|
+
name: () => '',
|
|
141
|
+
},
|
|
139
142
|
controller: overrideRegistry.getController('CreateApplicationModalCtrl'),
|
|
140
143
|
controllerAs: 'newAppModal',
|
|
141
144
|
})
|