feat: add CollectionResponse model and tests

This commit is contained in:
Stevan Freeborn
2023-02-02 16:07:00 -06:00
parent 2238e34823
commit 3e78a35967
2 changed files with 63 additions and 0 deletions
+25
View File
@@ -0,0 +1,25 @@
/**
* @class CollectionResponse - A generic object for responses that contain collections of objects.
*/
export class CollectionResponse<T> {
/**
* @property {number} count - The total count of items in the collection.
*/
public count: number;
/**
* @property {T} items - The items in the collection.
*/
public items: T;
/**
* @constructor - Creates a new instance of the CollectionResponse class.
* @param {number} count - The total count of items in the collection.
* @param {T} items - The items in the collection.
* @returns {CollectionResponse<T>} - A new instance of the CollectionResponse.
*/
constructor(count: number, items: T) {
this.count = count;
this.items = items;
}
}
+38
View File
@@ -0,0 +1,38 @@
import { expect } from 'chai';
import { CollectionResponse } from '../src/models/CollectionResponse';
describe('CollectionResponse', function () {
it('should be defined', function () {
expect(CollectionResponse).to.not.be.undefined;
});
it('should have a constructor', function () {
expect(CollectionResponse).to.have.property('constructor');
});
it('should have 2 parameters', function () {
expect(CollectionResponse).to.have.lengthOf(2);
});
it('should create a new instance of the CollectionResponse class', function () {
expect(() => new CollectionResponse(200, [1, 2, 3])).to.not.throw();
});
it('should have a property named count', function () {
expect(new CollectionResponse(200, [1, 2, 3])).to.have.property('count');
});
it('should have a property named items', function () {
expect(new CollectionResponse(200, [1, 2, 3])).to.have.property('items');
});
it('should set the count property to the value passed to the constructor', function () {
expect(new CollectionResponse(200, [1, 2, 3]).count).to.equal(200);
});
it('should set the items property to the value passed to the constructor', function () {
expect(new CollectionResponse(200, [1, 2, 3]).items).to.deep.equal([
1, 2, 3,
]);
});
});