CRM-15856 - crmMailingRadioDate - Add unit test. Fix validation edge-cases.
[civicrm-core.git] / js / angular-crmMailing / directives.js
index 214ed8e5e319d89e78a9d8020b57d2832f807686..4767e3ccfc5201b4f7a9fe21462bbffc00b54974 100644 (file)
           else {
             schedule.mode = 'now';
           }
+          validate();
         };
 
         var updateParent = (function () {
           switch (schedule.mode) {
             case 'now':
               ngModel.$setViewValue(null);
+              schedule.datetime = ' ';
               break;
             case 'at':
               ngModel.$setViewValue(schedule.datetime);
             default:
               throw 'Unrecognized schedule mode: ' + schedule.mode;
           }
+          validate();
         });
 
+        function validate() {
+          switch (schedule.mode) {
+            case 'now':
+              ngModel.$setValidity('empty', true);
+              break;
+            case 'at':
+              ngModel.$setValidity('empty', !_.isEmpty(schedule.datetime) && schedule.datetime !== ' ');
+              break;
+            default:
+              throw 'Unrecognized schedule mode: ' + schedule.mode;
+          }
+        }
+
         $scope.$watch(attrs.crmMailingRadioDate + '.mode', updateParent);
         $scope.$watch(attrs.crmMailingRadioDate + '.datetime', function (newValue, oldValue) {
           // automatically switch mode based on datetime entry