sproutcore 1.5.0.pre.4.1 → 1.5.0.pre.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (171) hide show
  1. data/CHANGELOG +7 -0
  2. data/VERSION.yml +1 -1
  3. data/lib/buildtasks/manifest.rake +4 -3
  4. data/lib/frameworks/sproutcore/Buildfile +1 -2
  5. data/lib/frameworks/sproutcore/CHANGELOG.md +8 -3
  6. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/app-selector.css +19 -23
  7. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/button.css +139 -135
  8. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/dock.css +5 -0
  9. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/general.css +0 -1
  10. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/menu.css +10 -13
  11. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/modal.css +9 -8
  12. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/picker.css +19 -12
  13. data/lib/frameworks/sproutcore/apps/greenhouse/models/design.js +2 -2
  14. data/lib/frameworks/sproutcore/apps/greenhouse/states/modals.js +1 -1
  15. data/lib/frameworks/sproutcore/apps/greenhouse/theme.js +2 -2
  16. data/lib/frameworks/sproutcore/apps/greenhouse/views/plist_item.js +3 -1
  17. data/lib/frameworks/sproutcore/frameworks/animation/core.js +1 -1
  18. data/lib/frameworks/sproutcore/frameworks/bootstrap/system/browser.js +31 -20
  19. data/lib/frameworks/sproutcore/frameworks/bootstrap/tests/system/browser.js +15 -9
  20. data/lib/frameworks/sproutcore/frameworks/core_foundation/mixins/responder_context.js +5 -5
  21. data/lib/frameworks/sproutcore/frameworks/core_foundation/panes/pane.js +1 -1
  22. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/browser.js +23 -45
  23. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/device.js +1 -1
  24. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/platform.js +60 -5
  25. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/ready.js +1 -1
  26. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/render_context.js +2 -2
  27. data/lib/frameworks/sproutcore/frameworks/core_foundation/system/root_responder.js +4 -4
  28. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/ready/done.js +32 -0
  29. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/system/utils/offset.js +5 -2
  30. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/append_remove.js +8 -3
  31. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/pane/layout.js +4 -4
  32. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template_view/collection.js +51 -5
  33. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template_view/core.js +18 -0
  34. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/template_view/handlebars.js +261 -0
  35. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/animation.js +55 -0
  36. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/clippingFrame.js +2 -19
  37. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/convertFrames.js +3 -1
  38. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/insertBefore.js +17 -0
  39. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/layoutStyle.js +96 -1
  40. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/prepareContext.js +15 -0
  41. data/lib/frameworks/sproutcore/frameworks/core_foundation/tests/views/view/updateLayerLocation.js +19 -0
  42. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/template/collection.js +8 -1
  43. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view.js +179 -4
  44. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/animation.js +8 -14
  45. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/cursor.js +7 -0
  46. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/enabled.js +4 -4
  47. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout.js +51 -114
  48. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/layout_style.js +84 -36
  49. data/lib/frameworks/sproutcore/frameworks/core_foundation/views/view/manipulation.js +4 -67
  50. data/lib/frameworks/sproutcore/frameworks/datastore/data_sources/data_source.js +244 -1
  51. data/lib/frameworks/sproutcore/frameworks/datastore/models/child_attribute.js +1 -1
  52. data/lib/frameworks/sproutcore/frameworks/datastore/models/children_attribute.js +1 -1
  53. data/lib/frameworks/sproutcore/frameworks/datastore/models/record_attribute.js +7 -1
  54. data/lib/frameworks/sproutcore/frameworks/datastore/system/child_array.js +1 -1
  55. data/lib/frameworks/sproutcore/frameworks/datastore/system/store.js +2 -2
  56. data/lib/frameworks/sproutcore/frameworks/datastore/tests/models/record/normalize.js +23 -1
  57. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChanges.js +4 -2
  58. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/commitChangesFromNestedStore.js +4 -0
  59. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/nested_store/discardChanges.js +4 -1
  60. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/record_type_is.js +4 -0
  61. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_comparisons.js +4 -0
  62. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/query/registered_query_extensions.js +4 -0
  63. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/commitChangesFromNestedStore.js +4 -0
  64. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/createRecord.js +5 -1
  65. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/destroyRecord.js +5 -1
  66. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/loadRecord.js +64 -0
  67. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/recordDidChange.js +38 -35
  68. data/lib/frameworks/sproutcore/frameworks/datastore/tests/system/store/unloadRecords.js +4 -0
  69. data/lib/frameworks/sproutcore/frameworks/datetime/system/datetime.js +7 -4
  70. data/lib/frameworks/sproutcore/frameworks/datetime/tests/system/datetime.js +2 -2
  71. data/lib/frameworks/sproutcore/frameworks/debug/core.js +1 -1
  72. data/lib/frameworks/sproutcore/frameworks/debug/invoke_once_last_debugging.js +5 -5
  73. data/lib/frameworks/sproutcore/frameworks/designer/coders/object.js +1 -1
  74. data/lib/frameworks/sproutcore/frameworks/designer/designers/view_designer.js +11 -3
  75. data/lib/frameworks/sproutcore/frameworks/designer/ext/binding.js +33 -0
  76. data/lib/frameworks/sproutcore/frameworks/designer/ext/object.js +1 -1
  77. data/lib/frameworks/sproutcore/frameworks/designer/ext/page.js +5 -33
  78. data/lib/frameworks/sproutcore/frameworks/designer/ext/view.js +0 -27
  79. data/lib/frameworks/sproutcore/frameworks/designer/tests/coders/page.js +54 -0
  80. data/lib/frameworks/sproutcore/frameworks/designer/tests/designers/view_designer.js +47 -0
  81. data/lib/frameworks/sproutcore/frameworks/designer/views/drawing.js +4 -4
  82. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/border.js +19 -6
  83. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/collection_view_delegate.js +1 -1
  84. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/navigation_builder.js +1 -1
  85. data/lib/frameworks/sproutcore/frameworks/desktop/mixins/scrollable.js +1 -1
  86. data/lib/frameworks/sproutcore/frameworks/desktop/panes/picker.js +133 -39
  87. data/lib/frameworks/sproutcore/frameworks/desktop/system/drag.js +3 -3
  88. data/lib/frameworks/sproutcore/frameworks/desktop/tests/mixins/border.js +6 -5
  89. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/picker/ui.js +8 -2
  90. data/lib/frameworks/sproutcore/frameworks/desktop/tests/panes/select_button/ui.js +10 -2
  91. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/button/ui.js +8 -2
  92. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/checkbox/ui.js +10 -2
  93. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/collection/ui_diagram.js +15 -9
  94. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/progress/ui.js +8 -2
  95. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/radio/ui.js +8 -2
  96. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/segmented/ui.js +10 -2
  97. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select/ui.js +10 -2
  98. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/methods.js +31 -0
  99. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/select_field/ui.js +10 -3
  100. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/separator.js +10 -3
  101. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/split/ui.js +10 -3
  102. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/stacked/ui_comments.js +15 -8
  103. data/lib/frameworks/sproutcore/frameworks/desktop/tests/views/tab/ui.js +10 -3
  104. data/lib/frameworks/sproutcore/frameworks/desktop/views/button.js +1 -1
  105. data/lib/frameworks/sproutcore/frameworks/desktop/views/file.js +1 -1
  106. data/lib/frameworks/sproutcore/frameworks/desktop/views/list_item.js +1 -7
  107. data/lib/frameworks/sproutcore/frameworks/desktop/views/select_field.js +10 -0
  108. data/lib/frameworks/sproutcore/frameworks/desktop/views/toolbar.js +3 -3
  109. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/collection_content.js +2 -2
  110. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inline_text_field.js +17 -5
  111. data/lib/frameworks/sproutcore/frameworks/foundation/mixins/inner_frame.js +60 -27
  112. data/lib/frameworks/sproutcore/frameworks/foundation/render_delegates/canvas_image.js +1 -1
  113. data/lib/frameworks/sproutcore/frameworks/foundation/system/benchmark.js +4 -4
  114. data/lib/frameworks/sproutcore/frameworks/foundation/system/cookie.js +29 -18
  115. data/lib/frameworks/sproutcore/frameworks/foundation/system/module.js +18 -18
  116. data/lib/frameworks/sproutcore/frameworks/foundation/system/user_defaults.js +5 -5
  117. data/lib/frameworks/sproutcore/frameworks/foundation/system/utils/misc.js +62 -1
  118. data/lib/frameworks/sproutcore/frameworks/foundation/tests/integration/creating_views.js +8 -3
  119. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/button/ui.js +4 -3
  120. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/editable/ui.js +5 -3
  121. data/lib/frameworks/sproutcore/frameworks/foundation/tests/mixins/inline_text_field/ui.js +5 -3
  122. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/cookie.js +20 -4
  123. data/lib/frameworks/sproutcore/frameworks/foundation/tests/system/utils/pointInElement.js +235 -0
  124. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/container/ui.js +5 -0
  125. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/image/ui.js +0 -2
  126. data/lib/frameworks/sproutcore/frameworks/foundation/tests/views/label/ui.js +8 -3
  127. data/lib/frameworks/sproutcore/frameworks/foundation/views/container.js +2 -2
  128. data/lib/frameworks/sproutcore/frameworks/foundation/views/image.js +19 -11
  129. data/lib/frameworks/sproutcore/frameworks/foundation/views/label.js +6 -13
  130. data/lib/frameworks/sproutcore/frameworks/handlebars/extensions.js +23 -117
  131. data/lib/frameworks/sproutcore/frameworks/handlebars/extensions/bind.js +136 -0
  132. data/lib/frameworks/sproutcore/frameworks/handlebars/extensions/collection.js +75 -0
  133. data/lib/frameworks/sproutcore/frameworks/handlebars/extensions/localization.js +5 -0
  134. data/lib/frameworks/sproutcore/frameworks/handlebars/extensions/view.js +115 -0
  135. data/lib/frameworks/sproutcore/frameworks/handlebars/handlebars.js +143 -80
  136. data/lib/frameworks/sproutcore/frameworks/jquery/jquery-buffer.js +1 -1
  137. data/lib/frameworks/sproutcore/frameworks/media/views/audio.js +4 -4
  138. data/lib/frameworks/sproutcore/frameworks/media/views/video.js +5 -5
  139. data/lib/frameworks/sproutcore/frameworks/runtime/debug/test_suites/array.js +14 -0
  140. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/enumerable.js +1 -1
  141. data/lib/frameworks/sproutcore/frameworks/runtime/mixins/observable.js +13 -13
  142. data/lib/frameworks/sproutcore/frameworks/runtime/system/binding.js +4 -4
  143. data/lib/frameworks/sproutcore/frameworks/runtime/system/run_loop.js +3 -3
  144. data/lib/frameworks/sproutcore/frameworks/runtime/tests/mixins/array.js +1 -1
  145. data/lib/frameworks/sproutcore/frameworks/testing/system/plan.js +25 -17
  146. data/lib/frameworks/sproutcore/themes/ace/designs/psds/panel/pointers.psd +0 -0
  147. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/18px/button.css +18 -12
  148. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/24px/button.css +30 -16
  149. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/30px/button.css +27 -15
  150. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/44px/button.css +5 -0
  151. data/lib/frameworks/sproutcore/themes/ace/resources/button/ace/button.css +8 -0
  152. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/24px/button.css +25 -16
  153. data/lib/frameworks/sproutcore/themes/ace/resources/button/dark/30px/button.css +21 -15
  154. data/lib/frameworks/sproutcore/themes/ace/resources/imagebutton/ace/imagebutton.css +11 -0
  155. data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/panel.png +0 -0
  156. data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/picker.css +41 -0
  157. data/lib/frameworks/sproutcore/themes/ace/resources/picker/ace/pointers.png +0 -0
  158. data/lib/sproutcore.rb +2 -0
  159. data/lib/sproutcore/buildfile.rb +17 -17
  160. data/lib/sproutcore/buildfile/task.rb +4 -12
  161. data/lib/sproutcore/buildfile/task_manager.rb +13 -4
  162. data/lib/sproutcore/models/manifest.rb +3 -3
  163. data/lib/sproutcore/models/target.rb +1 -1
  164. data/spec/fixtures/real_world/Buildfile +1 -1
  165. data/vendor/chance/lib/chance/imagers/data_url.rb +38 -19
  166. data/vendor/chance/lib/chance/instance.rb +4 -7
  167. data/vendor/chance/lib/chance/slicing.rb +6 -10
  168. metadata +18 -5
  169. data/lib/frameworks/sproutcore/apps/greenhouse/english.lproj/css/tabbed.css +0 -68
  170. data/lib/frameworks/sproutcore/frameworks/designer/coders/localization.js +0 -19
  171. data/lib/sproutcore/buildfile/cloneable.rb +0 -34
