Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
97 changes: 97 additions & 0 deletions shell/edit/__tests__/fleet.cattle.io.helmop.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,49 @@ describe('view: fleet.cattle.io.helmop, mode: view', () => {
});
});

describe('helmOp component lifecycle', () => {
it('should have registerBeforeHook method available and call updateBeforeSave', () => {
const helmOpOptions = {
metadata: {
name: 'test-helmop',
namespace: 'test-namespace',
labels: {}
}
};

const wrapper = mount(HelmOpComponent, initHelmOp({ mode: _CREATE }, helmOpOptions));

// Mock registerBeforeHook to spy on calls
const mockRegisterBeforeHook = jest.fn();

wrapper.vm.registerBeforeHook = mockRegisterBeforeHook;

// Verify updateBeforeSave method exists
expect(typeof wrapper.vm.updateBeforeSave).toBe('function');

// Call the method that would be called during created lifecycle
wrapper.vm.registerBeforeHook(wrapper.vm.updateBeforeSave);

// Verify that registerBeforeHook was called with updateBeforeSave function
expect(mockRegisterBeforeHook).toHaveBeenCalledWith(wrapper.vm.updateBeforeSave);
});

it('should have doCreateSecrets method available for registerBeforeHook', () => {
const helmOpOptions = {
metadata: {
name: 'test-helmop',
namespace: 'test-namespace',
labels: {}
}
};

const wrapper = mount(HelmOpComponent, initHelmOp({ mode: _CREATE }, helmOpOptions));

// Verify doCreateSecrets method exists
expect(typeof wrapper.vm.doCreateSecrets).toBe('function');
});
});

describe.each([
_CREATE,
_EDIT,
Expand Down Expand Up @@ -262,4 +305,58 @@ describe.each([

expect(wrapper.vm.value.spec.downstreamResources).toStrictEqual([{ name: 'configMap2', kind: 'ConfigMap' }, { name: 'configMap3', kind: 'ConfigMap' }]);
});

if (mode === _CREATE) {
it('should set created-by-user-id label when updateBeforeSave is called in CREATE mode', () => {
const mockCurrentUser = { id: 'user-123' };
const helmOpOptions = {
metadata: {
name: 'test-helmop',
namespace: 'test-namespace',
labels: {}
}
};
const wrapper = mount(HelmOpComponent, initHelmOp({ mode, realMode: mode }, helmOpOptions));

// Ensure metadata.labels exists
if (!wrapper.vm.value.metadata.labels) {
wrapper.vm.value.metadata.labels = {};
}

// Mock the currentUser
(wrapper.vm as any).currentUser = mockCurrentUser;

// Call updateBeforeSave method
wrapper.vm.updateBeforeSave();

// Should set the created-by-user-id label in CREATE mode
expect(wrapper.vm.value.metadata.labels['fleet.cattle.io/created-by-user-id']).toBe('user-123');
});
} else {
it('should not set created-by-user-id label when updateBeforeSave is called in EDIT mode', () => {
const mockCurrentUser = { id: 'user-123' };
const helmOpOptions = {
metadata: {
name: 'test-helmop',
namespace: 'test-namespace',
labels: {}
}
};
const wrapper = mount(HelmOpComponent, initHelmOp({ mode, realMode: mode }, helmOpOptions));

// Ensure metadata.labels exists
if (!wrapper.vm.value.metadata.labels) {
wrapper.vm.value.metadata.labels = {};
}

// Mock the currentUser
(wrapper.vm as any).currentUser = mockCurrentUser;

// Call updateBeforeSave method
wrapper.vm.updateBeforeSave();

// Should not set the label in EDIT mode
expect(wrapper.vm.value.metadata.labels['fleet.cattle.io/created-by-user-id']).toBeUndefined();
});
}
});
5 changes: 5 additions & 0 deletions shell/edit/fleet.cattle.io.helmop.vue
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ export default {
type: CONFIG_MAP
}
}, this.$store);
this.currentUser = await this.value.getCurrentUser();
},

data() {
Expand Down Expand Up @@ -405,6 +406,10 @@ export default {

updateBeforeSave() {
this.value.spec['correctDrift'] = { enabled: this.correctDriftEnabled };

if (this.mode === _CREATE) {
this.value.metadata.labels[FLEET_LABELS.CREATED_BY_USER_ID] = this.currentUser.id;
}
},

durationSeconds(value) {
Expand Down
Loading