Skip to content

Commit

Permalink
Merge ca7336e into 57e452a
Browse files Browse the repository at this point in the history
  • Loading branch information
bachya committed Dec 2, 2018
2 parents 57e452a + ca7336e commit b5a1b90
Show file tree
Hide file tree
Showing 7 changed files with 133 additions and 0 deletions.
72 changes: 72 additions & 0 deletions __tests__/actions/base64Encode.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
import { base64Encode } from '../../src/actions';

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

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

it('builds a base64Encode action (encode with no line break)', () => {
const expected = {
WFWorkflowActionIdentifier: 'is.workflow.actions.base64encode',
WFWorkflowActionParameters: {
WFEncodeMode: 'Encode',
WFBase64LineBreakMode: 'None',
},
};
const actual = base64Encode({
encodeMode: 'Encode',
lineBreakMode: 'None',
});

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

it('builds a base64Encode action (encode with 64-char line break)', () => {
const expected = {
WFWorkflowActionIdentifier: 'is.workflow.actions.base64encode',
WFWorkflowActionParameters: {
WFEncodeMode: 'Encode',
WFBase64LineBreakMode: 'Every 64 Characters',
},
};
const actual = base64Encode({
encodeMode: 'Encode',
lineBreakMode: 'Every 64 Characters',
});

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

it('builds a base64Encode action (encode with 76-char line break)', () => {
const expected = {
WFWorkflowActionIdentifier: 'is.workflow.actions.base64encode',
WFWorkflowActionParameters: {
WFEncodeMode: 'Encode',
WFBase64LineBreakMode: 'Every 76 Characters',
},
};
const actual = base64Encode({
encodeMode: 'Encode',
lineBreakMode: 'Every 76 Characters',
});

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

it('builds a base64Encode action (decode)', () => {
const expected = {
WFWorkflowActionIdentifier: 'is.workflow.actions.base64encode',
WFWorkflowActionParameters: {
WFEncodeMode: 'Decode',
WFBase64LineBreakMode: 'Every 76 Characters',
},
};
const actual = base64Encode({
encodeMode: 'Decode',
});

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

});
41 changes: 41 additions & 0 deletions src/actions/base64Encode.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import { withActionOutput } from '../utils';

import WFBase64LineBreakMode from '../interfaces/WF/WFBase64LineBreakMode';
import WFEncodeMode from '../interfaces/WF/WFEncodeMode';
import WFSerialization from '../interfaces/WF/WFSerialization';
import WFWorkflowAction from '../interfaces/WF/WFWorkflowAction';

/**
* Base 64 Encode Action. Base 64-encode content.
*
* ```js
* base64Encode({
* encodeMode: 'Encode',
* lineBreakMode: 'Every 76 Characters',
* });
* ```
*/
const base64Encode = (
options: {
/** The encoding mode to use */
encodeMode?: WFEncodeMode,

/** The line break mode to use */
lineBreakMode?: WFSerialization | WFBase64LineBreakMode,
},
): WFWorkflowAction => {
const {
encodeMode = 'Encode',
lineBreakMode = 'Every 76 Characters',
} = options;

return {
WFWorkflowActionIdentifier: 'is.workflow.actions.base64encode',
WFWorkflowActionParameters: {
WFEncodeMode: encodeMode,
WFBase64LineBreakMode: lineBreakMode,
},
};
};

export default withActionOutput(base64Encode);
2 changes: 2 additions & 0 deletions src/actions/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import addToVariable from './addToVariable';
import ask from './ask';
import base64Encode from './base64Encode';
import calculate from './calculate';
import chooseFromMenu from './chooseFromMenu';
import comment from './comment';
Expand Down Expand Up @@ -38,6 +39,7 @@ import waitToReturn from './waitToReturn';
export {
addToVariable,
ask,
base64Encode,
calculate,
chooseFromMenu,
comment,
Expand Down
7 changes: 7 additions & 0 deletions src/interfaces/WF/WFBase64LineBreakMode.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
type WFBase64LineBreakMode = (
'None'
| 'Every 64 Characters'
| 'Every 76 Characters'
);

export default WFBase64LineBreakMode;
6 changes: 6 additions & 0 deletions src/interfaces/WF/WFEncodeMode.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
type WFEncodeMode = (
'Encode'
| 'Decode'
);

export default WFEncodeMode;
1 change: 1 addition & 0 deletions src/interfaces/WF/WFWorkflowActionIdentifier.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ type WFWorkflowActionIdentifier = (
'is.workflow.actions.appendvariable'
| 'is.workflow.actions.airplanemode.set'
| 'is.workflow.actions.ask'
| 'is.workflow.actions.base64encode'
| 'is.workflow.actions.bluetooth.set'
| 'is.workflow.actions.cellulardata.set'
| 'is.workflow.actions.choosefrommenu'
Expand Down
4 changes: 4 additions & 0 deletions src/interfaces/WF/WFWorkflowActionParameters.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import WFAskActionDateGranularity from './WFAskActionDateGranularity';
import WFBase64LineBreakMode from './WFBase64LineBreakMode';
import WFCondition from './WFCondition';
import WFCountType from './WFCountType';
import WFEncodeMode from './WFEncodeMode';
import WFFlashlightSetting from './WFFlashlightSetting';
import WFGetDictionaryValueType from './WFGetDictionaryValueType';
import WFHTTPBodyType from './WFHTTPBodyType';
Expand All @@ -22,6 +24,7 @@ interface WFWorkflowActionParameters {
WFAskActionDateGranularity?: WFAskActionDateGranularity;
WFAskActionDefaultAnswer?: WFSerialization | string;
WFAskActionPrompt?: WFSerialization | string;
WFBase64LineBreakMode?: WFSerialization | WFBase64LineBreakMode;
WFBrightness?: number;
WFCommentActionText?: string;
WFCondition?: WFCondition;
Expand All @@ -31,6 +34,7 @@ interface WFWorkflowActionParameters {
WFDelayTime?: number;
WFDictionaryKey?: string;
WFDontIncludeFileExtension?: boolean;
WFEncodeMode?: WFEncodeMode;
WFFlashlightSetting?: WFFlashlightSetting;
WFFormValues?: WFSerialization;
WFGetDictionaryValueType?: WFGetDictionaryValueType;
Expand Down

0 comments on commit b5a1b90

Please sign in to comment.