@forgehive/record-tape 0.1.6 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,30 +1,26 @@
1
1
  import { Task, createTask, Schema } from '@forgehive/task'
2
- import { RecordTape, LogItem } from '../index'
2
+ import { RecordTape } from '../index'
3
3
 
4
4
  describe('Task listener', () => {
5
5
  it('Should listen to task events', async () => {
6
- type InputType = Record<string, unknown>
7
- type OutputType = { value: number, foo: boolean }
8
-
9
- const tape = new RecordTape<InputType, OutputType>({})
10
- const task = new Task(
11
- async (_input: InputType): Promise<OutputType> => {
6
+ const tape = new RecordTape({})
7
+ const task = createTask({
8
+ name: 'test',
9
+ schema: new Schema({}),
10
+ boundaries: {},
11
+ fn: async (_input) => {
12
12
  return { value: 1, foo: true }
13
13
  }
14
- )
15
-
16
- task.addListener<InputType, OutputType>((record) => {
17
- const logItem: LogItem<InputType, OutputType> = record.error
18
- ? { input: record.input, error: record.error, boundaries: record.boundaries }
19
- : { input: record.input, output: record.output as OutputType, boundaries: record.boundaries }
14
+ })
20
15
 
21
- tape.addLogItem('test', logItem)
16
+ task.addListener((record) => {
17
+ tape.push(record)
22
18
  })
23
19
 
24
20
  await task.run({})
25
21
 
26
22
  expect(tape.getLog()).toEqual([
27
- { name: 'test', type: 'success', input: {}, output: { value: 1, foo: true }, boundaries: {} }
23
+ { type: 'success', input: {}, output: { value: 1, foo: true }, boundaries: {}, metadata: {}, taskName: 'test' }
28
24
  ])
29
25
  })
30
26
 
@@ -41,12 +37,9 @@ describe('Task listener', () => {
41
37
 
42
38
  const tape = new RecordTape<{ value: number }, { result: number }>({})
43
39
 
40
+ task.setName('test')
44
41
  task.addListener<{ value: number }, { result: number }>((record) => {
45
- const logItem: LogItem<{ value: number }, { result: number }> = record.error
46
- ? { input: record.input, error: record.error, boundaries: record.boundaries }
47
- : { input: record.input, output: record.output as { result: number }, boundaries: record.boundaries }
48
-
49
- tape.addLogItem('test', logItem)
42
+ tape.push(record)
50
43
  })
51
44
 
52
45
  try {
@@ -60,8 +53,8 @@ describe('Task listener', () => {
60
53
  const log = tape.getLog()
61
54
 
62
55
  expect(log).toEqual([
63
- { name: 'test', type: 'error', input: { value: 5 }, error: 'Value is not between 10 and 20', boundaries: {} },
64
- { name: 'test', type: 'success', input: { value: 15 }, output: { result: 30 }, boundaries: {} }
56
+ { type: 'error', input: { value: 5 }, error: 'Value is not between 10 and 20', boundaries: {}, metadata: {}, output: undefined, taskName: 'test' },
57
+ { type: 'success', input: { value: 15 }, output: { result: 30 }, boundaries: {}, metadata: {}, taskName: 'test' }
65
58
  ])
66
59
  })
67
60
 
@@ -79,14 +72,14 @@ describe('Task listener', () => {
79
72
  }
80
73
 
81
74
  // Create the task using createTask
82
- const task = createTask(
75
+ const task = createTask({
83
76
  schema,
84
77
  boundaries,
85
- async (input, { multiply }) => {
78
+ fn: async (input, { multiply }) => {
86
79
  const result = await multiply(input.value)
87
80
  return { result }
88
81
  }
89
- )
82
+ })
90
83
 
91
84
  type InputType = typeof schema
92
85
  type OutputType = Awaited<ReturnType<typeof task.run>>
@@ -94,24 +87,21 @@ describe('Task listener', () => {
94
87
  const tape = new RecordTape<InputType, OutputType>({})
95
88
 
96
89
  task.addListener<InputType, OutputType>((record) => {
97
- const logItem: LogItem<InputType, OutputType> = record.error
98
- ? { input: record.input, error: record.error, boundaries: record.boundaries }
99
- : { input: record.input, output: record.output as OutputType, boundaries: record.boundaries }
100
-
101
- tape.addLogItem('test', logItem)
90
+ tape.push(record)
102
91
  })
103
92
 
104
93
  await task.run({ value: 5 })
105
94
 
106
95
  expect(tape.getLog()).toEqual([
107
96
  {
108
- name: 'test',
109
97
  type: 'success',
110
98
  input: { value: 5 },
111
99
  output: { result: 10 },
112
100
  boundaries: {
113
101
  multiply: [{ input: [5], output: 10 }]
114
- }
102
+ },
103
+ metadata: {},
104
+ taskName: undefined
115
105
  }
116
106
  ])
117
107
  })
@@ -135,34 +125,31 @@ describe('Task listener', () => {
135
125
  }
136
126
 
137
127
  // Create the task using createTask
138
- const task = createTask(
128
+ const task = createTask({
139
129
  schema,
140
130
  boundaries,
141
- async (input, { multiply }) => {
131
+ fn: async (input, { multiply }) => {
142
132
  const result = await multiply(input.value)
143
133
  return { result }
144
134
  }
145
- )
135
+ })
146
136
 
147
137
  task.addListener<InputType, OutputType>((record) => {
148
- const logItem: LogItem<InputType, OutputType> = record.error
149
- ? { input: record.input, error: record.error, boundaries: record.boundaries }
150
- : { input: record.input, output: record.output as OutputType, boundaries: record.boundaries }
151
-
152
- tape.addLogItem('test', logItem)
138
+ tape.push(record)
153
139
  })
154
140
 
155
141
  await task.run({ value: 5 })
156
142
 
157
143
  expect(tape.getLog()).toEqual([
158
144
  {
159
- name: 'test',
160
145
  type: 'success',
161
146
  input: { value: 5 },
162
147
  output: { result: 10 },
163
148
  boundaries: {
164
149
  multiply: [{ input: [5], output: 10 }]
165
- }
150
+ },
151
+ metadata: {},
152
+ taskName: undefined
166
153
  }
167
154
  ])
168
155
  })
@@ -1,93 +0,0 @@
1
- import { RecordTape } from '../index'
2
-
3
- describe('Mode behavior', () => {
4
- it('Should start in record mode by default', () => {
5
- const tape = new RecordTape()
6
- expect(tape.getMode()).toBe('record')
7
- })
8
-
9
- it('Should not add log items in replay mode', () => {
10
- type InputType = { value: number }
11
- type OutputType = { result: number }
12
-
13
- const tape = new RecordTape<InputType, OutputType>()
14
- tape.setMode('replay')
15
-
16
- tape.addLogItem('test', {
17
- input: { value: 1 },
18
- output: { result: 2 }
19
- })
20
-
21
- expect(tape.getLog()).toEqual([])
22
- })
23
-
24
- it('Should add log items in record mode', () => {
25
- type InputType = { value: number }
26
- type OutputType = { result: number }
27
-
28
- const tape = new RecordTape<InputType, OutputType>()
29
- tape.setMode('record')
30
-
31
- tape.addLogItem('test', {
32
- input: { value: 1 },
33
- output: { result: 2 }
34
- })
35
-
36
- expect(tape.getLog()).toEqual([
37
- {
38
- name: 'test',
39
- type: 'success',
40
- input: { value: 1 },
41
- output: { result: 2 },
42
- boundaries: {}
43
- }
44
- ])
45
- })
46
-
47
- it('Should switch between modes', () => {
48
- type InputType = { value: number }
49
- type OutputType = { result: number }
50
-
51
- const tape = new RecordTape<InputType, OutputType>()
52
-
53
- // Start in record mode
54
- expect(tape.getMode()).toBe('record')
55
- tape.addLogItem('test1', {
56
- input: { value: 1 },
57
- output: { result: 2 }
58
- })
59
-
60
- // Switch to replay mode
61
- tape.setMode('replay')
62
- expect(tape.getMode()).toBe('replay')
63
- tape.addLogItem('test2', {
64
- input: { value: 3 },
65
- output: { result: 4 }
66
- })
67
-
68
- // Switch back to record mode
69
- tape.setMode('record')
70
- expect(tape.getMode()).toBe('record')
71
- tape.addLogItem('test3', {
72
- input: { value: 5 },
73
- output: { result: 6 }
74
- })
75
-
76
- expect(tape.getLog()).toEqual([
77
- {
78
- name: 'test1',
79
- type: 'success',
80
- input: { value: 1 },
81
- output: { result: 2 },
82
- boundaries: {}
83
- },
84
- {
85
- name: 'test3',
86
- type: 'success',
87
- input: { value: 5 },
88
- output: { result: 6 },
89
- boundaries: {}
90
- }
91
- ])
92
- })
93
- })