Ghost/ghost/admin/tests/unit/validators/post-test.js

66 lines
2.5 KiB
JavaScript
Raw Normal View History

import EmberObject from '@ember/object';
import ValidationEngine from 'ghost-admin/mixins/validation-engine';
import {
describe,
it
} from 'mocha';
import {expect} from 'chai';
const Post = EmberObject.extend(ValidationEngine, {
validationType: 'post',
email: null
});
describe('Unit: Validator: post', function () {
describe('canonicalUrl', function () {
it('can be blank', async function () {
let post = Post.create({canonicalUrl: ''});
let passed = await post.validate({property: 'canonicalUrl'}).then(() => true);
expect(passed, 'passed').to.be.true;
expect(post.hasValidated).to.include('canonicalUrl');
});
it('can be an absolute URL', async function () {
let post = Post.create({canonicalUrl: 'http://example.com'});
let passed = await post.validate({property: 'canonicalUrl'}).then(() => true);
expect(passed, 'passed').to.be.true;
expect(post.hasValidated).to.include('canonicalUrl');
});
it('can be a relative URL', async function () {
let post = Post.create({canonicalUrl: '/my-other-post'});
let passed = await post.validate({property: 'canonicalUrl'}).then(() => true);
expect(passed, 'passed').to.be.true;
expect(post.hasValidated).to.include('canonicalUrl');
});
it('cannot be a random string', async function () {
let post = Post.create({canonicalUrl: 'asdfghjk'});
let passed = await post.validate({property: 'canonicalUrl'}).then(() => true).catch(() => false);
expect(passed, 'passed').to.be.false;
expect(post.hasValidated).to.include('canonicalUrl');
let error = post.errors.errorsFor('canonicalUrl').get(0);
expect(error.attribute).to.equal('canonicalUrl');
expect(error.message).to.equal('Please enter a valid URL');
});
it('cannot be too long', async function () {
let post = Post.create({canonicalUrl: `http://example.com/${(new Array(1983).join('x'))}`});
let passed = await post.validate({property: 'canonicalUrl'}).then(() => true).catch(() => false);
expect(passed, 'passed').to.be.false;
expect(post.hasValidated).to.include('canonicalUrl');
let error = post.errors.errorsFor('canonicalUrl').get(0);
expect(error.attribute).to.equal('canonicalUrl');
expect(error.message).to.equal('Canonical URL is too long, max 2000 chars');
});
});
});