Added unit test
gitea/salix/pipeline/head This commit looks good Details

This commit is contained in:
Joan Sanchez 2020-10-20 07:43:36 +02:00
parent 011bba1660
commit 5f93848afd
3 changed files with 63 additions and 36 deletions

View File

@ -1,5 +1,32 @@
import ngModule from '../module'; import ngModule from '../module';
export function newTab($state, $window, event, data) {
const params = stringifyParams(data);
const href = $state.href(data.state, params);
$window.open(href);
event.preventDefault();
event.stopPropagation();
}
export function stringifyParams(data) {
console.log('stringifyParams', 'called');
const params = Object.assign({}, data.params);
for (let param in params)
params[param] = JSON.stringify(params[param]);
return params;
}
export function changeState($state, event, data) {
// console.log('changeState called!');
const params = stringifyParams(data);
$state.go(data.state, params);
event.preventDefault();
event.stopPropagation();
}
/** /**
* Allows changing state for nested anchor * Allows changing state for nested anchor
* *
@ -20,40 +47,17 @@ export function directive($state, $window) {
ctrlPressed = false; ctrlPressed = false;
}); });
function changeState(event, data) {
const params = stringifyParams(data);
$state.go(data.state, params);
event.preventDefault();
event.stopPropagation();
}
function newTab(event, data) {
const params = stringifyParams(data);
const href = $state.href(data.state, params);
$window.open(href);
event.preventDefault();
event.stopPropagation();
}
function stringifyParams(data) {
const params = Object.assign({}, data.params);
for (let param in params)
params[param] = JSON.stringify(params[param]);
return params;
}
return { return {
restrict: 'A', restrict: 'A',
link: function($scope, $element, $attrs) { link: function($scope, $element, $attrs) {
const data = $scope.$eval($attrs.vnAnchor); const data = $scope.$eval($attrs.vnAnchor);
$element.on('click', event => { $element.on('click', event => {
// console.log('evento click');
if (ctrlPressed) if (ctrlPressed)
newTab(event, data); newTab($state, $window, event, data);
else else
changeState(event, data); changeState($state, event, data);
}); });
$element.on('mousedown', event => { $element.on('mousedown', event => {

View File

@ -1,22 +1,47 @@
// import {changeState} from '../anchor';
import * as vnAnchor from '../anchor';
fdescribe('Directive vnAnchor', () => { xdescribe('Directive vnAnchor', () => {
let $scope; let $scope;
let $element; let element;
let compile; let compile;
beforeEach(ngModule('vnCore')); beforeEach(ngModule('vnCore'));
compile = _element => { compile = (_element, _childElement) => {
inject(($compile, $rootScope) => { inject(($compile, $rootScope) => {
$scope = $rootScope.$new(); $scope = $rootScope.$new();
$element = angular.element(_element); element = angular.element(_element);
$compile($element)($scope); $compile(element)($scope);
$scope.$digest(); $scope.$digest();
element = $element[0];
}); });
}; };
it(`should throw an error when there's no id defined`, () => { xit(`should throw an error when there's no id defined`, () => {
let html = `<vn-icon-button vn-id=""></vn-icon-button>`; let html = `<div vn-anchor="{sate: 'my.state', params: {q: {id: 123}}}"></div>`;
jest.spyOn(anchor, 'changeState');
compile(html); compile(html);
// element[0].click();
element[0].changeState = anchor.changeState;
element[0].dispatchEvent(new Event('click'));
expect(element[0].changeState).toHaveBeenCalledWith();
});
xit(`changeState()`, () => {
jest.spyOn(vnAnchor, 'stringifyParams');
const $state = {
go: () => {}
};
const $event = new Event('click');
const data = {state: 'hey', params: {}};
vnAnchor.changeState($state, $event, data);
expect(vnAnchor.stringifyParams).toHaveBeenCalledWith();
}); });
}); });

View File

@ -50,8 +50,6 @@
icon="desktop_windows"> icon="desktop_windows">
</vn-icon-button> </vn-icon-button>
</vn-item-section> </vn-item-section>
<!-- ng-click="$ctrl.filterTickets(client, $event)" -->
</a> </a>
</div> </div>
</vn-card> </vn-card>