')($rootScope);
+ $rootScope.minimumDate = new Date('January 1, 1970');
+ $rootScope.maximumDate = new Date('January 1, 2020');
+ $rootScope.dateDisabledHandler = jasmine.createSpy('dateDisabledHandler');
+ var wrapElement = $compile('
')($rootScope);
$rootScope.$digest();
assignElements(wrapElement);
+
}));
+ it('executes the dateDisabled expression for each visible day plus one for validation', function() {
+ expect($rootScope.dateDisabledHandler.calls.length).toEqual(42+1);
+ });
+
it('datepicker is displayed', function() {
expect(dropdownEl).not.toBeHidden();
});
@@ -1161,6 +1170,41 @@ describe('datepicker directive', function () {
$rootScope.date = new Date('January 10, 1983 10:00:00');
$rootScope.$digest();
expect(inputEl.val()).toBe('1983-01-10');
+ expect(inputEl).not.toHaveClass('ng-invalid');
+ expect(inputEl).not.toHaveClass('ng-invalid-min-date');
+ expect(inputEl).not.toHaveClass('ng-invalid-max-date');
+ });
+
+ it('updates the input correctly when model changes to a date prior to minimum date', function() {
+ $rootScope.date = new Date('January 10, 1963 10:00:00');
+ $rootScope.$digest();
+ expect(inputEl.val()).toBe('1963-01-10');
+ expect(inputEl).toHaveClass('ng-invalid');
+ expect(inputEl).toHaveClass('ng-invalid-min-date');
+ expect(inputEl).not.toHaveClass('ng-invalid-max-date');
+ });
+
+ it('input is not marked with invalid minimum date when minimum is not a valid date', function() {
+ expect(inputEl).not.toHaveClass('ng-invalid-min-date');
+ $rootScope.minimumDate = 'pizza';
+ $rootScope.$digest();
+ expect(inputEl).not.toHaveClass('ng-invalid-min-date');
+ });
+
+ it('updates the input correctly when model changes to a date past the maximum date', function() {
+ $rootScope.date = new Date('January 10, 2023 10:00:00');
+ $rootScope.$digest();
+ expect(inputEl.val()).toBe('2023-01-10');
+ expect(inputEl).toHaveClass('ng-invalid');
+ expect(inputEl).toHaveClass('ng-invalid-max-date');
+ expect(inputEl).not.toHaveClass('ng-invalid-min-date');
+ });
+
+ it('input is not marked with invalid maximum date when maximum is not a valid date', function() {
+ expect(inputEl).not.toHaveClass('ng-invalid-max-date');
+ $rootScope.maximumDate = new Date('pizza');
+ $rootScope.$digest();
+ expect(inputEl).not.toHaveClass('ng-invalid-max-date');
});
it('closes the dropdown when a day is clicked', function() {
@@ -1214,7 +1258,42 @@ describe('datepicker directive', function () {
expect(inputEl).not.toHaveClass('ng-invalid-date');
});
- describe('focus', function () {
+ it('sets `ng-invalid` for date prior to minimum date', function() {
+ changeInputValueTo(inputEl, '1960-12-01');
+
+ expect(inputEl).toHaveClass('ng-invalid');
+ expect(inputEl).toHaveClass('ng-invalid-min-date');
+ expect(inputEl).not.toHaveClass('ng-invalid-max-date');
+ expect(inputEl).not.toHaveClass('ng-invalid-date');
+ expect($rootScope.date).toBeUndefined();
+ expect(inputEl.val()).toBe('1960-12-01');
+ });
+
+ it('sets `ng-invalid` for date (european format) prior to minimum date', function() {
+ $rootScope.format='dd.MM.yyyy';
+ $rootScope.$digest();
+ changeInputValueTo(inputEl, '20.12.1960');
+
+ expect(inputEl).toHaveClass('ng-invalid');
+ expect(inputEl).toHaveClass('ng-invalid-min-date');
+ expect(inputEl).not.toHaveClass('ng-invalid-max-date');
+ expect(inputEl).not.toHaveClass('ng-invalid-date');
+ expect($rootScope.date).toBeUndefined();
+ expect(inputEl.val()).toBe('20.12.1960');
+ });
+
+ it('sets `ng-invalid` for date past the maximum date', function() {
+ changeInputValueTo(inputEl, '2050-12-01');
+
+ expect(inputEl).toHaveClass('ng-invalid');
+ expect(inputEl).not.toHaveClass('ng-invalid-min-date');
+ expect(inputEl).toHaveClass('ng-invalid-max-date');
+ expect(inputEl).not.toHaveClass('ng-invalid-date');
+ expect($rootScope.date).toBeUndefined();
+ expect(inputEl.val()).toBe('2050-12-01');
+ });
+
+ describe('focus', function () {
beforeEach(function() {
var body = $document.find('body');
body.append(inputEl);