angular-ui-mention
Version:
Facebook-like @mentions for text inputs built around composability
66 lines (52 loc) • 1.59 kB
JavaScript
describe('uiMentionDirective', () => {
let Subject, $scope, compileDir, ctrlInstance;
beforeEach(() => {
ctrlInstance = function () {
ctrlInstance.init = this.init = sinon.stub();
};
module('ui.mention', ($controllerProvider) => {
$controllerProvider.register('uiMention', ctrlInstance);
});
inject(($injector) => {
Subject = $injector.get('uiMentionDirective');
$scope = $injector.get('$rootScope').$new();
compileDir = (template) => {
return $injector.get('$compile')(template)($scope);
};
});
});
context('DDO', () => {
let DDO;
beforeEach(() => {
DDO = Subject[0];
});
it('is named uiMention', () => {
expect(DDO.name).to.eq('uiMention');
});
it('has a priority of 0', () => {
expect(DDO.priority).to.eq(0);
});
it('requires ngModel', () => {
expect(DDO.require).to.include('ngModel');
});
it('requires uiMention', () => {
expect(DDO.require).to.include('uiMention');
});
it('exposes controllerAs $mention', () => {
expect(DDO.controllerAs).to.eq('$mention');
});
it('is restricted to EA', () => {
expect(DDO.restrict).to.eq('EA');
});
});
context('.link()', () => {
it('calls the controller.init method with the given ngModel', () => {
$scope.model = 'wat';
compileDir('<span ui-mention ng-model="model"></span>');
$scope.$digest();
expect(ctrlInstance.init).to.have.been.calledOnce.and.calledWithMatch({
$modelValue: 'wat'
});
});
});
});