test('Sorts by a simple property', (assert) => {
  const subject = Ember.Object.extend({
    orderedFoos: orderBy('foos', 'bar')
  }).create({ foos: [{ bar: 3 }, { bar: 4 }, { bar: 1 }, { bar: 3 }] });

  assert.deepEqual(subject.get('orderedFoos'), [
    { bar: 1 }, { bar: 3 }, { bar: 3 }, { bar: 4 }
  ]);
});
test('Sorts by multiple properties one desc', (assert) => {
  const subject = Ember.Object.extend({
    orderedList: orderBy('list', 'foo:desc', 'bar')
  }).create({ list: [
    { foo: 1, bar: 3 }, { foo: 2, bar: 4 }, {  foo: 1, bar: 1 }, { foo: 2, bar: 3 }
  ] });

  assert.deepEqual(subject.get('orderedList'), [
    { foo: 2, bar: 3 }, { foo: 2, bar: 4 }, { foo: 1, bar: 1 }, { foo: 1, bar: 3 }
  ]);
});
test('Bug: Ember.ArrayProxy does not have the method sort', (assert) => {
  const list = Ember.ArrayProxy.create({
    content: Ember.A([{ bar: 3 }, { bar: 4 }, { bar: 1 }, { bar: 3 }])
  });
  const subject = Ember.Object.extend({
    orderedFoos: orderBy('foos', 'bar')
  }).create({ foos: list });

  assert.deepEqual(subject.get('orderedFoos'), [
    { bar: 1 }, { bar: 3 }, { bar: 3 }, { bar: 4 }
  ]);
});
test('Listens for property changes', (assert) => {
  const first  = { bar: 3 };
  const second = { bar: 4 };

  const subject = Ember.Object.extend({
    orderedFoos: orderBy('foos', 'bar'),
  }).create({ foos: Ember.A([first, second]) });

  assert.deepEqual(subject.get('orderedFoos'), [first, second]);

  run(() => set(first, 'bar', 5));

  assert.deepEqual(subject.get('orderedFoos'), [second, first]);
});