+ Specify whitespace parameter when fetching a diff. + Pass the correct var to Promise.all within gr-date-formatter_test.html Change-Id: Ife49a67639891adae7d99e735516b86e54132724
		
			
				
	
	
		
			162 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			162 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE html>
 | 
						|
<!--
 | 
						|
Copyright (C) 2015 The Android Open Source Project
 | 
						|
 | 
						|
Licensed under the Apache License, Version 2.0 (the "License");
 | 
						|
you may not use this file except in compliance with the License.
 | 
						|
You may obtain a copy of the License at
 | 
						|
 | 
						|
http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
 | 
						|
Unless required by applicable law or agreed to in writing, software
 | 
						|
distributed under the License is distributed on an "AS IS" BASIS,
 | 
						|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
See the License for the specific language governing permissions and
 | 
						|
limitations under the License.
 | 
						|
-->
 | 
						|
 | 
						|
<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes">
 | 
						|
<title>gr-date-formatter</title>
 | 
						|
 | 
						|
<script src="../../../bower_components/webcomponentsjs/webcomponents-lite.min.js"></script>
 | 
						|
<script src="../../../bower_components/web-component-tester/browser.js"></script>
 | 
						|
<script src="../../../scripts/util.js"></script>
 | 
						|
 | 
						|
<link rel="import" href="gr-date-formatter.html">
 | 
						|
 | 
						|
<test-fixture id="basic">
 | 
						|
  <template>
 | 
						|
    <gr-date-formatter date-str="2015-09-24 23:30:17.033000000"></gr-date-formatter>
 | 
						|
  </template>
 | 
						|
</test-fixture>
 | 
						|
 | 
						|
