From 7174adeb47aa0930c95ddae79e2c9cf042fded45 Mon Sep 17 00:00:00 2001 From: Peter Wagenet Date: Tue, 14 Sep 2010 17:50:51 -0700 Subject: [PATCH] Fixed problems with timezones in tests --- .../tests/models/record_attribute.js | 9 ++++++-- .../foundation/tests/validators/date.js | 21 +++++++++++-------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/frameworks/datastore/tests/models/record_attribute.js b/frameworks/datastore/tests/models/record_attribute.js index 95b5019a3..17fe838df 100644 --- a/frameworks/datastore/tests/models/record_attribute.js +++ b/frameworks/datastore/tests/models/record_attribute.js @@ -210,8 +210,13 @@ test("writing a string to a number attribute should store a number" ,function() test("writing a date should generate an ISO date" ,function() { var date = new Date(1238650083966); - equals(rec.set('date', date), rec, 'returns reciever'); - equals(rec.readAttribute('date'), '2009-04-01T22:28:03-07:00', 'should have new time (%@)'.fmt(date.toString())); + + // Work with timezones + var utcDate = new Date(Number(date) + (date.getTimezoneOffset() * 60000)); // Adjust for timezone offset + utcDate.getTimezoneOffset = function(){ return 0; }; // Hack the offset to respond 0 + + equals(rec.set('date', utcDate), rec, 'returns reciever'); + equals(rec.readAttribute('date'), '2009-04-02T05:28:03Z', 'should have time in ISO format'); }); test("writing an attribute should make relationship aggregate dirty" ,function() { diff --git a/frameworks/foundation/tests/validators/date.js b/frameworks/foundation/tests/validators/date.js index 84d49edca..f846b565b 100755 --- a/frameworks/foundation/tests/validators/date.js +++ b/frameworks/foundation/tests/validators/date.js @@ -9,15 +9,18 @@ module("SC.Validator.Date"); test("Converts into date if a value is given",function(){ - - var num = 1234947136000; // represents time in secs - var c = SC.Validator.Date.fieldValueForObject(1234947136000,'',''); - equals(YES,c === "Feb 18, 2009 12:52:16 AM","Number converted to date format"); + var date = new Date(1234947136000), + utcDate = new Date(Number(date) + (date.getTimezoneOffset() * 60000)); // Adjust for timezone offset + + var c = SC.Validator.Date.fieldValueForObject(Number(utcDate),'',''); + var expected = "Feb 18, 2009 8:52:16 AM"; + ok(c === expected, "Number converted to date format. Expected: (%@) but got (%@)".fmt(expected, c)); }); test("Converts into number when date string is given", function(){ - var da = "Feb 18, 2009 12:52:16 AM"; // date string - var d = SC.Validator.Date.objectForFieldValue("Feb 18, 2009 12:52:16 AM",'',''); - equals(YES,d === 1234947136000,"Date String compared with value in seconds"); - equals(YES,SC.typeOf(d) == "number","Number is obtained"); -}); \ No newline at end of file + var expected = 1234918336000; + var date = new Date(expected); + var d = SC.Validator.Date.objectForFieldValue(date.format('NNN d, yyyy h:mm:ss a'),'',''); + ok(d === expected, "Date String compared with value in seconds. Expected: (%@) but got (%@)".fmt(expected, d)); + ok(SC.typeOf(d) == "number", "Number is obtained"); +});