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';
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
*
@ -20,40 +47,17 @@ export function directive($state, $window) {
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 {
restrict: 'A',
link: function($scope, $element, $attrs) {
const data = $scope.$eval($attrs.vnAnchor);
$element.on('click', event => {
// console.log('evento click');
if (ctrlPressed)
newTab(event, data);
newTab($state, $window, event, data);
else
changeState(event, data);
changeState($state, event, data);
});
$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 $element;
let element;
let compile;
beforeEach(ngModule('vnCore'));
compile = _element => {
compile = (_element, _childElement) => {
inject(($compile, $rootScope) => {
$scope = $rootScope.$new();
$element = angular.element(_element);
$compile($element)($scope);
element = angular.element(_element);
$compile(element)($scope);
$scope.$digest();
element = $element[0];
});
};
it(`should throw an error when there's no id defined`, () => {
let html = `<vn-icon-button vn-id=""></vn-icon-button>`;
xit(`should throw an error when there's no id defined`, () => {
let html = `<div vn-anchor="{sate: 'my.state', params: {q: {id: 123}}}"></div>`;
jest.spyOn(anchor, 'changeState');
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">
</vn-icon-button>
</vn-item-section>
<!-- ng-click="$ctrl.filterTickets(client, $event)" -->
</a>
</div>
</vn-card>