<script>
 | 
						|
  suite('gr-date-formatter tests', function() {
 | 
						|
    var element;
 | 
						|
 | 
						|
    /**
 | 
						|
     * Parse server-formatter date and normalize into current timezone.
 | 
						|
     */
 | 
						|
    function normalizedDate(dateStr) {
 | 
						|
      var d = util.parseDate(dateStr);
 | 
						|
      d.setMinutes(d.getMinutes() + d.getTimezoneOffset());
 | 
						|
      return d;
 | 
						|
    }
 | 
						|
 | 
						|
    function testDates(nowStr, dateStr, expected) {
 | 
						|
      // Normalize and convert the date to mimic server response.
 | 
						|
      dateStr = normalizedDate(dateStr)
 | 
						|
          .toJSON().replace('T', ' ').slice(0, -1);
 | 
						|
      var clock = sinon.useFakeTimers(normalizedDate(nowStr).getTime());
 | 
						|
      element.dateStr = dateStr;
 | 
						|
      assert.equal(element.$$('span').textContent, expected);
 | 
						|
      clock.restore();
 | 
						|
    }
 | 
						|
 | 
						|
    function stubGetTimeFormat(timeFormat) {
 | 
						|
      var timeFormatPromise = Promise.resolve(timeFormat);
 | 
						|
      stub('gr-date-formatter', {
 | 
						|
        _getTimeFormat: sinon.stub().returns(timeFormatPromise),
 | 
						|
      });
 | 
						|
      return timeFormatPromise;
 | 
						|
    }
 | 
						|
 | 
						|
    suite('24 hours time format preference', function() {
 | 
						|
      setup(function() {
 | 
						|
        return stubGetTimeFormat('HHMM_24').then(function() {
 | 
						|
          element = fixture('basic');
 | 
						|
        });
 | 
						|
      });
 | 
						|
 | 
						|
      test('invalid dates are quietly rejected', function() {
 | 
						|
        assert.notOk((new Date('foo')).valueOf());
 | 
						|
        assert.equal(element._computeDateStr('foo', 'HHMM_12'), '');
 | 
						|
      });
 | 
						|
 | 
						|
      test('Within 24 hours on same day', function() {
 | 
						|
        testDates('2015-07-29 20:34:14.985000000',
 | 
						|
                  '2015-07-29 15:34:14.985000000',
 | 
						|
                  '15:34');
 | 
						|
        testDates('2016-01-27 17:41:14.985000000',
 | 
						|
                  '2016-01-27 12:41:14.985000000',
 | 
						|
                  '12:41');
 | 
						|
      });
 | 
						|
 | 
						|
      test('Within 24 hours on different days', function() {
 | 
						|
        testDates('2015-07-29 03:34:14.985000000',
 | 
						|
                  '2015-07-28 20:25:14.985000000',
 | 
						|
                  'Jul 28');
 | 
						|
      });
 | 
						|
 | 
						|
      test('More than 24 hours but less than six months', function() {
 | 
						|
        testDates('2015-07-29 20:34:14.985000000',
 | 
						|
                  '2015-06-15 03:25:14.985000000',
 | 
						|
                  'Jun 15');
 | 
						|
      });
 | 
						|
 | 
						|
      test('More than six months', function() {
 | 
						|
        testDates('2015-09-15 20:34:00.000000000',
 | 
						|
                  '2015-01-15 03:25:00.000000000',
 | 
						|
                  'Jan 15, 2015');
 | 
						|
      });
 | 
						|
    });
 | 
						|
 | 
						|
    suite('12 hours time format preference', function() {
 | 
						|
      setup(function() {
 | 
						|
        return stubGetTimeFormat('HHMM_12').then(function() {
 | 
						|
          element = fixture('basic');
 | 
						|
        });
 | 
						|
      });
 | 
						|
 | 
						|
      test('Within 24 hours on same day', function() {
 | 
						|
        testDates('2015-07-29 20:34:14.985000000',
 | 
						|
                  '2015-07-29 15:34:14.985000000',
 | 
						|
                  '3:34 PM');
 | 
						|
        testDates('2016-01-27 17:41:14.985000000',
 | 
						|
                  '2016-01-27 12:41:14.985000000',
 | 
						|
                  '12:41 PM');
 | 
						|
      });
 | 
						|
    });
 | 
						|
 | 
						|
    function stubRestAPI(loggedIn, preferences) {
 | 
						|
      var loggedInPromise = Promise.resolve(loggedIn);
 | 
						|
      var preferencesPromise = Promise.resolve(preferences);
 | 
						|
      stub('gr-rest-api-interface', {
 | 
						|
        getLoggedIn: sinon.stub().returns(loggedInPromise),
 | 
						|
        getPreferences: sinon.stub().returns(preferencesPromise),
 | 
						|
      });
 | 
						|
      return Promise.all([loggedInPromise, preferencesPromise]);
 | 
						|
    }
 | 
						|
 | 
						|
    suite('logged in', function() {
 | 
						|
      setup(function() {
 | 
						|
        return stubRestAPI(true, {time_format: 'HHMM_12'}).then(function() {
 | 
						|
          element = fixture('basic');
 | 
						|
        });
 | 
						|
      });
 | 
						|
 | 
						|
      test('Preferences are respected', function(done) {
 | 
						|
        flush(function() {
 | 
						|
          assert.equal(element._timeFormat, 'HHMM_12');
 | 
						|
          done();
 | 
						|
        });
 | 
						|
      });
 | 
						|
    });
 | 
						|
 | 
						|
    suite('logged out', function() {
 | 
						|
      setup(function() {
 | 
						|
        return stubRestAPI(false, null).then(function() {
 | 
						|
          element = fixture('basic');
 | 
						|
        });
 | 
						|
      });
 | 
						|
 | 
						|
      test('Default preferences are respected', function(done) {
 | 
						|
        flush(function() {
 | 
						|
          assert.equal(element._timeFormat, 'HHMM_24');
 | 
						|
          done();
 | 
						|
        });
 | 
						|
      });
 | 
						|
    });
 | 
						|
  });
 | 
						|
</script>
 |