Skip to content

Commit 48b44ac

Browse files
committed
refactor: adjust ApplicationContextMixin to use static class variable
1 parent f711b52 commit 48b44ac

File tree

3 files changed

+33
-11
lines changed

3 files changed

+33
-11
lines changed

src/context/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { JSONSchemaFormDataProvider } from "./json_schema_provider";
22
import {
3-
ApplicationContextMixinBuilder,
3+
ApplicationContextMixin,
44
JobContextMixin,
55
MaterialContextMixin,
66
MaterialsContextMixin,
@@ -18,7 +18,7 @@ export {
1818
JobContextPickKeysForMixin,
1919
JSONSchemaFormDataProvider,
2020
WorkflowContextPickKeysForMixin,
21-
ApplicationContextMixinBuilder,
21+
ApplicationContextMixin,
2222
MaterialContextMixin,
2323
MaterialsContextMixin,
2424
MaterialsSetContextMixin,

src/context/mixins.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@ import CryptoJS from "crypto-js";
33

44
import { compareEntitiesInOrderedSetForSorting } from "../entity/set/ordered/utils";
55

6-
export const ApplicationContextMixinBuilder = (applicationCls) => (superclass) =>
6+
export const ApplicationContextMixin = (superclass) =>
77
class extends superclass {
88
constructor(config) {
99
super(config);
10-
if (!applicationCls)
11-
throw Error("ApplicationContextMixinBuilder: applicationCls is undefined");
10+
if (!this.constructor.applicationCls)
11+
throw Error("ApplicationContextMixin: applicationCls is undefined");
1212
this._application =
13-
(config.context && config.context.application) || applicationCls.createDefault();
13+
(config.context && config.context.application) ||
14+
this.constructor.applicationCls.createDefault();
1415
}
1516

1617
get application() {

tests/context.tests.js

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { expect } from "chai";
22
import { mix } from "mixwith";
33

4-
import { MaterialContextMixin } from "../src/context/mixins";
4+
import { ApplicationContextMixin, MaterialContextMixin } from "../src/context/mixins";
55
import { InMemoryEntity } from "../src/entity";
66

77
class MockMaterial {
@@ -16,24 +16,45 @@ class SpecificMockMaterial {
1616
}
1717
}
1818

19-
class ProviderEntity extends mix(InMemoryEntity).with(MaterialContextMixin) {
19+
class MockApplication {
20+
static createDefault() {
21+
return "defaultMockApplication";
22+
}
23+
}
24+
25+
class SpecificMockApplication {
26+
static createDefault() {
27+
return "defaultSpecificMockApplication";
28+
}
29+
}
30+
31+
class ProviderEntity extends mix(InMemoryEntity).with(
32+
MaterialContextMixin,
33+
ApplicationContextMixin,
34+
) {
2035
static materialCls = MockMaterial;
36+
37+
static applicationCls = MockApplication;
2138
}
2239

2340
class DerivedProviderEntity extends ProviderEntity {
2441
static materialCls = SpecificMockMaterial;
42+
43+
static applicationCls = SpecificMockApplication;
2544
}
2645

27-
describe("MaterialContextMixin", () => {
46+
describe("Material & Application ContextMixin", () => {
2847
const config = {};
2948

30-
it("uses static material class", () => {
49+
it("uses static entity class", () => {
3150
const provider = new ProviderEntity(config);
3251
expect(provider.material).to.be.equal("defaultMockMaterial");
52+
expect(provider.application).to.be.equal("defaultMockApplication");
3353
});
3454

35-
it("uses static material class from derived class", () => {
55+
it("uses static entity class from derived class", () => {
3656
const provider = new DerivedProviderEntity(config);
3757
expect(provider.material).to.be.equal("defaultSpecificMockMaterial");
58+
expect(provider.application).to.be.equal("defaultSpecificMockApplication");
3859
});
3960
});

0 commit comments

Comments
 (0)