Skip to content

Commit 0d14267

Browse files
committed
feat: Added unit tests
1 parent 79f8dd3 commit 0d14267

File tree

4 files changed

+49
-6
lines changed

4 files changed

+49
-6
lines changed

src/rules-engine/evaluators/base-evaluator.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export default abstract class BaseEvaluator<K extends Rule> implements RuleEvalu
88

99
abstract evaluateSingleResource(rule: K, data?: ResourceData): Promise<RuleFinding>
1010

11-
async evaluateMissingResource({ id, severity, resource }: K): Promise<RuleFinding> {
11+
async evaluateMissingResource({ id, severity, resource }: Rule): Promise<RuleFinding> {
1212
return {
1313
id: `${id}/missing/${cuid()}`,
1414
resourceId: resource?.replace('[*]', ''),

tests/evaluators/js-evaluator.test.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,25 @@ describe('JsEvaluator', () => {
6666
)
6767
expect(passedRule.result).toEqual(Result.PASS)
6868
})
69+
70+
test('should return missing as result', async () => {
71+
const finding = await evaluator.evaluateMissingResource(
72+
{ id: cuid() } as never
73+
)
74+
expect(finding.result).toEqual(Result.MISSING)
75+
})
76+
77+
test('should contain "missing" at the id', async () => {
78+
const finding = await evaluator.evaluateMissingResource(
79+
{ id: cuid() } as any
80+
)
81+
expect(finding.id.includes('missing')).toEqual(true)
82+
})
83+
84+
test('should return the resource path at the resourceId', async () => {
85+
const finding = await evaluator.evaluateMissingResource(
86+
{ id: cuid(), resource: 'resourcePath[*]'} as any
87+
)
88+
expect(finding.resourceId).toEqual('resourcePath')
89+
})
6990
})

tests/evaluators/json-evaluator.test.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -596,4 +596,25 @@ describe('JsonEvaluator', () => {
596596

597597
expect(finding.result).toBe(Result.FAIL)
598598
})
599+
600+
test('should return missing as result', async () => {
601+
const finding = await evaluator.evaluateMissingResource(
602+
{ id: cuid() } as never
603+
)
604+
expect(finding.result).toEqual(Result.MISSING)
605+
})
606+
607+
test('should contain "missing" at the id', async () => {
608+
const finding = await evaluator.evaluateMissingResource(
609+
{ id: cuid() } as any
610+
)
611+
expect(finding.id.includes('missing')).toEqual(true)
612+
})
613+
614+
test('should return the resource path at the resourceId', async () => {
615+
const finding = await evaluator.evaluateMissingResource(
616+
{ id: cuid(), resource: 'resourcePath[*]'} as any
617+
)
618+
expect(finding.resourceId).toEqual('resourcePath')
619+
})
599620
})

tests/rules-engine.test.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import RulesProvider from '../src/rules-engine'
2-
import { Engine, Rule } from '../src/rules-engine/types'
2+
import { Engine, Result, Rule } from '../src/rules-engine/types'
33
import ManualEvaluatorMock from './evaluators/manual-evaluator.test'
44
import JSONEvaluatordMock from './evaluators/json-evaluator.test'
55
import DgraphDataProcessor from '../src/rules-engine/data-processors/dgraph-data-processor'
6+
import { RuleFinding } from '../src'
67

78
const typenameToFieldMap = {
89
resourceA: 'querySchemaA',
@@ -50,17 +51,17 @@ describe('RulesEngine', () => {
5051
)
5152
})
5253

53-
it('Should return an empty array processing a rule with no data', async () => {
54+
it('Should return a missing finding type processing a rule with no data', async () => {
5455
const data = {}
5556

5657
const processedRule = await rulesEngine.processRule(
5758
JSONEvaluatordMock.jsonRule,
5859
data
59-
)
60+
) as RuleFinding[]
6061

6162
expect(processedRule).toBeDefined()
62-
expect(processedRule instanceof Array).toBeTruthy()
63-
expect(processedRule.length).toBe(0)
63+
expect(processedRule.length).toBe(1)
64+
expect(processedRule[0].result).toBe(Result.MISSING)
6465
})
6566

6667
it('Should return empty mutations array given an empty findings array', () => {

0 commit comments

Comments
 (0)