addons/isl/src/__tests__/Diagnostics.test.tsxblame
View source
b69ab311/**
b69ab312 * Copyright (c) Meta Platforms, Inc. and affiliates.
b69ab313 *
b69ab314 * This source code is licensed under the MIT license found in the
b69ab315 * LICENSE file in the root directory of this source tree.
b69ab316 */
b69ab317
b69ab318import type {DiagnosticAllowlist} from '../types';
b69ab319
b69ab3110import {isBlockingDiagnostic} from '../Diagnostics';
b69ab3111
b69ab3112const range = {startLine: 1, startCol: 1, endLine: 1, endCol: 1};
b69ab3113
b69ab3114describe('Diagnostics', () => {
b69ab3115 describe('isBlockingDiagnostic', () => {
b69ab3116 it('handles allowlist', () => {
b69ab3117 const policy: DiagnosticAllowlist = new Map([
b69ab3118 ['error', new Map([['foo', {allow: new Set(['code1'])}]])],
b69ab3119 ]);
b69ab3120 expect(
b69ab3121 isBlockingDiagnostic(
b69ab3122 {
b69ab3123 message: 'sample',
b69ab3124 range,
b69ab3125 severity: 'error',
b69ab3126 source: 'foo',
b69ab3127 code: 'code1',
b69ab3128 },
b69ab3129 policy,
b69ab3130 ),
b69ab3131 ).toBe(true);
b69ab3132 expect(
b69ab3133 isBlockingDiagnostic(
b69ab3134 {
b69ab3135 message: 'sample',
b69ab3136 range,
b69ab3137 severity: 'error',
b69ab3138 source: 'foo',
b69ab3139 code: 'code3',
b69ab3140 },
b69ab3141 policy,
b69ab3142 ),
b69ab3143 ).toBe(false);
b69ab3144 });
b69ab3145
b69ab3146 it('handles blocklist', () => {
b69ab3147 const policy: DiagnosticAllowlist = new Map([
b69ab3148 ['error', new Map([['foo', {block: new Set(['code1'])}]])],
b69ab3149 ]);
b69ab3150 expect(
b69ab3151 isBlockingDiagnostic(
b69ab3152 {
b69ab3153 message: 'sample',
b69ab3154 range,
b69ab3155 severity: 'error',
b69ab3156 source: 'foo',
b69ab3157 code: 'code3',
b69ab3158 },
b69ab3159 policy,
b69ab3160 ),
b69ab3161 ).toBe(true);
b69ab3162 expect(
b69ab3163 isBlockingDiagnostic(
b69ab3164 {
b69ab3165 message: 'sample',
b69ab3166 range,
b69ab3167 severity: 'error',
b69ab3168 source: 'foo',
b69ab3169 code: 'code1',
b69ab3170 },
b69ab3171 policy,
b69ab3172 ),
b69ab3173 ).toBe(false);
b69ab3174 });
b69ab3175
b69ab3176 it('handles wildcard', () => {
b69ab3177 const policy: DiagnosticAllowlist = new Map([
b69ab3178 ['error', new Map([['foo', {block: new Set([])}]])],
b69ab3179 ]);
b69ab3180 expect(
b69ab3181 isBlockingDiagnostic(
b69ab3182 {
b69ab3183 message: 'sample',
b69ab3184 range,
b69ab3185 severity: 'error',
b69ab3186 source: 'foo',
b69ab3187 code: 'code1',
b69ab3188 },
b69ab3189 policy,
b69ab3190 ),
b69ab3191 ).toBe(true);
b69ab3192 });
b69ab3193
b69ab3194 it('ignores non-errors', () => {
b69ab3195 const policy: DiagnosticAllowlist = new Map([
b69ab3196 ['error', new Map([['foo', {block: new Set([])}]])],
b69ab3197 ]);
b69ab3198 expect(
b69ab3199 isBlockingDiagnostic(
b69ab31100 {
b69ab31101 message: 'sample',
b69ab31102 range,
b69ab31103 severity: 'hint',
b69ab31104 source: 'foo',
b69ab31105 code: 'code1',
b69ab31106 },
b69ab31107 policy,
b69ab31108 ),
b69ab31109 ).toBe(false);
b69ab31110 });
b69ab31111
b69ab31112 it('accepts warnings', () => {
b69ab31113 const policy: DiagnosticAllowlist = new Map([
b69ab31114 ['warning', new Map([['foo', {block: new Set([])}]])],
b69ab31115 ]);
b69ab31116 expect(
b69ab31117 isBlockingDiagnostic(
b69ab31118 {
b69ab31119 message: 'sample',
b69ab31120 range,
b69ab31121 severity: 'warning',
b69ab31122 source: 'foo',
b69ab31123 code: 'code1',
b69ab31124 },
b69ab31125 policy,
b69ab31126 ),
b69ab31127 ).toBe(true);
b69ab31128 });
b69ab31129
b69ab31130 it('handles undefined source', () => {
b69ab31131 const policy: DiagnosticAllowlist = new Map([
b69ab31132 ['warning', new Map([['undefined', {block: new Set(['foo'])}]])],
b69ab31133 ]);
b69ab31134 expect(
b69ab31135 isBlockingDiagnostic(
b69ab31136 {
b69ab31137 message: 'sample',
b69ab31138 range,
b69ab31139 severity: 'warning',
b69ab31140 source: undefined,
b69ab31141 code: 'foo',
b69ab31142 },
b69ab31143 policy,
b69ab31144 ),
b69ab31145 ).toBe(false);
b69ab31146 expect(
b69ab31147 isBlockingDiagnostic(
b69ab31148 {
b69ab31149 message: 'sample',
b69ab31150 range,
b69ab31151 severity: 'warning',
b69ab31152 source: undefined,
b69ab31153 code: 'something_else',
b69ab31154 },
b69ab31155 policy,
b69ab31156 ),
b69ab31157 ).toBe(true);
b69ab31158 });
b69ab31159
b69ab31160 it('handles undefined code', () => {
b69ab31161 const policy: DiagnosticAllowlist = new Map([
b69ab31162 ['warning', new Map([['foo', {block: new Set(['undefined'])}]])],
b69ab31163 ]);
b69ab31164 expect(
b69ab31165 isBlockingDiagnostic(
b69ab31166 {
b69ab31167 message: 'sample',
b69ab31168 range,
b69ab31169 severity: 'warning',
b69ab31170 source: 'foo',
b69ab31171 code: undefined,
b69ab31172 },
b69ab31173 policy,
b69ab31174 ),
b69ab31175 ).toBe(false);
b69ab31176 });
b69ab31177 });
b69ab31178});