Skip to content

Commit 2217d6f

Browse files
committed
Add IResultProxy interface to proxy classes
1 parent 0fe1ca7 commit 2217d6f

File tree

10 files changed

+38
-20
lines changed

10 files changed

+38
-20
lines changed

index.d.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,9 @@ interface japiResource extends japiResourceIdentifier {
2828
meta?: Object;
2929
links?: Object;
3030
}
31+
32+
interface IResultProxy<T> {
33+
data: any
34+
meta: Object
35+
raw: japiDoc
36+
}

src/associations.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import Attribute from './attribute';
22
import Model from './model';
3-
import CollectionProxy from './collection-proxy';
43

54
class Base extends Attribute {
65
klass: typeof Model;

src/model.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ import Scope from './scope';
44
import Config from './configuration';
55
import Attribute from './attribute';
66
import deserialize from './util/deserialize';
7-
import CollectionProxy from './collection-proxy';
8-
import RecordProxy from './record-proxy';
7+
import { CollectionProxy, RecordProxy } from './proxies';
98
import _extend from './util/extend';
109
import { camelize } from './util/string';
1110

src/proxies.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import CollectionProxy from './proxies/collection-proxy'
2+
import RecordProxy from './proxies/record-proxy'
3+
4+
export {
5+
CollectionProxy,
6+
RecordProxy
7+
}

src/collection-proxy.ts renamed to src/proxies/collection-proxy.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import Model from './model';
1+
import Model from '../model';
22

3-
class CollectionProxy<T> {
3+
class CollectionProxy<T> implements IResultProxy<T> {
44
private _raw_json : japiDoc;
55
private _array : Array<T>;
66

@@ -25,11 +25,9 @@ class CollectionProxy<T> {
2525

2626
this._array = [];
2727

28-
if (this.raw.data) {
29-
this.raw.data.map((datum : japiResource) => {
30-
this._array.push(Model.fromJsonapi(datum, this.raw));
31-
});
32-
}
28+
this.raw.data.map((datum : japiResource) => {
29+
this._array.push(Model.fromJsonapi(datum, this.raw));
30+
});
3331
}
3432
}
3533

src/record-proxy.ts renamed to src/proxies/record-proxy.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import Model from './model';
1+
import Model from '../model';
22

3-
class RecordProxy<T> {
3+
class RecordProxy<T> implements IResultProxy<T> {
44
private _raw_json : japiDoc;
55
private _model : T;
66

@@ -23,9 +23,10 @@ class RecordProxy<T> {
2323
private setRaw = (json_payload : japiDoc) => {
2424
this._raw_json = json_payload;
2525

26-
2726
if (this.raw.data) {
2827
this._model = Model.fromJsonapi(this.raw.data, this.raw);
28+
} else {
29+
this._model = null
2930
}
3031
}
3132
}

src/scope.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ import Model from './model';
22
import Config from './configuration';
33
import parameterize from './util/parameterize';
44
import IncludeDirective from './util/include-directive';
5-
import CollectionProxy from './collection-proxy';
6-
import RecordProxy from './record-proxy';
5+
import { CollectionProxy, RecordProxy } from './proxies';
76
import Request from './request';
87
import colorize from './util/colorize';
98

test/unit/collection-proxy-test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Person } from '../fixtures';
22

3-
import CollectionProxy from '../../src/collection-proxy'
3+
import CollectionProxy from '../../src/proxies/collection-proxy'
44

55
describe('CollectionProxy', function() {
66
let personData = {

test/unit/record-proxy-test.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Person } from '../fixtures';
22

3-
import RecordProxy from '../../src/record-proxy'
3+
import RecordProxy from '../../src/proxies/record-proxy'
44

55
describe('RecordProxy', function() {
66
let personData = {
@@ -30,10 +30,21 @@ describe('RecordProxy', function() {
3030
expect(record.raw).to.deep.equal(personData)
3131
})
3232

33-
it('should assign the correct models to the data array', function() {
33+
it('should assign the correct model to the data field', function() {
3434
let record = new RecordProxy(personData)
3535
expect(record.data).to.be.instanceof(Person)
3636
})
37+
38+
context('data is null', function() {
39+
let personData = {
40+
data: null
41+
}
42+
43+
it('should assign data to null', function() {
44+
let record = new RecordProxy(personData)
45+
expect(record.data).to.eq(null)
46+
})
47+
})
3748
})
3849

3950
describe('#meta', function() {

test/unit/relationships-test.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
import { sinon } from '../../test/test-helper';
44
import { Author, Genre } from '../fixtures';
55

6-
import CollectionProxy from '../../src/collection-proxy';
7-
86
describe('Model relationships', function() {
97
it('supports direct assignment of models', function() {
108
let author = new Author();

0 commit comments

Comments
 (0)