function()

in javascript/ui/element/phonenumbertesthelper.js [140:230]


    function() {
  var result;
  var phoneNumber = this.component.getPhoneNumberElement();
  var countrySelector = this.getCountrySelectorElement_();

  // Country selector defaults to US.
  assertEquals('\u200e+1', countrySelector.textContent);
  // Emulate that a '+1' is typed in to the phone number input. Make sure
  // US is country selected.
  goog.dom.forms.setValue(phoneNumber, '+1');
  this.fireInputEvent(phoneNumber, goog.events.KeyCodes.PLUS_SIGN);
  this.fireInputEvent(phoneNumber, goog.events.KeyCodes.NUM_ONE);
  // The button content and icon should reflect US country code.
  assertEquals('\u200e+1', countrySelector.textContent);
  assertTrue(goog.dom.classlist.contains(this.getCountrySelectorFlagElement_(),
      'firebaseui-flag-US'));

  // Change to +45 another code
  goog.dom.forms.setValue(phoneNumber, '+');
  this.fireInputEvent(phoneNumber, goog.events.KeyCodes.PLUS_SIGN);
  // US should still be selected.
  assertEquals('\u200e+1', countrySelector.textContent);
  // Simulate number 4 pressed.
  goog.dom.forms.setValue(phoneNumber, '+4');
  this.fireInputEvent(phoneNumber, goog.events.KeyCodes.NUM_FOUR);
  // US should still be selected.
  assertEquals('\u200e+1', countrySelector.textContent);
  // Simulate number 5 pressed.
  goog.dom.forms.setValue(phoneNumber, '+45');
  this.fireInputEvent(phoneNumber, goog.events.KeyCodes.NUM_FIVE);
  // Denmark should be selected.
  assertEquals('\u200e+45', countrySelector.textContent);
  assertTrue(goog.dom.classlist.contains(this.getCountrySelectorFlagElement_(),
      'firebaseui-flag-DK'));
  goog.dom.forms.setValue(phoneNumber, '+4560123456');
  // Confirm expected value returned for getPhoneNumberValue.
  result = this.component.getPhoneNumberValue();
  assertEquals('+4560123456', result.getPhoneNumber());
  assertEquals('60123456', result.nationalNumber);
  assertEquals('45-DK-0', result.countryId);

  // Simulate user selected another country from the drop down list. The country
  // code in the national number should be updated.
  goog.testing.events.fireClickSequence(countrySelector);
  // Check that the France button is there, and click it.
  var franceButton = this.getDialogButtonContainingText_('France');
  assertNotNull(franceButton);
  assertEquals('France \u200e+33', franceButton.textContent);
  goog.testing.events.fireClickSequence(franceButton);
  // France should be selected.
  assertEquals('\u200e+33', countrySelector.textContent);
  assertTrue(goog.dom.classlist.contains(this.getCountrySelectorFlagElement_(),
      'firebaseui-flag-FR'));
  // Value should be updated in the national number input field.
  assertEquals('+3360123456', phoneNumber.value);
  // Confirm expected French phone number.
  result = this.component.getPhoneNumberValue();
  assertEquals('+3360123456', result.getPhoneNumber());
  assertEquals('60123456', result.nationalNumber);
  assertEquals('33-FR-0', result.countryId);

  // Change back to +1, US should be selected.
  goog.dom.forms.setValue(phoneNumber, '+');
  this.fireInputEvent(phoneNumber, goog.events.KeyCodes.PLUS_SIGN);
  // France should still be selected.
  assertEquals('\u200e+33', countrySelector.textContent);
  goog.dom.forms.setValue(phoneNumber, '+1');
  this.fireInputEvent(phoneNumber, goog.events.KeyCodes.NUM_ONE);
  // The button content and icon should reflect US country code.
  assertEquals('\u200e+1', countrySelector.textContent);
  assertTrue(goog.dom.classlist.contains(this.getCountrySelectorFlagElement_(),
      'firebaseui-flag-US'));

  // Manually change country selector to Canada.
  goog.dom.forms.setValue(phoneNumber, '');
  goog.testing.events.fireClickSequence(countrySelector);
  // Check that the Canada button is there, and click it.
  var canadaButton = this.getDialogButtonContainingText_('Canada');
  assertNotNull(canadaButton);
  assertEquals('Canada \u200e+1', canadaButton.textContent);
  goog.testing.events.fireClickSequence(canadaButton);
  // Simulate +1 entered. Canada should still be selected.
  goog.dom.forms.setValue(phoneNumber, '+');
  this.fireInputEvent(phoneNumber, goog.events.KeyCodes.PLUS_SIGN);
  goog.dom.forms.setValue(phoneNumber, '+1');
  this.fireInputEvent(phoneNumber, goog.events.KeyCodes.NUM_ONE);
  // The button content and icon should reflect CA country code.
  assertEquals('\u200e+1', countrySelector.textContent);
  assertTrue(goog.dom.classlist.contains(this.getCountrySelectorFlagElement_(),
      'firebaseui-flag-CA'));
};