@@ -8,6 +8,8 @@
8
8
  var parent, store, child, storeKey, json;
9
9
  module("SC.NestedStore#commitChangesFromNestedStore", {
10
10
  setup: function() {
11
+ SC.RunLoop.begin();
12
+
11
13
  parent = SC.Store.create();
12
14
 
13
15
  json = {
@@ -26,6 +28,8 @@ module("SC.NestedStore#commitChangesFromNestedStore", {
26
28
  child.dataHashDidChange(storeKey);
27
29
  child.changelog = SC.Set.create();
28
30
  child.changelog.add(storeKey);
31
+
32
+ SC.RunLoop.end();
29
33
  }
30
34
  });
31
35
 
@@ -11,6 +11,8 @@
11
11
  var parent, store, child, storeKey, json, args;
12
12
  module("SC.NestedStore#discardChanges", {
13
13
  setup: function() {
14
+ SC.RunLoop.begin();
15
+
14
16
  parent = SC.Store.create();
15
17
 
16
18
  json = {
@@ -41,7 +43,8 @@ module("SC.NestedStore#discardChanges", {
41
43
  force: force
42
44
  });
43
45
  };
44
-
46
+
47
+ SC.RunLoop.end();
45
48
  }
46
49
  });
47
50
 
@@ -9,6 +9,8 @@
9
9
  var rec, q;
10
10
  module("SC.Query comparison of record types", {
11
11
  setup: function() {
12
+ SC.RunLoop.begin();
13
+
12
14
  // setup dummy app and store
13
15
  window.MyApp = SC.Object.create({
14
16
  store: SC.Store.create()
@@ -25,6 +27,8 @@ module("SC.Query comparison of record types", {
25
27
  rec = window.MyApp.store.find(window.MyApp.Foo,1);
26
28
 
27
29
  q = SC.Query.create();
30
+
31
+ SC.RunLoop.end();
28
32
  }
29
33
  });
30
34
 
@@ -10,6 +10,8 @@ var store, storeKey, rec1, rec2, rec3, rec4, rec5, MyApp, q;
10
10
 
11
11
  module("SC.Query comparison of records", {
12
12
  setup: function() {
13
+ SC.RunLoop.begin();
14
+
13
15
  // setup dummy app and store
14
16
  MyApp = SC.Object.create({
15
17
  store: SC.Store.create()
@@ -35,6 +37,8 @@ module("SC.Query comparison of records", {
35
37
 
36
38
 
37
39
  q = SC.Query.create();
40
+
41
+ SC.RunLoop.end();
38
42
  },
39
43
 
40
44
  teardown: function() {
@@ -8,6 +8,8 @@
8
8
  var store, storeKey, rec1, rec2, rec3, rec4, rec5, MyApp, q;
9
9
  module("SC.Query registered query extensions", {
10
10
  setup: function() {
11
+ SC.RunLoop.begin();
12
+
11
13
  // setup dummy app and store
12
14
  MyApp = SC.Object.create({
13
15
  store: SC.Store.create()
@@ -33,6 +35,8 @@ module("SC.Query registered query extensions", {
33
35
 
34
36
 
35
37
  q = SC.Query.create();
38
+
39
+ SC.RunLoop.end();
36
40
  }
37
41
  });
38
42
 
@@ -8,6 +8,8 @@
8
8
  var store, child, storeKey, json;
9
9
  module("SC.Store#commitChangesFromNestedStore", {
10
10
  setup: function() {
11
+ SC.RunLoop.begin();
12
+
11
13
  store = SC.Store.create();
12
14
 
13
15
  json = {
@@ -25,6 +27,8 @@ module("SC.Store#commitChangesFromNestedStore", {
25
27
  child.dataHashDidChange(storeKey);
26
28
  child.changelog = SC.Set.create();
27
29
  child.changelog.add(storeKey);
30
+
31
+ SC.RunLoop.end();
28
32
  }
29
33
  });
30
34
 
@@ -15,7 +15,9 @@ module("SC.Store#createRecord", {
15
15
  number: SC.Record.attr(Number, { defaultValue: 5 }),
16
16
  bool: SC.Record.attr(Boolean, { defaultValue: YES })
17
17
  });
18
-
18
+
19
+ SC.RunLoop.begin();
20
+
19
21
  store = SC.Store.create();
20
22
 
21
23
  json = {
@@ -27,6 +29,8 @@ module("SC.Store#createRecord", {
27
29
  storeKey = SC.Store.generateStoreKey();
28
30
 
29
31
  store.writeDataHash(storeKey, json, SC.Record.READY_CLEAN);
32
+
33
+ SC.RunLoop.end();
30
34
  }
31
35
  });
32
36
 
@@ -10,7 +10,9 @@ var json1, json2, json3, json4, json5, json6;
10
10
 
11
11
  module("SC.Store#destroyRecord", {
12
12
  setup: function() {
13
-
13
+
14
+ SC.RunLoop.begin();
15
+
14
16
  store = SC.Store.create();
15
17
 
16
18
  json1 = {
@@ -62,6 +64,8 @@ module("SC.Store#destroyRecord", {
62
64
  store.writeDataHash(storeKey5, json5, SC.Record.READY_NEW);
63
65
  storeKey6 = SC.Store.generateStoreKey();
64
66
  store.writeDataHash(storeKey6, json6, SC.Record.READY_CLEAN);
67
+
68
+ SC.RunLoop.end();
65
69
  }
66
70
  });
67
71
 
@@ -0,0 +1,64 @@
1
+ // ==========================================================================
2
+ // Project: SproutCore - JavaScript Application Framework
3
+ // Copyright: ©2006-2011 Apple Inc. and contributors.
4
+ // License: Licensed under MIT license (see license.js)
5
+ // ==========================================================================
6
+ /*globals module ok equals same test MyApp */
7
+
8
+ var store, dataHashes;
9
+ var Person;
10
+
11
+
12
+ module("SC.Store#loadRecord", {
13
+ setup: function() {
14
+
15
+ Person = SC.Record.extend({
16
+ first: SC.Record.attr(String, { isRequired: YES}),
17
+ last: SC.Record.attr(String),
18
+ age: SC.Record.attr(Number),
19
+ isAlive: SC.Record.attr(Boolean)
20
+ });
21
+
22
+ SC.RunLoop.begin();
23
+
24
+ store = SC.Store.create();
25
+
26
+ dataHashes = [
27
+
28
+ Person.create({
29
+ guid: 1,
30
+ first: "John",
31
+ last: "Sproutish",
32
+ age: 35,
33
+ isAlive: YES}),
34
+
35
+ Person.create({
36
+ guid: 2,
37
+ first: "Sarah",
38
+ last: "Coop",
39
+ age: 28,
40
+ isAlive: YES })];
41
+
42
+ SC.RunLoop.end();
43
+ }
44
+ });
45
+
46
+ test("loadRecord loads new / update existing record in store", function() {
47
+ var aDataHash = dataHashes[0];
48
+ var storeKey = store.loadRecord(Person, aDataHash);
49
+ ok(storeKey, "A store key is generated for a new record.");
50
+
51
+ var doesStoreKeyResolveToPK = aDataHash.get('guid') === store.idFor(storeKey);
52
+ ok(doesStoreKeyResolveToPK, "The storeKey resolves to the correct Primary Key");
53
+
54
+ var isStatusCorrect = store.peekStatus(storeKey) & SC.Record.READY_CLEAN;
55
+ ok(isStatusCorrect, "Record is in SC.Record.READY_CLEAN state after loading into store.");
56
+
57
+ // Change the record
58
+ aDataHash['age'] = 40;
59
+ var storeKeyAfterUpdate = store.loadRecord(Person, aDataHash);
60
+ ok(storeKey === storeKeyAfterUpdate, "When the same record is loaded a second time its store key remains unchanged.");
61
+
62
+ var record = store.materializeRecord(storeKey);
63
+ ok(record.get('age') === 40, "Record in store is updated with new values from data hash.");
64
+ });
@@ -8,44 +8,47 @@
8
8
  var store, storeKey, json;
9
9
  module("SC.Store#recordDidChange", {
10
10
  setup: function() {
11
+ SC.RunLoop.begin();
12
+
13
+ store = SC.Store.create();
14
+
15
+ json1 = {
16
+ guid: "commitGUID1",
17
+ string: "string",
18
+ number: 23,
19
+ bool: YES
20
+ };
21
+ json2 = {
22
+ guid: "commitGUID2",
23
+ string: "string",
24
+ number: 23,
25
+ bool: YES
26
+ };
27
+ json3 = {
28
+ guid: "commitGUID3",
29
+ string: "string",
30
+ number: 23,
31
+ bool: YES
32
+ };
33
+ json4 = {
34
+ guid: "commitGUID4",
35
+ string: "string",
36
+ number: 23,
37
+ bool: YES
38
+ };
11
39
 
12
- store = SC.Store.create();
13
40
 
14
- json1 = {
15
- guid: "commitGUID1",
16
- string: "string",
17
- number: 23,
18
- bool: YES
19
- };
20
- json2 = {
21
- guid: "commitGUID2",
22
- string: "string",
23
- number: 23,
24
- bool: YES
25
- };
26
- json3 = {
27
- guid: "commitGUID3",
28
- string: "string",
29
- number: 23,
30
- bool: YES
31
- };
32
- json4 = {
33
- guid: "commitGUID4",
34
- string: "string",
35
- number: 23,
36
- bool: YES
37
- };
38
-
41
+ storeKey1 = SC.Store.generateStoreKey();
42
+ store.writeDataHash(storeKey1, json1, SC.Record.BUSY_LOADING);
43
+ storeKey2 = SC.Store.generateStoreKey();
44
+ store.writeDataHash(storeKey2, json2, SC.Record.EMPTY);
45
+ storeKey3 = SC.Store.generateStoreKey();
46
+ store.writeDataHash(storeKey3, json3, SC.Record.READY_NEW);
47
+ storeKey4 = SC.Store.generateStoreKey();
48
+ store.writeDataHash(storeKey4, json4, SC.Record.READY_CLEAN);
39
49
 
40
- storeKey1 = SC.Store.generateStoreKey();
41
- store.writeDataHash(storeKey1, json1, SC.Record.BUSY_LOADING);
42
- storeKey2 = SC.Store.generateStoreKey();
43
- store.writeDataHash(storeKey2, json2, SC.Record.EMPTY);
44
- storeKey3 = SC.Store.generateStoreKey();
45
- store.writeDataHash(storeKey3, json3, SC.Record.READY_NEW);
46
- storeKey4 = SC.Store.generateStoreKey();
47
- store.writeDataHash(storeKey4, json4, SC.Record.READY_CLEAN);
48
- }
50
+ SC.RunLoop.end();
51
+ }
49
52
  });
50
53
 
51
54
  test("recordDidChange", function() {
@@ -12,6 +12,8 @@ module("SC.Store#unloadRecords", {
12
12
  name: SC.Record.attr(String)
13
13
  });
14
14
 
15
+ SC.RunLoop.begin();
16
+
15
17
  store = SC.Store.create();
16
18
 
17
19
  store.createRecord(TestRecord, {
@@ -25,6 +27,8 @@ module("SC.Store#unloadRecords", {
25
27
  store.createRecord(TestRecord, {
26
28
  name: 'Baz'
27
29
  });
30
+
31
+ SC.RunLoop.end();
28
32
  }
29
33
  });
30
34
 
@@ -301,6 +301,7 @@ SC.DateTime = SC.Object.extend(SC.Freezable, SC.Copyable,
301
301
  - %B - The full month name (``January'')
302
302
  - %c - The preferred local date and time representation
303
303
  - %d - Day of the month (01..31)
304
+ - %D - Day of the month (0..31)
304
305
  - %h - Hour of the day, 24-hour clock (0..23)
305
306
  - %H - Hour of the day, 24-hour clock (00..23)
306
307
  - %i - Hour of the day, 12-hour clock (1..12)
@@ -902,7 +903,7 @@ SC.DateTime.mixin(SC.Comparable,
902
903
  parse: function(str, fmt) {
903
904
  // Declared as an object not a literal since in some browsers the literal
904
905
  // retains state across function calls
905
- var re = new RegExp('(?:%([aAbBcdHIjmMpsSUWwxXyYZ%])|(.))', "g");
906
+ var re = new RegExp('(?:%([aAbBcdDhHIjmMpsSUWwxXyYZ%])|(.))', "g");
906
907
  var d, parts, opts = {}, check = {}, scanner = SC.Scanner.create({string: str});
907
908
 
908
909
  if (SC.none(fmt)) fmt = SC.DATETIME_ISO8601;
@@ -915,7 +916,9 @@ SC.DateTime.mixin(SC.Comparable,
915
916
  case 'b': opts.month = scanner.scanArray(this.abbreviatedMonthNames) + 1; break;
916
917
  case 'B': opts.month = scanner.scanArray(this.monthNames) + 1; break;
917
918
  case 'c': throw "%c is not implemented";
918
- case 'd': opts.day = scanner.scanInt(1, 2); break;
919
+ case 'd':
920
+ case 'D': opts.day = scanner.scanInt(1, 2); break;
921
+ case 'h':
919
922
  case 'H': opts.hour = scanner.scanInt(1, 2); break;
920
923
  case 'I': opts.hour = scanner.scanInt(1, 2); break;
921
924
  case 'j': throw "%j is not implemented";
@@ -947,7 +950,7 @@ SC.DateTime.mixin(SC.Comparable,
947
950
  }
948
951
  }
949
952
  } catch (e) {
950
- console.log('SC.DateTime.createFromString ' + e.toString());
953
+ SC.Logger.log('SC.DateTime.createFromString ' + e.toString());
951
954
  return null;
952
955
  }
953
956
 
@@ -1044,7 +1047,7 @@ SC.DateTime.mixin(SC.Comparable,
1044
1047
  // need to move into local time zone for these calculations
1045
1048
  this._setCalcState(start - (timezone * 60000), 0); // so simulate a shifted 'UTC' time
1046
1049
 
1047
- return format.replace(/\%([aAbBcdDHiIjmMpsSUWwxXyYZ\%])/g, function() {
1050
+ return format.replace(/\%([aAbBcdDhHiIjmMpsSUWwxXyYZ\%])/g, function() {
1048
1051
  var v = that.__toFormattedString.call(that, arguments, start, timezone);
1049
1052
  return v;
1050
1053
  });
@@ -229,8 +229,8 @@ test('compare', function() {
229
229
 
230
230
  test('Format', function() {
231
231
  equals(
232
- dt.toFormattedString('%a %A %b %B %d %H %I %j %m %M %p %S %w %y %Y %%a'),
233
- 'Sat Saturday Jun June 08 04 04 159 06 00 AM 22 6 85 1985 %a');
232
+ dt.toFormattedString('%a %A %b %B %d %D %h %H %I %j %m %M %p %S %w %y %Y %%a'),
233
+ 'Sat Saturday Jun June 08 8 4 04 04 159 06 00 AM 22 6 85 1985 %a');
234
234
 
235
235
  equals(dt.toFormattedString('%Z'), formatTimezone(dt.get('timezone')));
236
236
  equals(dt.adjust({ timezone: 0 }).toFormattedString('%Y-%m-%d %H:%M:%S %Z'), '1985-06-08 05:00:22 +00:00');
@@ -6,7 +6,7 @@
6
6
  // ==========================================================================
7
7
 
8
8
  // test
9
- var SC = SC || {} ;
9
+ window.SC = window.SC || {};
10
10
 
11
11
  // Note: We won't use SC.T_* here because those constants might not yet be
12
12
  // defined.
@@ -9,7 +9,7 @@
9
9
  // invokeOnce and invokeLast) to record which code scheduled the
10
10
  // invokeOnce/invokeLast targets/methods.
11
11
 
12
- var SC = SC || {} ;
12
+ window.SC = window.SC || {};
13
13
 
14
14
 
15
15
  // Declaring the variable will make it easier for people who want to enter it
@@ -100,7 +100,7 @@ SC.addInvokeOnceLastDebuggingInfo = function() {
100
100
  // If we didn't capture information for this invocation, just
101
101
  // report what we can. (We assume we'll always have all three
102
102
  // hashes or none.)
103
- console.log("Invoking runloop-scheduled method %@ on %@, but we didn’t capture information about who scheduled it…".fmt(mName, target));
103
+ SC.Logger.log("Invoking runloop-scheduled method %@ on %@, but we didn’t capture information about who scheduled it…".fmt(mName, target));
104
104
  }
105
105
  else {
106
106
  originatingTargets = originatingTargets[originatingKey]; // Could be one target or an array of them
@@ -111,7 +111,7 @@ SC.addInvokeOnceLastDebuggingInfo = function() {
111
111
  // scheduled this target/method? If so, display them all nicely.
112
112
  // Otherwise, optimize our output for only one.
113
113
  if (originatingMethods && SC.typeOf(originatingMethods) === SC.T_ARRAY) {
114
- console.log("Invoking runloop-scheduled method %@ on %@, which was scheduled by multiple target/method pairs:".fmt(mName, target));
114
+ SC.Logger.log("Invoking runloop-scheduled method %@ on %@, which was scheduled by multiple target/method pairs:".fmt(mName, target));
115
115
 
116
116
  var i, len,
117
117
  originatingTarget,
@@ -123,13 +123,13 @@ SC.addInvokeOnceLastDebuggingInfo = function() {
123
123
  originatingMethod = originatingMethod.displayName || originatingMethod;
124
124
  originatingStack = originatingStacks[i];
125
125
 
126
- console.log("[%@] originated by target %@, method %@, stack:".fmt(i, originatingTarget, originatingMethod), originatingStack);
126
+ SC.Logger.log("[%@] originated by target %@, method %@, stack:".fmt(i, originatingTarget, originatingMethod), originatingStack);
127
127
  }
128
128
  }
129
129
  else {
130
130
  var originatingMethodName = originatingMethods.displayName || originatingMethods;
131
131
 
132
- console.log("Invoking runloop-scheduled method %@ on %@. Originated by target %@, method %@, stack: ".fmt(mName, target, originatingTargets, originatingMethodName), originatingStacks);
132
+ SC.Logger.log("Invoking runloop-scheduled method %@ on %@. Originated by target %@, method %@, stack: ".fmt(mName, target, originatingTargets, originatingMethodName), originatingStacks);
133
133
  }
134
134
  }
135
135
  }
@@ -135,7 +135,7 @@ SC.ObjectCoder = SC.Object.extend({
135
135
  @returns {SC.ObjectCoder} receiver
136
136
  */
137
137
  bool: function(key, val) {
138
- return this.js(key, val, function(x) { return x ? "YES" : "NO"; });
138
+ return this.js(key, val, function(x) { return x ? "true" : "false"; });
139
139
  },
140
140
 
141
141
  /**
@@ -316,8 +316,15 @@ SC.ViewDesigner = SC.Object.extend(
316
316
  var view = this.get('view'), proto = this.get('viewClass').prototype ;
317
317
  props.forEach(function(prop) {
318
318
  var val = view[prop] ; // avoid get() since we don't want to exec props
319
- if (val !== undefined && (val !== proto[prop])) {
320
- coder.encode(prop, val) ;
319
+
320
+ //handle bindings
321
+ if (prop.length > 7 && prop.slice(-7) === "Binding" && val !== undefined){
322
+ coder.js(prop,val.encodeDesign());
323
+ }
324
+ else{
325
+ if (val !== undefined && (val !== proto[prop])) {
326
+ coder.encode(prop, val) ;
327
+ }
321
328
  }
322
329
  }, this);
323
330
  },
@@ -377,7 +384,8 @@ SC.ViewDesigner = SC.Object.extend(
377
384
  */
378
385
  encodeDesign: function(coder) {
379
386
  coder.set('className', SC._object_className(this.get('viewClass')));
380
- this.encodeDesignProperties(coder);
387
+ this.encodeDesignProperties(coder);
388
+ this.encodeDesignAttributeProperties(coder);
381
389
  this.encodeChildViewsDesign(coder);
382
390
  return YES ;
383
391
  },