angular-mask
Version:
Personalized input masks for AngularJS
171 lines (132 loc) • 5.91 kB
JavaScript
var StringMask = require('string-mask'),
moment = require('moment');
describe('ui.utils.masks.date', function() {
describe('default ("YYYY-MM-DD") mask', function() {
beforeEach(function() {
browser.get('/src/global/date/date.html');
});
it('should load the demo page', function() {
expect(browser.getTitle()).toEqual('Date Spec');
});
describe('ui-date-mask:', function() {
it('should format a date', function() {
var dateFormatter = new StringMask('0000-00-00'),
formatedDateAsString, numberToFormat = '', inputKeysToSend = '19991231';
var input = element(by.model('dateMask')),
value = element(by.binding('dateMask'));
for (var i = 0; i < 8; i++) {
var key = inputKeysToSend.charAt(i);
input.sendKeys(key);
numberToFormat += key;
formatedDateAsString = dateFormatter.apply(numberToFormat).replace(/-$/,'');
expect(input.getAttribute('value')).toEqual(formatedDateAsString);
}
expect(value.getText()).toEqual(moment(formatedDateAsString, 'YYYY-MM-DD').toDate().toString());
for (var i = 7; i >= 0; i--) {
input.sendKeys(protractor.Key.BACK_SPACE);
numberToFormat = numberToFormat.slice(0, -1);
if(numberToFormat) {
formatedDateAsString = dateFormatter.apply(numberToFormat).replace(/-$/,'');
expect(input.getAttribute('value')).toEqual(formatedDateAsString);
}
}
});
it('should format a model initialized with a date object', function() {
var input = element(by.model('initializedDateMask')),
value = element(by.binding('initializedDateMask'));
var dateValue = moment(value.getText(), 'YYYY-MM-DD').toDate(),
parsedViewValue = moment(input.getAttribute('value'), 'YYYY-MM-DD').toDate();
expect(parsedViewValue).toEqual(dateValue);
});
it('should format a model initialized with a ISO string', function() {
var input = element(by.model('initializedWithISOStringDateMask')),
value = element(by.binding('initializedWithISOStringDateMask'));
var dateValue = moment(value.getText(), 'YYYY-MM-DD').toDate(),
parsedViewValue = moment(input.getAttribute('value'), 'YYYY-MM-DD').toDate();
expect(parsedViewValue).toEqual(dateValue);
});
it('should be valid if the model is a valid date', function() {
var inputKeysToSend = '19991231';
var input = element(by.model('dateMask')),
value = element(by.binding('dateMask')),
valid = element(by.binding('form.dateMaskInput.$error'));
for (var i = 0; i < 7; i++) {
input.sendKeys(inputKeysToSend.charAt(i));
expect(valid.getText()).toEqual('{ "date": true }');
}
input.sendKeys(inputKeysToSend.charAt(7));
expect(valid.getText()).toEqual('{ "date": false }');
for (var i = 7; i > 0; i--) {
input.sendKeys(protractor.Key.BACK_SPACE);
expect(valid.getText()).toEqual('{ "date": true }');
}
input.sendKeys(protractor.Key.BACK_SPACE);
expect(valid.getText()).toEqual('{ "date": false }');
});
});
});
describe('pt-br ("DD/MM/YYYY") mask', function() {
beforeEach(function() {
browser.get('/src/global/date/date-pt-br.html');
});
it('should load the demo page', function() {
expect(browser.getTitle()).toEqual('Date Spec');
});
describe('ui-date-mask:', function() {
it('should format a date', function() {
var dateFormatter = new StringMask('00/00/0000'),
formatedDateAsString, numberToFormat = '', inputKeysToSend = '31121999';
var input = element(by.model('dateMask')),
value = element(by.binding('dateMask'));
for (var i = 0; i < 8; i++) {
var key = inputKeysToSend.charAt(i);
input.sendKeys(key);
numberToFormat += key;
formatedDateAsString = dateFormatter.apply(numberToFormat).replace(/\/$/,'');
expect(input.getAttribute('value')).toEqual(formatedDateAsString);
}
expect(value.getText()).toEqual(moment(formatedDateAsString, 'DD/MM/YYYY').toDate().toString());
for (var i = 7; i >= 0; i--) {
input.sendKeys(protractor.Key.BACK_SPACE);
numberToFormat = numberToFormat.slice(0, -1);
if(numberToFormat) {
formatedDateAsString = dateFormatter.apply(numberToFormat).replace(/\/$/,'');
expect(input.getAttribute('value')).toEqual(formatedDateAsString);
}
}
});
it('should format a model initialized with a date object', function() {
var input = element(by.model('initializedDateMask')),
value = element(by.binding('initializedDateMask'));
var dateValue = moment(value.getText(), 'DD/MM/YYYY').toDate(),
parsedViewValue = moment(input.getAttribute('value'), 'DD/MM/YYYY').toDate();
expect(parsedViewValue).toEqual(dateValue);
});
it('should format a model initialized with a ISO string', function() {
var input = element(by.model('initializedWithISOStringDateMask')),
value = element(by.binding('initializedWithISOStringDateMask'));
var dateValue = moment(value.getText(), 'DD/MM/YYYY').toDate(),
parsedViewValue = moment(input.getAttribute('value'), 'DD/MM/YYYY').toDate();
expect(parsedViewValue).toEqual(dateValue);
});
it('should be valid if the model is a valid date', function() {
var inputKeysToSend = '31121999';
var input = element(by.model('dateMask')),
value = element(by.binding('dateMask')),
valid = element(by.binding('form.dateMaskInput.$error'));
for (var i = 0; i < 7; i++) {
input.sendKeys(inputKeysToSend.charAt(i));
expect(valid.getText()).toEqual('{ "date": true }');
}
input.sendKeys(inputKeysToSend.charAt(7));
expect(valid.getText()).toEqual('{ "date": false }');
for (var i = 7; i > 0; i--) {
input.sendKeys(protractor.Key.BACK_SPACE);
expect(valid.getText()).toEqual('{ "date": true }');
}
input.sendKeys(protractor.Key.BACK_SPACE);
expect(valid.getText()).toEqual('{ "date": false }');
});
});
});
});