Skip to content

Commit

Permalink
Fixed problems with timezones in tests
Browse files Browse the repository at this point in the history
  • Loading branch information
wagenet committed Sep 15, 2010
1 parent 0b3ab76 commit 7174ade
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 11 deletions.
9 changes: 7 additions & 2 deletions frameworks/datastore/tests/models/record_attribute.js
Expand Up @@ -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() {
Expand Down
21 changes: 12 additions & 9 deletions frameworks/foundation/tests/validators/date.js
Expand Up @@ -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");
});
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");
});

0 comments on commit 7174ade

Please sign in to comment.