Directive with isolate scope and accessor
HTML
<div class="form-group">
<accordion>
<accordion-group is-open="status.open">
<accordion-heading>
Options
<i class="pull-right glyphicon" ng-class="{'glyphicon-chevron-down': status.open, 'glyphicon-chevron-right': !status.open}"></i>
</accordion-heading>
<div class="form-group">
<ul class="list-group" ng-sortable="{animation:150}">
<li class="list-group-item" ng-repeat="option in element.options">
<button ng-click="removeSelectOption({index: $index})" class="btn btn-xs btn-hover btn-default red pull-right">
<span class="glyphicon glyphicon-remove-sign"></span>
</button>
<div class="form-group">
<label>Text</label>
<input ng-model=option.text class="form-control" type="text">
<label>Value</label>
<input ng-model=option.value class="form-control" type="text">
<label>Disabled</label>
<input ng-model=option.disabled type="checkbox">
<br/>
<label>Default Selection</label>
<input type="radio" ng-model="element.defaultValue" ng-value="option.value">
</div>
</li>
</ul>
<button ng-click="addSelectOption()" class="btn btn-default pull-right">
Add Option
<span class="green glyphicon glyphicon-plus-sign"></span>
</button>
</div>
</accordion-group>
</accordion>
</div>
JavaScript
describe('Controller: ElementsController', function () {
'use strict';
var elementsController, scope, events, flow;
var element = {
name: 'flowName',
uri: '/domain/flows/flowName'
};
beforeEach(function() {
module('DavidBowUI');
inject(function($rootScope, $controller, _events_, _flow_) {
events = _events_;
scope = $rootScope.$new();
elementsController = $controller('ElementsController', {$scope: scope});
flow = _flow_;
spyOn(flow, 'fetchElement');
spyOn(flow, 'updateElement');
});
});
describe('Signals', function() {
it('responds to FlowLoaded Signal with element not in list', function() {
var flowData = {
elements: [
{
uri: 'flowURI-1'
}
],
forms: [
{
uri: 'formURI-1'
}
]
};
var selectedItem = {
uri: 'flowURI-2'
};
scope.elementList.selectedItem = selectedItem;
expect(scope.elementList.selectedItem).toBe(selectedItem);
expect(scope.elementList.items).toBe(null);
expect(scope.elementEditor.availableForms).toBe(null);
scope.$broadcast(events.FlowLoaded, flowData);
expect(scope.elementEditor.availableForms).toBe(flowData.forms);
expect(scope.elementList.items).toBe(flowData.elements);
expect(flow.fetchElement).toHaveBeenCalled();
expect(flow.fetchElement).toHaveBeenCalledWith(flowData.elements[0]);
expect(scope.elementList.selectedItem).toBe(flowData.elements[0]);
});
it('responds to FlowLoaded Signal with element in list', function() {
var flowData = {
elements: [
{
...