-
+
diff --git a/src/main/webapp/app/module/primary/project-actions/ProjectActions.component.ts b/src/main/webapp/app/module/primary/project-actions/ProjectActions.component.ts
index f362033b8c9..03f802d11bf 100644
--- a/src/main/webapp/app/module/primary/project-actions/ProjectActions.component.ts
+++ b/src/main/webapp/app/module/primary/project-actions/ProjectActions.component.ts
@@ -14,6 +14,10 @@ export default defineComponent({
type: String,
required: true,
},
+ isPrettierButtonEnabled: {
+ type: Boolean,
+ required: true,
+ },
},
emits: ['operationStarted', 'operationEnded'],
setup(props, { emit }) {
@@ -27,6 +31,10 @@ export default defineComponent({
return operationInProgress.value || empty(props.folderPath);
};
+ const disabledPrettier = (): boolean => {
+ return disabledActions() || !props.isPrettierButtonEnabled;
+ };
+
const formatProject = (): void => {
startOperation();
@@ -85,6 +93,7 @@ export default defineComponent({
return {
disabledActions,
+ disabledPrettier,
formatProject,
downloadProject,
};
diff --git a/src/main/webapp/app/module/primary/project-actions/ProjectActions.html b/src/main/webapp/app/module/primary/project-actions/ProjectActions.html
index 480b4fb6cb6..7cd0318f99d 100644
--- a/src/main/webapp/app/module/primary/project-actions/ProjectActions.html
+++ b/src/main/webapp/app/module/primary/project-actions/ProjectActions.html
@@ -7,7 +7,7 @@
tabindex="5"
class="jhlite-button -block"
@click="formatProject()"
- :disabled="disabledActions()"
+ :disabled="disabledPrettier()"
data-selector="format-button"
>
diff --git a/src/test/javascript/spec/module/domain/Modules.fixture.ts b/src/test/javascript/spec/module/domain/Modules.fixture.ts
index 3b549aa56e9..be55bb72a58 100644
--- a/src/test/javascript/spec/module/domain/Modules.fixture.ts
+++ b/src/test/javascript/spec/module/domain/Modules.fixture.ts
@@ -99,7 +99,7 @@ export const defaultProjectHistory = (): ProjectHistory => ({
});
export const projectHistoryWithInit = (): ProjectHistory => ({
- modules: [moduleSlug('init')],
+ modules: [moduleSlug('init'), moduleSlug('prettier')],
properties: appliedModuleProperties(),
});
diff --git a/src/test/javascript/spec/module/domain/landscape/Landscape.fixture.ts b/src/test/javascript/spec/module/domain/landscape/Landscape.fixture.ts
index b44fc740981..595a1958957 100644
--- a/src/test/javascript/spec/module/domain/landscape/Landscape.fixture.ts
+++ b/src/test/javascript/spec/module/domain/landscape/Landscape.fixture.ts
@@ -13,6 +13,7 @@ export const defaultLandscape = (): Landscape =>
elements: [
initialModule('infinitest', 'Add infinitest filters', [applicationBaseNamePropertyDefinition()], []),
initialModule('init', 'Add some initial tools', [applicationBaseNamePropertyDefinition()], []),
+ initialModule('prettier', 'Add prettier', [applicationBaseNamePropertyDefinition()], []),
],
},
{
diff --git a/src/test/javascript/spec/module/primary/landscape/LandscapeComponent.spec.ts b/src/test/javascript/spec/module/primary/landscape/LandscapeComponent.spec.ts
index 187abcf186a..60c7eda47d5 100644
--- a/src/test/javascript/spec/module/primary/landscape/LandscapeComponent.spec.ts
+++ b/src/test/javascript/spec/module/primary/landscape/LandscapeComponent.spec.ts
@@ -287,7 +287,7 @@ describe('Landscape', () => {
assertSelectedConnectorsCount(wrapper, 1);
expect(wrapper.find(wrappedElement('modules-apply-new-button')).text()).toContain('(1)');
- expect(wrapper.find(wrappedElement('modules-apply-all-button')).text()).toContain('(2)');
+ expect(wrapper.find(wrappedElement('modules-apply-all-button')).text()).toContain('(3)');
});
it('Should not select not selectable module', async () => {
@@ -370,7 +370,9 @@ describe('Landscape', () => {
const [appliedModules] = modules.applyAll.lastCall.args as ModulesToApply[];
expect(appliedModules.modules.map(slug => slug.get())).toEqual(['vue']);
expect(wrapper.find(wrappedElement('modules-apply-new-button')).attributes('disabled')).toBeDefined();
-
+ const component: any = wrapper.vm;
+ expect(component.isApplied('vue')).toBeTruthy();
+ expect(component.isApplied('angular')).toBeFalsy();
const [message] = alertBus.success.lastCall.args;
expect(message).toBe('Modules applied');
});
diff --git a/src/test/javascript/spec/module/primary/project-actions/ProjectActionsComponent.spec.ts b/src/test/javascript/spec/module/primary/project-actions/ProjectActionsComponent.spec.ts
index 1043f37b741..fdba4a10ded 100644
--- a/src/test/javascript/spec/module/primary/project-actions/ProjectActionsComponent.spec.ts
+++ b/src/test/javascript/spec/module/primary/project-actions/ProjectActionsComponent.spec.ts
@@ -9,6 +9,7 @@ import sinon from 'sinon';
interface WrapperOptions {
folderPath: string;
+ isPrettierButtonEnabled: boolean;
modules: ModulesRepository;
}
@@ -16,15 +17,17 @@ const alertBus = stubAlertBus();
const windowStub = stubWindow();
const wrap = (options?: Partial): VueWrapper => {
- const { modules, folderPath }: WrapperOptions = {
+ const { modules, folderPath, isPrettierButtonEnabled }: WrapperOptions = {
folderPath: '/dummy',
modules: stubModulesRepository(),
+ isPrettierButtonEnabled: true,
...options,
};
return shallowMount(ProjectActionsVue, {
props: {
folderPath,
+ isPrettierButtonEnabled,
},
global: { provide: { modules, alertBus, globalWindow: windowStub } },
});
@@ -45,6 +48,18 @@ describe('Project actions', () => {
expect(wrapper.find(wrappedElement('format-button')).attributes('disabled')).toBeDefined();
});
+
+ it('should disable format button according to prop', async () => {
+ const wrapper = wrap({ isPrettierButtonEnabled: false });
+
+ expect(wrapper.find(wrappedElement('format-button')).attributes('disabled')).toBeDefined();
+ });
+
+ it('should enable format button according to prop', async () => {
+ const wrapper = wrap({ isPrettierButtonEnabled: true });
+
+ expect(wrapper.find(wrappedElement('format-button')).attributes('disabled')).toBeUndefined();
+ });
});
it('Should format file using repository', async () => {
diff --git a/src/test/javascript/spec/module/secondary/RestModulesRepository.spec.ts b/src/test/javascript/spec/module/secondary/RestModulesRepository.spec.ts
index 736d9608cdd..23bdeb377e8 100644
--- a/src/test/javascript/spec/module/secondary/RestModulesRepository.spec.ts
+++ b/src/test/javascript/spec/module/secondary/RestModulesRepository.spec.ts
@@ -148,6 +148,7 @@ const restLandscape = (): RestLandscape => ({
elements: [
landscapeModule('infinitest', 'Add infinitest filters', applicationBaseNameProperties()),
landscapeModule('init', 'Add some initial tools', applicationBaseNameProperties()),
+ landscapeModule('prettier', 'Add prettier', applicationBaseNameProperties()),
],
},
{