Files
payload/src/tests/paramParser.spec.js
2019-01-25 22:14:18 -05:00

81 lines
2.6 KiB
JavaScript

/* eslint-disable camelcase */
import mongoose from 'mongoose';
const Schema = mongoose.Schema;
import {paramParser} from '../utils/paramParser';
const PageSchema = new Schema({
title: {type: String},
content: {type: String},
slug: {type: String, unique: true, required: true},
metaTitle: String,
metaDesc: String,
likes: {type: Number}
}
);
const Page = mongoose.model('Page', PageSchema);
describe('param parser', () => {
describe('Parameter Parsing', () => {
it('No params', () => {
let parsed = paramParser(Page, {});
expect(parsed).toEqual({});
});
it('Property Equals', () => {
let parsed = paramParser(Page, {title: 'This is my title'});
expect(parsed.searchParams).toEqual({title: 'This is my title'});
});
it('Multiple params', () => {
let parsed = paramParser(Page, {title: 'This is my title', slug: 'this-is-my-title'});
expect(parsed.searchParams).toEqual({title: 'This is my title', slug: 'this-is-my-title'});
});
it('Greater than or equal', () => {
let parsed = paramParser(Page, {likes: '{gte}50'});
expect(parsed.searchParams).toEqual({likes: {'$gte': '50'}});
});
it('Greater than, less than', () => {
let parsed = paramParser(Page, {likes: '{gte}50{lt}100'});
expect(parsed.searchParams).toEqual({likes: {'$gte': '50', '$lt': '100'}});
});
});
describe('Pagination / Limits', () => {
it('Page number', () => {
let parsed = paramParser(Page, {page: '2'});
expect(parsed).toEqual({searchParams: {}, page: '2', per_page: 100, sort: false});
});
it('Page number with per page', () => {
let parsed = paramParser(Page, {page: '2', per_page: '1'});
expect(parsed).toEqual({searchParams: {}, page: '2', per_page: 1, sort: false});
});
it('Per page', () => {
let parsed = paramParser(Page, {per_page: '1'});
expect(parsed).toEqual({searchParams: {}, page: 1, per_page: 1, sort: false});
});
it('Limit', () => {
let parsed = paramParser(Page, {limit: '1'});
expect(parsed).toEqual({searchParams: {}, page: 1, per_page: 1, sort: false});
})
});
describe('Sorting', () => {
it('Sort ascending', () => {
let parsed = paramParser(Page, {sort_by: 'title'});
expect(parsed).toEqual({searchParams: {}, page: 1, per_page: 100, sort: {title: 1}});
});
it('Sort descending', () => {
let parsed = paramParser(Page, {sort_by: 'title,desc'});
expect(parsed).toEqual({searchParams: {}, page: 1, per_page: 100, sort: {title: 'desc'}});
})
});
});