From 37bc5ef4d87f19da47d3ab454c43d1e532c4f924 Mon Sep 17 00:00:00 2001
From: Caitlin Potter
Date: Wed, 5 Feb 2014 23:50:58 -0500
Subject: fix(orderBy): support string predicates containing non-ident
 characters
The orderBy filter now allows string predicates passed to the orderBy filter to make use property
name predicates containing non-ident strings, such as spaces or percent signs, or non-latin
characters.
This behaviour requires the predicate string to be double-quoted.
In markup, this might look like so:
```html
...
```
Or in JS:
```js
var sorted = $filter('orderBy')(array, ['"Tip %"', '-"Subtotal $"'], false);
```
Closes #6143
Closes #6144
---
 test/ng/filter/orderBySpec.js | 12 ++++++++++++
 1 file changed, 12 insertions(+)
(limited to 'test')
diff --git a/test/ng/filter/orderBySpec.js b/test/ng/filter/orderBySpec.js
index 5c117891..5dc96677 100644
--- a/test/ng/filter/orderBySpec.js
+++ b/test/ng/filter/orderBySpec.js
@@ -31,4 +31,16 @@ describe('Filter: orderBy', function() {
     toEqual([{a:2, b:1},{a:15, b:1}]);
   });
 
+  it('should support string predicates with names containing non-identifier characters', function() {
+    expect(orderBy([{"Tip %": .25}, {"Tip %": .15}, {"Tip %": .40}], '"Tip %"'))
+      .toEqualData([{"Tip %": .15}, {"Tip %": .25}, {"Tip %": .40}]);
+    expect(orderBy([{"원": 76000}, {"원": 31000}, {"원": 156000}], '"원"'))
+      .toEqualData([{"원": 31000}, {"원": 76000}, {"원": 156000}])
+  });
+
+  it('should throw if quoted string predicate is quoted incorrectly', function() {
+    expect(function() {
+      return orderBy([{"Tip %": .15}, {"Tip %": .25}, {"Tip %": .40}], '"Tip %\'');
+    }).toThrow();
+  });
 });
-- 
cgit v1.2.3