diff --git a/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.html b/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.html
index 09f615d..797648c 100644
--- a/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.html
+++ b/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.html
@@ -10,7 +10,8 @@
Trigger Name
-
@@ -19,7 +20,8 @@
Job Class
-
@@ -28,7 +30,8 @@
Start Date (optional)
-
@@ -44,7 +47,8 @@
End Date (optional)
-
Repeat Interval [in mills]
-
@@ -70,7 +75,8 @@
Repeat Count
-
@@ -91,7 +97,7 @@
diff --git a/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.spec.ts b/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.spec.ts
index 0ebd2cc..e44882b 100644
--- a/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.spec.ts
+++ b/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.spec.ts
@@ -11,13 +11,13 @@ import {MatIconModule} from '@angular/material/icon';
import {FormsModule} from '@angular/forms';
import {MatFormFieldModule} from '@angular/material/form-field';
import {MatNativeDateModule} from '@angular/material/core';
-import {MatDatepickerModule} from '@angular/material/datepicker';
import {MatInputModule} from '@angular/material/input';
import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
import {TriggerKey} from '../../model/triggerKey.model';
import {Trigger} from '../../model/trigger.model';
-import {NgxMatDatetimePickerModule} from '@angular-material-components/datetime-picker';
-import { NgxMatMomentModule } from '@angular-material-components/moment-adapter';
+import {JobDetail} from '../../model/jobDetail.model';
+import {SimpleTriggerForm} from '../../model/simple-trigger.form';
+import {SimpleTrigger} from '../../model/simple-trigger.model';
describe('SimpleTriggerConfig', () => {
@@ -44,6 +44,7 @@ describe('SimpleTriggerConfig', () => {
beforeEach(() => {
fixture = TestBed.createComponent(SimpleTriggerConfigComponent);
component = fixture.componentInstance;
+ fixture.detectChanges();
});
it('should fetch no triggers at the init', () => {
@@ -51,6 +52,87 @@ describe('SimpleTriggerConfig', () => {
httpTestingController.expectNone('/quartz-manager/simple-triggers/my-simple-trigger');
});
+ function setInputValue(componentDe: DebugElement, inputSelector: string, value: string) {
+ const inputDe = componentDe.query(By.css(inputSelector));
+ const inputEl = inputDe.nativeElement;
+ inputEl.value = value;
+ inputEl.dispatchEvent(new Event('input'));
+ fixture.detectChanges();
+ }
+
+ it('should emit an event when a new trigger is submitted', () => {
+ const mockTrigger = new Trigger();
+ mockTrigger.triggerKeyDTO = new TriggerKey('test-trigger', null);
+ mockTrigger.jobDetailDTO = {jobClassName: 'TestJob', description: null};
+
+ component.openTriggerForm();
+ fixture.detectChanges();
+
+ const componentDe: DebugElement = fixture.debugElement;
+ setInputValue(componentDe, '#triggerName', 'test-trigger');
+ expect(component.simpleTriggerForm.triggerName).toEqual('test-trigger');
+ setInputValue(componentDe, '#jobClass', 'TestJob');
+ // setInputValue(componentDe, '#startDate', '19/11/2022, 10:34:00 PM');
+ // setInputValue(componentDe, '#endDate', '21/11/2022, 10:34:00 PM');
+ setInputValue(componentDe, '#repeatInterval', '2000');
+ expect(component.simpleTriggerForm.repeatInterval).toEqual(2000);
+ setInputValue(componentDe, '#repeatCount', '100');
+ expect(component.simpleTriggerForm.repeatCount).toEqual(100);
+
+ const submitButton = componentDe.query(By.css('form > button[color="primary"]'));
+ expect(submitButton.nativeElement.textContent.trim()).toEqual('Submit');
+
+ let actualNewTrigger;
+ component.onNewTrigger.subscribe(simpleTrigger => actualNewTrigger = simpleTrigger);
+
+ submitButton.nativeElement.click();
+
+ const postSimpleTriggerReq = httpTestingController.expectOne('/quartz-manager/simple-triggers/test-trigger');
+ postSimpleTriggerReq.flush(mockTrigger);
+
+ expect(actualNewTrigger).toEqual(mockTrigger);
+ });
+
+ it('should not emit an event when an existing trigger is edited', () => {
+ const mockTriggerKey = new TriggerKey('test-trigger', null);
+ component.triggerKey = mockTriggerKey;
+ fixture.detectChanges();
+
+ const mockTrigger = new SimpleTrigger();
+ mockTrigger.triggerKeyDTO = new TriggerKey('test-trigger', null);
+ mockTrigger.jobDetailDTO = {jobClassName: 'TestJob', description: null};
+ mockTrigger.mayFireAgain = true;
+ const getSimpleTriggerReq = httpTestingController.expectOne('/quartz-manager/simple-triggers/test-trigger');
+ getSimpleTriggerReq.flush(mockTrigger);
+
+ component.simpleTriggerForm = {
+ triggerName: 'test-trigger',
+ jobClass: 'TestJob',
+ repeatInterval: 2000,
+ repeatCount: 100
+ };
+
+ component.openTriggerForm();
+ fixture.detectChanges();
+
+ const componentDe: DebugElement = fixture.debugElement;
+ setInputValue(componentDe, '#repeatInterval', '4000');
+ expect(component.simpleTriggerForm.repeatInterval).toEqual(4000);
+
+ const submitButton = componentDe.query(By.css('form > button[color="primary"]'));
+ expect(submitButton.nativeElement.textContent.trim()).toEqual('Submit');
+
+ let actualNewTrigger;
+ component.onNewTrigger.subscribe(simpleTrigger => actualNewTrigger = simpleTrigger);
+
+ submitButton.nativeElement.click();
+
+ const putSimpleTriggerReq = httpTestingController.expectOne('/quartz-manager/simple-triggers/test-trigger');
+ putSimpleTriggerReq.flush(mockTrigger);
+
+ expect(actualNewTrigger).toBeUndefined();
+ });
+
it('should fetch and display the trigger when the triggerKey is passed as input', () => {
const mockTriggerKey = new TriggerKey('my-simple-trigger', null);
component.triggerKey = mockTriggerKey;
@@ -58,6 +140,7 @@ describe('SimpleTriggerConfig', () => {
const mockTrigger = new Trigger();
mockTrigger.triggerKeyDTO = mockTriggerKey;
+ mockTrigger.jobDetailDTO = {jobClassName: 'TestJob', description: null};
const getSimpleTriggerReq = httpTestingController.expectOne('/quartz-manager/simple-triggers/my-simple-trigger');
getSimpleTriggerReq.flush(mockTrigger);
diff --git a/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.ts b/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.ts
index 8c751ed..1af359e 100644
--- a/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.ts
+++ b/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.ts
@@ -85,7 +85,10 @@ export class SimpleTriggerConfigComponent implements OnInit {
this.fetchedTriggers = true;
this.triggerInProgress = this.trigger.mayFireAgain;
- this.onNewTrigger.emit(retTrigger);
+ if (schedulerServiceCall === this.schedulerService.saveSimpleTriggerConfig) {
+ this.onNewTrigger.emit(retTrigger);
+ }
+
this.closeTriggerForm();
}, error => {
this.simpleTriggerForm = this.formBackup;
@@ -108,8 +111,8 @@ export class SimpleTriggerConfigComponent implements OnInit {
simpleTriggerCommand.triggerName = simpleTriggerForm.triggerName;
simpleTriggerCommand.repeatCount = simpleTriggerForm.repeatCount;
simpleTriggerCommand.repeatInterval = simpleTriggerForm.repeatInterval;
- simpleTriggerCommand.startDate = simpleTriggerForm.startDate.toDate();
- simpleTriggerCommand.endDate = simpleTriggerForm.endDate.toDate();
+ simpleTriggerCommand.startDate = simpleTriggerForm.startDate?.toDate();
+ simpleTriggerCommand.endDate = simpleTriggerForm.endDate?.toDate();
return simpleTriggerCommand;
}
diff --git a/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.html b/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.html
index 67cac7d..88677dd 100644
--- a/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.html
+++ b/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.html
@@ -9,7 +9,7 @@
+ [ngClass]="{'selectedTrigger': selectedTrigger && selectedTrigger.name==triggerKey.name}">
{{ triggerKey.name }}
diff --git a/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.ts b/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.ts
index 124321b..2088bb3 100644
--- a/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.ts
+++ b/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.ts
@@ -50,8 +50,7 @@ export class TriggerListComponent implements OnInit {
this.triggerKeys = triggerKeys;
if (!triggerKeys || triggerKeys.length === 0) {
this.onNewTriggerBtnClicked();
- }
- else {
+ } else {
this.selectTrigger(this.triggerKeys[0]);
}
})