Просмотр исходного кода

refactor: allow override a registered definition

e22m4u 6 дней назад
Родитель
Сommit
c92733ed8e
3 измененных файлов с 13 добавлено и 22 удалено
  1. 0 6
      dist/cjs/index.cjs
  2. 0 6
      src/data-schema-registry.js
  3. 13 10
      src/data-schema-registry.spec.js

+ 0 - 6
dist/cjs/index.cjs

@@ -221,12 +221,6 @@ var DataSchemaRegistry = class extends import_js_service.Service {
    */
   defineSchema(schemaDef) {
     validateDataSchemaDefinition(schemaDef);
-    if (this._definitions.has(schemaDef.name)) {
-      throw new import_js_format3.InvalidArgumentError(
-        "Data schema %v is already registered.",
-        schemaDef.name
-      );
-    }
     this._definitions.set(schemaDef.name, schemaDef);
     return this;
   }

+ 0 - 6
src/data-schema-registry.js

@@ -21,12 +21,6 @@ export class DataSchemaRegistry extends Service {
    */
   defineSchema(schemaDef) {
     validateDataSchemaDefinition(schemaDef);
-    if (this._definitions.has(schemaDef.name)) {
-      throw new InvalidArgumentError(
-        'Data schema %v is already registered.',
-        schemaDef.name,
-      );
-    }
     this._definitions.set(schemaDef.name, schemaDef);
     return this;
   }

+ 13 - 10
src/data-schema-registry.spec.js

@@ -1,18 +1,9 @@
 import {expect} from 'chai';
+import {DataType} from './data-type.js';
 import {DataSchemaRegistry} from './data-schema-registry.js';
 
 describe('DataSchemaRegistry', function () {
   describe('defineSchema', function () {
-    it('should throw an error if the schema name is already registered', function () {
-      const S = new DataSchemaRegistry();
-      const schemaDef = {name: 'mySchema', schema: {}};
-      S.defineSchema(schemaDef);
-      const throwable = () => S.defineSchema(schemaDef);
-      expect(throwable).to.throw(
-        'Data schema "mySchema" is already registered.',
-      );
-    });
-
     it('should register the given definition', function () {
       const S = new DataSchemaRegistry();
       const schemaDef = {name: 'mySchema', schema: {}};
@@ -21,6 +12,18 @@ describe('DataSchemaRegistry', function () {
       expect(res).to.be.eql(schemaDef);
     });
 
+    it('should override a registered definition', function () {
+      const S = new DataSchemaRegistry();
+      const def1 = {name: 'mySchema', schema: {type: DataType.STRING}};
+      const def2 = {name: 'mySchema', schema: {type: DataType.NUMBER}};
+      S.defineSchema(def1);
+      const res1 = S.getDefinition(def1.name);
+      expect(res1).to.be.eql(def1);
+      S.defineSchema(def2);
+      const res2 = S.getDefinition(def2.name);
+      expect(res2).to.be.eql(def2);
+    });
+
     it('should return the current instance', function () {
       const S = new DataSchemaRegistry();
       const res = S.defineSchema({name: 'mySchema', schema: {}});