/
fixture-builder-factory.js
75 lines (65 loc) · 2.09 KB
/
fixture-builder-factory.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import require from 'require';
import DS from 'ember-data';
import JSONAPIFixtureBuilder from './jsonapi-fixture-builder';
import RESTFixtureBuilder from './rest-fixture-builder';
import JSONFixtureBuilder from './json-fixture-builder';
import DRFFixtureBuilder from './drf-fixture-builder';
import ActiveModelFixtureBuilder from './active-model-fixture-builder';
let ActiveModelSerializer, DjangoSerializer;
try {
let activeModel = require('active-model-adapter');
ActiveModelSerializer = activeModel.ActiveModelSerializer;
} catch (e) {
// do nothing
}
try {
let drf = require('ember-django-adapter/serializers/drf');
DjangoSerializer = drf && drf.default;
} catch (e) {
// do nothing
}
export default class {
constructor(store) {
this.store = store;
}
/**
Return appropriate FixtureBuilder for the model's serializer type
*/
fixtureBuilder(modelName) {
let serializer = this.store.serializerFor(modelName);
if (!serializer) {
return new JSONAPIFixtureBuilder(this.store);
}
if (this.usingJSONAPISerializer(serializer)) {
return new JSONAPIFixtureBuilder(this.store);
}
if (this.usingDRFSerializer(serializer)) {
return new DRFFixtureBuilder(this.store);
}
if (this.usingActiveModelSerializer(serializer)) {
return new ActiveModelFixtureBuilder(this.store);
}
if (this.usingRESTSerializer(serializer)) {
return new RESTFixtureBuilder(this.store);
}
if (this.usingJSONSerializer(serializer)) {
return new JSONFixtureBuilder(this.store);
}
return new JSONAPIFixtureBuilder(this.store);
}
usingJSONAPISerializer(serializer) {
return serializer instanceof DS.JSONAPISerializer;
}
usingDRFSerializer(serializer) {
return DjangoSerializer && serializer instanceof DjangoSerializer;
}
usingActiveModelSerializer(serializer) {
return ActiveModelSerializer && serializer instanceof ActiveModelSerializer;
}
usingRESTSerializer(serializer) {
return serializer instanceof DS.RESTSerializer;
}
usingJSONSerializer(serializer) {
return serializer instanceof DS.JSONSerializer;
}
}