Skip to content
This repository has been archived by the owner on Aug 8, 2024. It is now read-only.

Commit

Permalink
Merge pull request #55 from jakebathman/add-create-alarm-function
Browse files Browse the repository at this point in the history
Add createAlarm action
  • Loading branch information
joshfarrant committed Dec 31, 2018
2 parents bcb32af + 054c366 commit 5f654f8
Show file tree
Hide file tree
Showing 6 changed files with 120 additions and 0 deletions.
58 changes: 58 additions & 0 deletions __tests__/actions/createAlarm.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import { createAlarm } from '../../src/actions';

describe('createAlarm function', () => {

it('is a function', () => {
expect(typeof createAlarm).toBe('function');
});

it('builds a createAlarm action', () => {
const expected = {
WFWorkflowActionIdentifier: 'is.workflow.actions.alarm.create',
WFWorkflowActionParameters: {
WFLabel: '',
WFTime: '',
WFFrequency: [],
},
};
const actual = createAlarm({});

expect(actual).toEqual(expected);
});

it('builds a createAlarm action with nonrepeating alarm inputs', () => {
const expected = {
WFWorkflowActionIdentifier: 'is.workflow.actions.alarm.create',
WFWorkflowActionParameters: {
WFLabel: 'Label for 7:42 PM alarm',
WFTime: '7:42 PM',
WFFrequency: [],
},
};
const actual = createAlarm({
label: 'Label for 7:42 PM alarm',
time: '7:42 PM',
});

expect(actual).toEqual(expected);
});

it('builds a createAlarm action with repeating days', () => {
const expected = {
WFWorkflowActionIdentifier: 'is.workflow.actions.alarm.create',
WFWorkflowActionParameters: {
WFLabel: 'Label for 7:42 PM alarm',
WFTime: '7:42 PM',
WFFrequency: ['Sunday', 'Tuesday', 'Friday'],
},
};
const actual = createAlarm({
label: 'Label for 7:42 PM alarm',
time: '7:42 PM',
repeat: ['Sunday', 'Tuesday', 'Friday'],
});

expect(actual).toEqual(expected);
});

});
44 changes: 44 additions & 0 deletions src/actions/createAlarm.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import WFFrequency from '../interfaces/WF/WFFrequency';
import WFSerialization from '../interfaces/WF/WFSerialization';
import WFWorkflowAction from '../interfaces/WF/WFWorkflowAction';

/**
* Create alarm action. Creates an alarm in the Clock app.
*
* ```js
* createAlarm({
* label: 'Alarm',
* time: '8 AM',
* repeat: ['Sunday', 'Saturday'],
* });
* ```
*/
const createAlarm = (
options: {
/** The alarm label */
label?: WFSerialization | string,

/** The alarm time */
time?: WFSerialization | string,

/** Whether the alarm should repeat on certain days */
repeat?: WFFrequency[],
},
): WFWorkflowAction => {
const {
label = '',
time = '',
repeat = [],
} = options;

return {
WFWorkflowActionIdentifier: 'is.workflow.actions.alarm.create',
WFWorkflowActionParameters: {
WFLabel: label,
WFTime: time,
WFFrequency: repeat,
},
};
};

export default createAlarm;
2 changes: 2 additions & 0 deletions src/actions/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import conditional from './conditional';
import continueShortcutInApp from './continueShortcutInApp';
import correctSpelling from './correctSpelling';
import count from './count';
import createAlarm from './createAlarm';
import createNote from './createNote';
import date from './date';
import deletePhotos from './deletePhotos';
Expand Down Expand Up @@ -129,6 +130,7 @@ export {
continueShortcutInApp,
correctSpelling,
count,
createAlarm,
createNote,
date,
deletePhotos,
Expand Down
11 changes: 11 additions & 0 deletions src/interfaces/WF/WFFrequency.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
type WFFrequency = (
'Sunday'
| 'Monday'
| 'Tuesday'
| 'Wednesday'
| 'Thursday'
| 'Friday'
| 'Saturday'
);

export default WFFrequency;
1 change: 1 addition & 0 deletions src/interfaces/WF/WFWorkflowActionIdentifier.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ type WFWorkflowActionIdentifier = (
| 'is.workflow.actions.appendvariable'
| 'is.workflow.actions.airdropdocument'
| 'is.workflow.actions.airplanemode.set'
| 'is.workflow.actions.alarm.create'
| 'is.workflow.actions.alert'
| 'is.workflow.actions.appendvariable'
| 'is.workflow.actions.ask'
Expand Down
4 changes: 4 additions & 0 deletions src/interfaces/WF/WFWorkflowActionParameters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import WFDateFormatStyle from './WFDateFormatStyle';
import WFDeviceDetail from './WFDeviceDetail';
import WFEncodeMode from './WFEncodeMode';
import WFFlashlightSetting from './WFFlashlightSetting';
import WFFrequency from './WFFrequency';
import WFGetDictionaryValueType from './WFGetDictionaryValueType';
import WFHashType from './WFHashType';
import WFHTTPBodyType from './WFHTTPBodyType';
Expand Down Expand Up @@ -66,6 +67,7 @@ interface WFWorkflowActionParameters {
WFDontIncludeFileExtension?: boolean;
WFEncodeMode?: WFEncodeMode;
WFFlashlightSetting?: WFFlashlightSetting;
WFFrequency?: WFFrequency[];
WFFormValues?: WFSerialization;
WFGetDictionaryValueType?: WFGetDictionaryValueType;
WFGetLatestPhotoCount?: number;
Expand All @@ -79,6 +81,7 @@ interface WFWorkflowActionParameters {
WFISO8601IncludeTime?: WFSerialization | boolean;
WFJavaScript?: WFSerialization | string;
WFJSONValues?: WFSerialization;
WFLabel?: WFSerialization | string;
WFMatchTextCaseSensitive?: boolean;
WFMatchTextPattern?: WFSerialization | string;
WFMathOperand?: number;
Expand Down Expand Up @@ -108,6 +111,7 @@ interface WFWorkflowActionParameters {
WFSkipBackBehavior?: WFSkipBackBehavior;
WFStatisticsOperation?: WFSerialization | WFStatisticsOperation;
WFTextActionText?: WFSerialization | string;
WFTime?: WFSerialization | string;
WFTimeFormatStyle?: WFSerialization | WFTimeFormatStyle;
WFTimeUntilCustomDate?: WFSerialization | string;
WFTimeUntilReferenceDate?: WFTimeUntilReferenceDate;
Expand Down

0 comments on commit 5f654f8

Please sign in to comment.