| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| require('utils/ember_computed'); |
| |
| describe('Ember.computed macros', function () { |
| |
| beforeEach(function () { |
| App.reopen({ |
| someRandomTestingKey: function () { |
| return this.get('someAnotherKey'); |
| }.property('someAnotherKey'), |
| someAnotherKey: '', |
| appProp1: 1, |
| appProp2: 2 |
| }); |
| }); |
| |
| afterEach(function () { |
| delete App.someAnotherKey; |
| delete App.someRandomTestingKey; |
| }); |
| |
| describe('#equal', function () { |
| |
| beforeEach(function () { |
| App.setProperties({ |
| someAnotherKey: '123' |
| }); |
| this.obj = Em.Object.create({ |
| prop1: '123', |
| prop2: Em.computed.equal('prop1', '123'), |
| prop3: Em.computed.equal('App.someRandomTestingKey', '123') |
| }); |
| }); |
| |
| it('`true` if values are equal', function () { |
| expect(this.obj.get('prop2')).to.be.true; |
| }); |
| |
| it('`false` if values are not equal', function () { |
| this.obj.set('prop1', '321'); |
| expect(this.obj.get('prop2')).to.be.false; |
| }); |
| |
| it('`prop3` depends on App.* key', function () { |
| expect(this.obj.get('prop3')).to.be.true; |
| App.set('someAnotherKey', ''); |
| expect(this.obj.get('prop3')).to.be.false; |
| }); |
| |
| it('prop3 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop3._dependentKeys).to.eql(['App.someRandomTestingKey']); |
| }); |
| |
| }); |
| |
| describe('#notEqual', function () { |
| |
| beforeEach(function () { |
| App.setProperties({ |
| someAnotherKey: '123' |
| }); |
| this.obj = Em.Object.create({ |
| prop1: '123', |
| prop2: Em.computed.notEqual('prop1', '123'), |
| prop3: Em.computed.notEqual('App.someRandomTestingKey', '123') |
| }); |
| }); |
| |
| it('`false` if values are equal', function () { |
| expect(this.obj.get('prop2')).to.be.false; |
| }); |
| |
| it('`true` if values are not equal', function () { |
| this.obj.set('prop1', '321'); |
| expect(this.obj.get('prop2')).to.be.true; |
| }); |
| |
| it('`prop3` depends on App.* key', function () { |
| expect(this.obj.get('prop3')).to.be.false; |
| App.set('someAnotherKey', ''); |
| expect(this.obj.get('prop3')).to.be.true; |
| }); |
| |
| it('prop3 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop3._dependentKeys).to.eql(['App.someRandomTestingKey']); |
| }); |
| |
| }); |
| |
| describe('#equalProperties', function () { |
| |
| beforeEach(function () { |
| App.set('someAnotherKey', '123'); |
| this.obj = Em.Object.create({ |
| prop1: '123', |
| prop2: '123', |
| prop3: Em.computed.equalProperties('prop1', 'prop2'), |
| prop4: Em.computed.equalProperties('App.someRandomTestingKey', 'prop2'), |
| prop5: Em.computed.equalProperties('prop1', 'App.someRandomTestingKey') |
| }); |
| }); |
| |
| it('`true` if values are equal', function () { |
| expect(this.obj.get('prop3')).to.be.true; |
| }); |
| |
| it('`false` if values are not equal', function () { |
| this.obj.set('prop1', '321'); |
| expect(this.obj.get('prop3')).to.be.false; |
| }); |
| |
| it('prop4 depends on App.* key', function () { |
| expect(this.obj.get('prop4')).to.be.true; |
| App.set('someAnotherKey', ''); |
| expect(this.obj.get('prop4')).to.be.false; |
| }); |
| |
| it('prop5 depends on App.* key', function () { |
| expect(this.obj.get('prop5')).to.be.true; |
| App.set('someAnotherKey', ''); |
| expect(this.obj.get('prop5')).to.be.false; |
| }); |
| |
| it('prop4 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop4._dependentKeys).to.eql(['App.someRandomTestingKey', 'prop2']); |
| }); |
| |
| it('prop5 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop5._dependentKeys).to.eql(['prop1', 'App.someRandomTestingKey']); |
| }); |
| |
| }); |
| |
| describe('#notEqualProperties', function () { |
| |
| beforeEach(function () { |
| App.set('someAnotherKey', '123'); |
| this.obj = Em.Object.create({ |
| prop1: '123', |
| prop2: '123', |
| prop3: Em.computed.notEqualProperties('prop1', 'prop2'), |
| prop4: Em.computed.notEqualProperties('App.someRandomTestingKey', 'prop2'), |
| prop5: Em.computed.notEqualProperties('prop1', 'App.someRandomTestingKey') |
| }); |
| }); |
| |
| it('`false` if values are equal', function () { |
| expect(this.obj.get('prop3')).to.be.false; |
| }); |
| |
| it('`true` if values are not equal', function () { |
| this.obj.set('prop1', '321'); |
| expect(this.obj.get('prop3')).to.be.true; |
| }); |
| |
| it('prop4 depends on App.* key', function () { |
| expect(this.obj.get('prop4')).to.be.false; |
| App.set('someAnotherKey', ''); |
| expect(this.obj.get('prop4')).to.be.true; |
| }); |
| |
| it('prop5 depends on App.* key', function () { |
| expect(this.obj.get('prop5')).to.be.false; |
| App.set('someAnotherKey', ''); |
| expect(this.obj.get('prop5')).to.be.true; |
| }); |
| |
| it('prop4 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop4._dependentKeys).to.eql(['App.someRandomTestingKey', 'prop2']); |
| }); |
| |
| it('prop5 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop5._dependentKeys).to.eql(['prop1', 'App.someRandomTestingKey']); |
| }); |
| |
| }); |
| |
| describe('#ifThenElse', function () { |
| |
| beforeEach(function () { |
| App.set('someAnotherKey', true); |
| this.obj = Em.Object.create({ |
| prop1: true, |
| prop2: Em.computed.ifThenElse('prop1', '1', '0'), |
| prop3: Em.computed.ifThenElse('App.someRandomTestingKey', '1', '0') |
| }); |
| }); |
| |
| it('`1` if `prop1` is true', function () { |
| expect(this.obj.get('prop2')).to.equal('1'); |
| }); |
| |
| it('`0` if `prop1` is false', function () { |
| this.obj.set('prop1', false); |
| expect(this.obj.get('prop2')).to.equal('0'); |
| }); |
| |
| it('prop3 depends on App.* key', function () { |
| expect(this.obj.get('prop3')).to.equal('1'); |
| App.set('someAnotherKey', false); |
| expect(this.obj.get('prop3')).to.equal('0'); |
| }); |
| |
| it('prop3 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop3._dependentKeys).to.eql(['App.someRandomTestingKey']); |
| }); |
| |
| }); |
| |
| describe('#ifThenElseByKeys', function () { |
| |
| beforeEach(function () { |
| App.set('someAnotherKey', true); |
| this.obj = Em.Object.create({ |
| prop1: true, |
| prop2: Em.computed.ifThenElseByKeys('prop1', 'prop4', 'prop5'), |
| prop3: Em.computed.ifThenElseByKeys('App.someRandomTestingKey', 'App.appProp1', 'App.appProp2'), |
| prop4: 1, |
| prop5: 2 |
| }); |
| }); |
| |
| it('`1` if `prop1` is true', function () { |
| expect(this.obj.get('prop2')).to.equal(1); |
| }); |
| |
| it('`0` if `prop1` is false', function () { |
| this.obj.set('prop1', false); |
| expect(this.obj.get('prop2')).to.equal(2); |
| }); |
| |
| it('prop2 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop2._dependentKeys).to.eql(['prop1', 'prop4', 'prop5']); |
| }); |
| |
| it('prop3 depends on App.* key', function () { |
| expect(this.obj.get('prop3')).to.equal(1); |
| App.set('someAnotherKey', false); |
| expect(this.obj.get('prop3')).to.equal(2); |
| }); |
| |
| it('prop3 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop3._dependentKeys).to.eql(['App.someRandomTestingKey', 'App.appProp1', 'App.appProp2']); |
| }); |
| |
| }); |
| |
| describe('#and', function () { |
| |
| beforeEach(function () { |
| App.setProperties({ |
| someAnotherKey: true |
| }); |
| this.obj = Em.Object.create({ |
| prop1: true, |
| prop2: true, |
| prop3: true, |
| prop4: Em.computed.and('prop1', 'prop2', 'prop3'), |
| prop5: Em.computed.and('prop1', '!prop2', '!prop3'), |
| prop6: Em.computed.and('App.someRandomTestingKey', 'prop1'), |
| prop7: Em.computed.and('!App.someRandomTestingKey', 'prop1') |
| }); |
| }); |
| |
| it('prop4 `true` if all dependent properties are true', function () { |
| expect(this.obj.get('prop4')).to.be.true; |
| }); |
| |
| it('prop4 `false` if at elast one dependent property is false', function () { |
| this.obj.set('prop2', false); |
| expect(this.obj.get('prop4')).to.be.false; |
| }); |
| |
| it('prop5 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop5._dependentKeys).to.eql(['prop1', 'prop2', 'prop3']); |
| }); |
| |
| it('prop5 `false` if some inverted dependent properties is true', function () { |
| expect(this.obj.get('prop5')).to.be.false; |
| }); |
| |
| it('prop5 `false` if some inverted dependent properties is true (2)', function () { |
| this.obj.set('prop1', true); |
| expect(this.obj.get('prop5')).to.be.false; |
| }); |
| |
| it('prop5 `true` ', function () { |
| this.obj.set('prop2', false); |
| this.obj.set('prop3', false); |
| expect(this.obj.get('prop5')).to.be.true; |
| }); |
| |
| it('`prop6` depends on App.* key', function () { |
| expect(this.obj.get('prop6')).to.be.true; |
| App.set('someAnotherKey', false); |
| expect(this.obj.get('prop6')).to.be.false; |
| App.set('someAnotherKey', true); |
| expect(this.obj.get('prop6')).to.be.true; |
| }); |
| |
| it('prop6 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop6._dependentKeys).to.eql(['App.someRandomTestingKey', 'prop1']); |
| }); |
| |
| it('`prop7` depends on inverted App.* key', function () { |
| expect(this.obj.get('prop7')).to.be.false; |
| App.set('someAnotherKey', false); |
| expect(this.obj.get('prop7')).to.be.true; |
| App.set('someAnotherKey', true); |
| expect(this.obj.get('prop7')).to.be.false; |
| }); |
| |
| it('prop7 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop7._dependentKeys).to.eql(['App.someRandomTestingKey', 'prop1']); |
| }); |
| |
| }); |
| |
| describe('#or', function () { |
| beforeEach(function () { |
| App.setProperties({ |
| someAnotherKey: true |
| }); |
| this.obj = Em.Object.create({ |
| prop1: false, |
| prop2: false, |
| prop3: false, |
| prop4: Em.computed.or('prop1', 'prop2', 'prop3'), |
| prop5: Em.computed.or('!prop1', '!prop2', '!prop3'), |
| prop6: Em.computed.or('App.someRandomTestingKey', 'prop1'), |
| prop7: Em.computed.or('!App.someRandomTestingKey', 'prop1') |
| }); |
| }); |
| |
| it('`false` if all dependent properties are false', function () { |
| expect(this.obj.get('prop4')).to.be.false; |
| }); |
| |
| it('`true` if at elast one dependent property is true', function () { |
| this.obj.set('prop2', true); |
| expect(this.obj.get('prop4')).to.be.true; |
| }); |
| |
| it('prop5 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop5._dependentKeys).to.eql(['prop1', 'prop2', 'prop3']); |
| }); |
| |
| it('prop5 `true` if some inverted dependent properties is true', function () { |
| expect(this.obj.get('prop5')).to.be.true; |
| }); |
| |
| it('prop5 `true` if some inverted dependent properties is true (2)', function () { |
| this.obj.set('prop1', true); |
| expect(this.obj.get('prop5')).to.be.true; |
| }); |
| |
| it('prop5 `false` ', function () { |
| this.obj.set('prop1', true); |
| this.obj.set('prop2', true); |
| this.obj.set('prop3', true); |
| expect(this.obj.get('prop5')).to.be.false; |
| }); |
| |
| it('`prop6` depends on App.* key', function () { |
| expect(this.obj.get('prop6')).to.be.true; |
| App.set('someAnotherKey', false); |
| expect(this.obj.get('prop6')).to.be.false; |
| App.set('someAnotherKey', true); |
| expect(this.obj.get('prop6')).to.be.true; |
| }); |
| |
| it('prop6 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop6._dependentKeys).to.eql(['App.someRandomTestingKey', 'prop1']); |
| }); |
| |
| it('`prop7` depends on inverted App.* key', function () { |
| expect(this.obj.get('prop7')).to.be.false; |
| App.set('someAnotherKey', false); |
| expect(this.obj.get('prop7')).to.be.true; |
| App.set('someAnotherKey', true); |
| expect(this.obj.get('prop7')).to.be.false; |
| }); |
| |
| it('prop7 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop7._dependentKeys).to.eql(['App.someRandomTestingKey', 'prop1']); |
| }); |
| |
| }); |
| |
| describe('#sumProperties', function () { |
| |
| beforeEach(function () { |
| App.setProperties({ |
| someAnotherKey: 5 |
| }); |
| this.obj = Em.Object.create({ |
| prop1: 1, |
| prop2: 2, |
| prop3: 3, |
| prop4: Em.computed.sumProperties('prop1', 'prop2', 'prop3'), |
| prop5: Em.computed.sumProperties('prop1', 'prop2', 'App.someRandomTestingKey') |
| }); |
| }); |
| |
| it('should be sum of dependent values', function () { |
| expect(this.obj.get('prop4')).to.equal(6); |
| }); |
| |
| it('should be updated if some dependent value is changed', function () { |
| this.obj.set('prop1', 4); |
| expect(this.obj.get('prop4')).to.equal(9); |
| }); |
| |
| it('should be updated if some dependent value is string', function () { |
| this.obj.set('prop1', '4'); |
| expect(this.obj.get('prop4')).to.equal(9); |
| }); |
| |
| it('should be updated if some dependent value is string (2)', function () { |
| this.obj.set('prop1', '4.5'); |
| expect(this.obj.get('prop4')).to.equal(9.5); |
| }); |
| |
| it('should be updated if some dependent value is null', function () { |
| this.obj.set('prop1', null); |
| expect(this.obj.get('prop4')).to.equal(5); |
| }); |
| |
| it('`prop5` depends on App.* key', function () { |
| expect(this.obj.get('prop5')).to.equal(8); |
| App.set('someAnotherKey', 6); |
| expect(this.obj.get('prop5')).to.equal(9); |
| }); |
| |
| it('prop5 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop5._dependentKeys).to.eql(['prop1', 'prop2', 'App.someRandomTestingKey']); |
| }); |
| |
| }); |
| |
| describe('#gte', function () { |
| |
| beforeEach(function () { |
| App.set('someAnotherKey', 4); |
| this.obj = Em.Object.create({ |
| prop1: 2, |
| prop2: Em.computed.gte('prop1', 3), |
| prop3: Em.computed.gte('App.someRandomTestingKey', 3) |
| }); |
| }); |
| |
| it('`false` if value is less than needed', function () { |
| expect(this.obj.get('prop2')).to.be.false; |
| }); |
| |
| it('`true` if value is equal to the needed', function () { |
| this.obj.set('prop1', 3); |
| expect(this.obj.get('prop2')).to.be.true; |
| }); |
| |
| it('`true` if value is greater than needed', function () { |
| this.obj.set('prop1', 4); |
| expect(this.obj.get('prop2')).to.be.true; |
| }); |
| |
| it('prop3 depends on App.* key', function () { |
| expect(this.obj.get('prop3')).to.be.true; |
| App.set('someAnotherKey', 3); |
| expect(this.obj.get('prop3')).to.be.true; |
| App.set('someAnotherKey', 2); |
| expect(this.obj.get('prop3')).to.be.false; |
| }); |
| |
| it('prop3 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop3._dependentKeys).to.eql(['App.someRandomTestingKey']); |
| }); |
| |
| }); |
| |
| describe('#gteProperties', function () { |
| |
| beforeEach(function () { |
| App.set('someAnotherKey', 4); |
| this.obj = Em.Object.create({ |
| prop1: 2, |
| prop2: 3, |
| prop3: Em.computed.gteProperties('prop1', 'prop2'), |
| prop4: Em.computed.gteProperties('App.someRandomTestingKey', 'prop2'), |
| prop5: Em.computed.gteProperties('prop1', 'App.someRandomTestingKey') |
| }); |
| }); |
| |
| it('`false` if value is less than needed', function () { |
| expect(this.obj.get('prop3')).to.be.false; |
| }); |
| |
| it('`true` if value is equal to the needed', function () { |
| this.obj.set('prop1', 3); |
| expect(this.obj.get('prop3')).to.be.true; |
| }); |
| |
| it('`true` if value is greater than needed', function () { |
| this.obj.set('prop1', 4); |
| expect(this.obj.get('prop3')).to.be.true; |
| }); |
| |
| it('prop4 depends on App.* key', function () { |
| expect(this.obj.get('prop4')).to.be.true; |
| App.set('someAnotherKey', 3); |
| expect(this.obj.get('prop4')).to.be.true; |
| App.set('someAnotherKey', 2); |
| expect(this.obj.get('prop4')).to.be.false; |
| }); |
| |
| it('prop5 depends on App.* key', function () { |
| expect(this.obj.get('prop5')).to.be.false; |
| App.set('someAnotherKey', 2); |
| expect(this.obj.get('prop5')).to.be.true; |
| App.set('someAnotherKey', 1); |
| expect(this.obj.get('prop5')).to.be.true; |
| }); |
| |
| it('prop4 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop4._dependentKeys).to.eql(['App.someRandomTestingKey', 'prop2']); |
| }); |
| |
| it('prop5 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop5._dependentKeys).to.eql(['prop1', 'App.someRandomTestingKey']); |
| }); |
| |
| }); |
| |
| describe('#lte', function () { |
| |
| beforeEach(function () { |
| App.set('someAnotherKey', 0); |
| this.obj = Em.Object.create({ |
| prop1: 2, |
| prop2: Em.computed.lte('prop1', 1), |
| prop3: Em.computed.lte('App.someRandomTestingKey', 1) |
| }); |
| }); |
| |
| it('`false` if value is greater than needed', function () { |
| expect(this.obj.get('prop2')).to.be.false; |
| }); |
| |
| it('`true` if value is equal to the needed', function () { |
| this.obj.set('prop1', 1); |
| expect(this.obj.get('prop2')).to.be.true; |
| }); |
| |
| it('`true` if value is less than needed', function () { |
| this.obj.set('prop1', 0); |
| expect(this.obj.get('prop2')).to.be.true; |
| }); |
| |
| it('prop3 depends on App.* key', function () { |
| expect(this.obj.get('prop3')).to.be.true; |
| App.set('someAnotherKey', 1); |
| expect(this.obj.get('prop3')).to.be.true; |
| App.set('someAnotherKey', 2); |
| expect(this.obj.get('prop3')).to.be.false; |
| }); |
| |
| it('prop3 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop3._dependentKeys).to.eql(['App.someRandomTestingKey']); |
| }); |
| |
| }); |
| |
| describe('#lteProperties', function () { |
| |
| beforeEach(function () { |
| App.set('someAnotherKey', 1); |
| this.obj = Em.Object.create({ |
| prop1: 2, |
| prop2: 1, |
| prop3: Em.computed.lteProperties('prop1', 'prop2'), |
| prop4: Em.computed.lteProperties('App.someRandomTestingKey', 'prop2'), |
| prop5: Em.computed.lteProperties('prop1', 'App.someRandomTestingKey') |
| }); |
| }); |
| |
| it('`false` if d1 is greater than d2', function () { |
| expect(this.obj.get('prop3')).to.be.false; |
| }); |
| |
| it('`true` if d1 is equal to the d2', function () { |
| this.obj.set('prop1', 1); |
| expect(this.obj.get('prop3')).to.be.true; |
| }); |
| |
| it('`true` if d1 is less than d2', function () { |
| this.obj.set('prop1', 0); |
| expect(this.obj.get('prop3')).to.be.true; |
| }); |
| |
| it('prop4 depends on App.* key', function () { |
| expect(this.obj.get('prop4')).to.be.true; |
| App.set('someAnotherKey', 0); |
| expect(this.obj.get('prop4')).to.be.true; |
| App.set('someAnotherKey', 2); |
| expect(this.obj.get('prop4')).to.be.false; |
| }); |
| |
| it('prop5 depends on App.* key', function () { |
| expect(this.obj.get('prop5')).to.be.false; |
| App.set('someAnotherKey', 2); |
| expect(this.obj.get('prop5')).to.be.true; |
| App.set('someAnotherKey', 3); |
| expect(this.obj.get('prop5')).to.be.true; |
| }); |
| |
| it('prop4 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop4._dependentKeys).to.eql(['App.someRandomTestingKey', 'prop2']); |
| }); |
| |
| it('prop5 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop5._dependentKeys).to.eql(['prop1', 'App.someRandomTestingKey']); |
| }); |
| |
| }); |
| |
| describe('#gt', function () { |
| |
| beforeEach(function () { |
| App.set('someAnotherKey', 4); |
| this.obj = Em.Object.create({ |
| prop1: 2, |
| prop2: Em.computed.gt('prop1', 3), |
| prop3: Em.computed.gt('App.someRandomTestingKey', 3) |
| }); |
| }); |
| |
| it('`false` if value is less than needed', function () { |
| expect(this.obj.get('prop2')).to.be.false; |
| }); |
| |
| it('`false` if value is equal to the needed', function () { |
| this.obj.set('prop1', 3); |
| expect(this.obj.get('prop2')).to.be.false; |
| }); |
| |
| it('`true` if value is greater than needed', function () { |
| this.obj.set('prop1', 4); |
| expect(this.obj.get('prop2')).to.be.true; |
| }); |
| |
| it('prop3 depends on App.* key', function () { |
| expect(this.obj.get('prop3')).to.be.true; |
| App.set('someAnotherKey', 3); |
| expect(this.obj.get('prop3')).to.be.false; |
| App.set('someAnotherKey', 2); |
| expect(this.obj.get('prop3')).to.be.false; |
| }); |
| |
| it('prop3 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop3._dependentKeys).to.eql(['App.someRandomTestingKey']); |
| }); |
| |
| }); |
| |
| describe('#gtProperties', function () { |
| |
| beforeEach(function () { |
| App.set('someAnotherKey', 4); |
| this.obj = Em.Object.create({ |
| prop1: 2, |
| prop2: 3, |
| prop3: Em.computed.gtProperties('prop1', 'prop2'), |
| prop4: Em.computed.gtProperties('App.someRandomTestingKey', 'prop2'), |
| prop5: Em.computed.gtProperties('prop1', 'App.someRandomTestingKey') |
| }); |
| }); |
| |
| it('`false` if value is less than needed', function () { |
| expect(this.obj.get('prop3')).to.be.false; |
| }); |
| |
| it('`false` if value is equal to the needed', function () { |
| this.obj.set('prop1', 3); |
| expect(this.obj.get('prop3')).to.be.false; |
| }); |
| |
| it('`true` if value is greater than needed', function () { |
| this.obj.set('prop1', 4); |
| expect(this.obj.get('prop3')).to.be.true; |
| }); |
| |
| it('prop4 depends on App.* key', function () { |
| expect(this.obj.get('prop4')).to.be.true; |
| App.set('someAnotherKey', 3); |
| expect(this.obj.get('prop4')).to.be.false; |
| App.set('someAnotherKey', 2); |
| expect(this.obj.get('prop4')).to.be.false; |
| }); |
| |
| it('prop5 depends on App.* key', function () { |
| expect(this.obj.get('prop5')).to.be.false; |
| App.set('someAnotherKey', 2); |
| expect(this.obj.get('prop5')).to.be.false; |
| App.set('someAnotherKey', 1); |
| expect(this.obj.get('prop5')).to.be.true; |
| }); |
| |
| it('prop4 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop4._dependentKeys).to.eql(['App.someRandomTestingKey', 'prop2']); |
| }); |
| |
| it('prop5 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop5._dependentKeys).to.eql(['prop1', 'App.someRandomTestingKey']); |
| }); |
| |
| }); |
| |
| describe('#lt', function () { |
| |
| beforeEach(function () { |
| App.set('someAnotherKey', 0); |
| this.obj = Em.Object.create({ |
| prop1: 2, |
| prop2: Em.computed.lt('prop1', 1), |
| prop3: Em.computed.lt('App.someRandomTestingKey', 1) |
| }); |
| }); |
| |
| it('`false` if value is greater than needed', function () { |
| expect(this.obj.get('prop2')).to.be.false; |
| }); |
| |
| it('`false` if value is equal to the needed', function () { |
| this.obj.set('prop1', 1); |
| expect(this.obj.get('prop2')).to.be.false; |
| }); |
| |
| it('`true` if value is less than needed', function () { |
| this.obj.set('prop1', 0); |
| expect(this.obj.get('prop2')).to.be.true; |
| }); |
| |
| it('prop3 depends on App.* key', function () { |
| expect(this.obj.get('prop3')).to.be.true; |
| App.set('someAnotherKey', 1); |
| expect(this.obj.get('prop3')).to.be.false; |
| App.set('someAnotherKey', 2); |
| expect(this.obj.get('prop3')).to.be.false; |
| }); |
| |
| it('prop3 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop3._dependentKeys).to.eql(['App.someRandomTestingKey']); |
| }); |
| |
| }); |
| |
| describe('#ltProperties', function () { |
| |
| beforeEach(function () { |
| App.set('someAnotherKey', 1); |
| this.obj = Em.Object.create({ |
| prop1: 2, |
| prop2: 1, |
| prop3: Em.computed.ltProperties('prop1', 'prop2'), |
| prop4: Em.computed.ltProperties('App.someRandomTestingKey', 'prop2'), |
| prop5: Em.computed.ltProperties('prop1', 'App.someRandomTestingKey') |
| }); |
| }); |
| |
| it('`false` if d1 is greater than d2', function () { |
| expect(this.obj.get('prop3')).to.be.false; |
| }); |
| |
| it('`false` if d1 is equal to the d2', function () { |
| this.obj.set('prop1', 1); |
| expect(this.obj.get('prop3')).to.be.false; |
| }); |
| |
| it('`true` if d1 is less than d2', function () { |
| this.obj.set('prop1', 0); |
| expect(this.obj.get('prop3')).to.be.true; |
| }); |
| |
| it('prop4 depends on App.* key', function () { |
| expect(this.obj.get('prop4')).to.be.false; |
| App.set('someAnotherKey', 0); |
| expect(this.obj.get('prop4')).to.be.true; |
| App.set('someAnotherKey', 2); |
| expect(this.obj.get('prop4')).to.be.false; |
| }); |
| |
| it('prop5 depends on App.* key', function () { |
| expect(this.obj.get('prop5')).to.be.false; |
| App.set('someAnotherKey', 2); |
| expect(this.obj.get('prop5')).to.be.false; |
| App.set('someAnotherKey', 3); |
| expect(this.obj.get('prop5')).to.be.true; |
| }); |
| |
| it('prop4 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop4._dependentKeys).to.eql(['App.someRandomTestingKey', 'prop2']); |
| }); |
| |
| it('prop5 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop5._dependentKeys).to.eql(['prop1', 'App.someRandomTestingKey']); |
| }); |
| |
| }); |
| |
| describe('#match', function () { |
| |
| beforeEach(function () { |
| this.obj = Em.Object.create({ |
| prop1: 'abc', |
| prop2: Em.computed.match('prop1', /^ab/) |
| }) |
| }); |
| |
| it('`true` if value match regexp', function () { |
| expect(this.obj.get('prop2')).to.be.true; |
| }); |
| |
| it('`true` if value match regexp (2)', function () { |
| this.obj.set('prop1', 'abaaa'); |
| expect(this.obj.get('prop2')).to.be.true; |
| }); |
| |
| it('`false` if value doesn\'t match regexp', function () { |
| this.obj.set('prop1', '!!!!'); |
| expect(this.obj.get('prop2')).to.be.false; |
| }); |
| |
| it('`prop2` has valid dependent keys', function () { |
| expect(Em.meta(this.obj).descs.prop2._dependentKeys).to.eql(['prop1']); |
| }); |
| |
| }); |
| |
| describe('#someBy', function () { |
| |
| beforeEach(function () { |
| this.obj = Em.Object.create({ |
| prop1: [{a: 1}, {a: 2}, {a: 3}], |
| prop2: Em.computed.someBy('prop1', 'a', 2) |
| }); |
| }); |
| |
| it('`true` if some collection item has needed property value', function () { |
| expect(this.obj.get('prop2')).to.be.true; |
| }); |
| |
| it('`false` if on one collection item doesn\'t have needed property value', function () { |
| this.obj.set('prop1.1.a', 3); |
| expect(this.obj.get('prop2')).to.be.false; |
| }); |
| |
| it('`false` for null/undefined collection', function () { |
| this.obj.set('prop1', null); |
| expect(this.obj.get('prop2')).to.be.false; |
| }); |
| |
| it('`prop2` has valid dependent keys', function () { |
| expect(Em.meta(this.obj).descs.prop2._dependentKeys).to.eql(['prop1.@each.a']); |
| }); |
| |
| }); |
| |
| describe('#someByKey', function () { |
| |
| beforeEach(function () { |
| App.setProperties({ |
| someAnotherKey: 2 |
| }); |
| this.obj = Em.Object.create({ |
| prop1: [{a: 1}, {a: 2}, {a: 3}], |
| prop2: Em.computed.someByKey('prop1', 'a', 'value1'), |
| prop3: Em.computed.someByKey('prop1', 'a', 'App.someRandomTestingKey'), |
| value1: 2 |
| }); |
| }); |
| |
| it('`true` if some collection item has needed property value', function () { |
| expect(this.obj.get('prop2')).to.be.true; |
| }); |
| |
| it('`false` if on one collection item doesn\'t have needed property value', function () { |
| this.obj.set('prop1.1.a', 3); |
| expect(this.obj.get('prop2')).to.be.false; |
| }); |
| |
| it('`false` for null/undefined collection', function () { |
| this.obj.set('prop1', null); |
| expect(this.obj.get('prop2')).to.be.false; |
| }); |
| |
| it('`prop2` has valid dependent keys', function () { |
| expect(Em.meta(this.obj).descs.prop2._dependentKeys).to.eql(['prop1.@each.a', 'value1']); |
| }); |
| |
| it('`prop3` has valid dependent keys', function () { |
| expect(Em.meta(this.obj).descs.prop3._dependentKeys).to.eql(['prop1.@each.a', 'App.someRandomTestingKey']); |
| }); |
| |
| it('`prop3` depends on App.* key', function () { |
| expect(this.obj.get('prop3')).to.be.true; |
| this.obj.set('prop1.1.a', 3); |
| expect(this.obj.get('prop3')).to.be.false; |
| }); |
| |
| }); |
| |
| describe('#everyBy', function () { |
| |
| beforeEach(function () { |
| this.obj = Em.Object.create({ |
| prop1: [{a: 2}, {a: 2}, {a: 2}], |
| prop2: Em.computed.everyBy('prop1', 'a', 2) |
| }); |
| }); |
| |
| it('`true` if all collection items have needed property value', function () { |
| expect(this.obj.get('prop2')).to.be.true; |
| }); |
| |
| it('`false` if at least one collection item doesn\'t have needed property value', function () { |
| this.obj.set('prop1.1.a', 3); |
| expect(this.obj.get('prop2')).to.be.false; |
| }); |
| |
| it('`false` for null/undefined collection', function () { |
| this.obj.set('prop1', null); |
| expect(this.obj.get('prop2')).to.be.false; |
| }); |
| |
| it('`prop2` has valid dependent keys', function () { |
| expect(Em.meta(this.obj).descs.prop2._dependentKeys).to.eql(['prop1.@each.a']); |
| }); |
| |
| }); |
| |
| describe('#everyByKey', function () { |
| beforeEach(function () { |
| App.setProperties({ |
| someAnotherKey: 2 |
| }); |
| this.obj = Em.Object.create({ |
| prop1: [{a: 2}, {a: 2}, {a: 2}], |
| prop2: Em.computed.everyByKey('prop1', 'a', 'value1'), |
| prop3: Em.computed.everyByKey('prop1', 'a', 'App.someRandomTestingKey'), |
| value1: 2 |
| }); |
| }); |
| |
| it('`true` if all collection items have needed property value', function () { |
| expect(this.obj.get('prop2')).to.be.true; |
| }); |
| |
| it('`false` if at least one collection item doesn\'t have needed property value', function () { |
| this.obj.set('prop1.1.a', 3); |
| expect(this.obj.get('prop2')).to.be.false; |
| }); |
| |
| it('`false` for null/undefined collection', function () { |
| this.obj.set('prop1', null); |
| expect(this.obj.get('prop2')).to.be.false; |
| }); |
| |
| it('`prop2` has valid dependent keys', function () { |
| expect(Em.meta(this.obj).descs.prop2._dependentKeys).to.eql(['prop1.@each.a', 'value1']); |
| }); |
| |
| it('`prop3` has valid dependent keys', function () { |
| expect(Em.meta(this.obj).descs.prop3._dependentKeys).to.eql(['prop1.@each.a', 'App.someRandomTestingKey']); |
| }); |
| |
| it('`prop3` depends on App.* key', function () { |
| expect(this.obj.get('prop3')).to.be.true; |
| this.obj.set('prop1.1.a', 3); |
| expect(this.obj.get('prop3')).to.be.false; |
| }); |
| |
| }); |
| |
| describe('#mapBy', function () { |
| |
| beforeEach(function () { |
| this.obj = Em.Object.create({ |
| prop1: [{a: 1}, {a: 2}, {a: 3}], |
| prop2: Em.computed.mapBy('prop1', 'a') |
| }); |
| }); |
| |
| it('should map dependent property', function () { |
| expect(this.obj.get('prop2')).to.eql([1, 2, 3]); |
| }); |
| |
| it('should map dependent property (2)', function () { |
| this.obj.get('prop1').push({a: 4}); |
| expect(this.obj.get('prop2')).to.eql([1, 2, 3, 4]); |
| }); |
| |
| it('`[]` for null/undefined collection', function () { |
| this.obj.set('prop1', null); |
| expect(this.obj.get('prop2')).to.eql([]); |
| }); |
| |
| it('`prop2` has valid dependent keys', function () { |
| expect(Em.meta(this.obj).descs.prop2._dependentKeys).to.eql(['prop1.@each.a']); |
| }); |
| |
| }); |
| |
| describe('#filterBy', function () { |
| |
| beforeEach(function () { |
| this.obj = Em.Object.create({ |
| prop1: [{a: 2}, {a: 2}, {a: 3}], |
| prop2: Em.computed.filterBy('prop1', 'a', 2) |
| }); |
| }); |
| |
| it('should filter dependent property', function () { |
| expect(this.obj.get('prop2')).to.eql([{a: 2}, {a: 2}]); |
| }); |
| |
| it('should filter dependent property (2)', function () { |
| this.obj.get('prop1').pushObject({a: 2}); |
| expect(this.obj.get('prop2')).to.eql([{a: 2}, {a: 2}, {a: 2}]); |
| }); |
| |
| it('`[]` for null/undefined collection', function () { |
| this.obj.set('prop1', null); |
| expect(this.obj.get('prop2')).to.eql([]); |
| }); |
| |
| it('`prop2` has valid dependent keys', function () { |
| expect(Em.meta(this.obj).descs.prop2._dependentKeys).to.eql(['prop1.@each.a']); |
| }); |
| |
| }); |
| |
| describe('#filterByKey', function () { |
| |
| beforeEach(function () { |
| App.setProperties({ |
| someAnotherKey: 2 |
| }); |
| this.obj = Em.Object.create({ |
| prop1: [{a: 2}, {a: 2}, {a: 3}], |
| prop2: Em.computed.filterByKey('prop1', 'a', 'value1'), |
| prop3: Em.computed.filterByKey('prop1', 'a', 'App.someRandomTestingKey'), |
| value1: 2 |
| }); |
| }); |
| |
| it('should filter dependent property', function () { |
| expect(this.obj.get('prop2')).to.eql([{a: 2}, {a: 2}]); |
| }); |
| |
| it('should filter dependent property (2)', function () { |
| this.obj.get('prop1').pushObject({a: 2}); |
| expect(this.obj.get('prop2')).to.eql([{a: 2}, {a: 2}, {a: 2}]); |
| }); |
| |
| it('`[]` for null/undefined collection', function () { |
| this.obj.set('prop1', null); |
| expect(this.obj.get('prop2')).to.eql([]); |
| }); |
| |
| it('`prop2` has valid dependent keys', function () { |
| expect(Em.meta(this.obj).descs.prop2._dependentKeys).to.eql(['prop1.@each.a', 'value1']); |
| }); |
| |
| it('`prop3` has valid dependent keys', function () { |
| expect(Em.meta(this.obj).descs.prop3._dependentKeys).to.eql(['prop1.@each.a', 'App.someRandomTestingKey']); |
| }); |
| |
| it('`prop3` depends on App.* key', function () { |
| expect(this.obj.get('prop3')).to.eql([{a: 2}, {a: 2}]); |
| this.obj.set('prop1.1.a', 3); |
| expect(this.obj.get('prop3')).to.eql([{a: 2}]); |
| }); |
| |
| }); |
| |
| describe('#findBy', function () { |
| |
| beforeEach(function () { |
| this.obj = Em.Object.create({ |
| prop1: [{b: 1, a: 2}, {b: 2, a: 2}, {a: 3}], |
| prop2: Em.computed.findBy('prop1', 'a', 2) |
| }); |
| }); |
| |
| it('should filter dependent property', function () { |
| expect(this.obj.get('prop2')).to.eql({b:1, a: 2}); |
| }); |
| |
| it('should filter dependent property (2)', function () { |
| this.obj.get('prop1').pushObject({b: 3, a: 2}); |
| expect(this.obj.get('prop2')).to.eql({b: 1, a: 2}); |
| }); |
| |
| it('`null` for null/undefined collection', function () { |
| this.obj.set('prop1', null); |
| expect(this.obj.get('prop2')).to.be.null; |
| }); |
| |
| it('`prop2` has valid dependent keys', function () { |
| expect(Em.meta(this.obj).descs.prop2._dependentKeys).to.eql(['prop1.@each.a']); |
| }); |
| |
| }); |
| |
| describe('#findByKey', function () { |
| |
| beforeEach(function () { |
| App.setProperties({ |
| someAnotherKey: 2 |
| }); |
| this.obj = Em.Object.create({ |
| prop1: [{b: 1, a: 2}, {b: 2, a: 2}, {a: 3}], |
| prop2: Em.computed.findByKey('prop1', 'a', 'value1'), |
| prop3: Em.computed.findByKey('prop1', 'a', 'App.someRandomTestingKey'), |
| value1: 2 |
| }); |
| }); |
| |
| it('should filter dependent property', function () { |
| expect(this.obj.get('prop2')).to.eql({b:1, a: 2}); |
| }); |
| |
| it('should filter dependent property (2)', function () { |
| this.obj.get('prop1').pushObject({b: 3, a: 2}); |
| expect(this.obj.get('prop2')).to.eql({b: 1, a: 2}); |
| }); |
| |
| it('`null` for null/undefined collection', function () { |
| this.obj.set('prop1', null); |
| expect(this.obj.get('prop2')).to.be.null; |
| }); |
| |
| it('`prop2` has valid dependent keys', function () { |
| expect(Em.meta(this.obj).descs.prop2._dependentKeys).to.eql(['prop1.@each.a', 'value1']); |
| }); |
| |
| it('`prop3` has valid dependent keys', function () { |
| expect(Em.meta(this.obj).descs.prop3._dependentKeys).to.eql(['prop1.@each.a', 'App.someRandomTestingKey']); |
| }); |
| |
| it('`prop3` depends on App.* key', function () { |
| expect(this.obj.get('prop3')).to.eql({b: 1, a: 2}); |
| this.obj.get('prop1').pushObject({b: 3, a: 2}); |
| expect(this.obj.get('prop3')).to.eql({b: 1, a: 2}); |
| }); |
| |
| }); |
| |
| describe('#alias', function() { |
| |
| beforeEach(function () { |
| App.set('someAnotherKey', {a: {b: 1}}); |
| this.obj = Em.Object.create({ |
| prop1: { |
| a: { |
| b: { |
| c: 1 |
| } |
| } |
| }, |
| prop2: Em.computed.alias('prop1.a.b.c'), |
| prop3: Em.computed.alias('App.someAnotherKey.a.b') |
| }) |
| }); |
| |
| it('should be equal to dependent property', function () { |
| expect(this.obj.get('prop2')).to.equal(1); |
| }); |
| |
| it('should be equal to dependent property (2)', function () { |
| this.obj.set('prop1.a.b.c', 2); |
| expect(this.obj.get('prop2')).to.equal(2); |
| }); |
| |
| it('prop3 depends on App.* key', function () { |
| expect(this.obj.get('prop3')).to.equal(1); |
| App.set('someAnotherKey.a.b', 4); |
| expect(this.obj.get('prop3')).to.equal(4); |
| }); |
| |
| it('prop3 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop3._dependentKeys).to.eql(['App.someAnotherKey.a.b']); |
| }); |
| |
| }); |
| |
| describe('#existsIn', function () { |
| |
| beforeEach(function () { |
| this.obj = Em.Object.create({ |
| prop1: 'v1', |
| prop2: Em.computed.existsIn('prop1', ['v1', 'v2']) |
| }); |
| }); |
| |
| it('`true` if dependent value is in the array', function () { |
| expect(this.obj.get('prop2')).to.be.true; |
| }); |
| |
| it('`true` if dependent value is in the array (2)', function () { |
| this.obj.set('prop1', 'v2'); |
| expect(this.obj.get('prop2')).to.be.true; |
| }); |
| |
| it('`false` if dependent value is not in the array', function () { |
| this.obj.set('prop1', 'v3'); |
| expect(this.obj.get('prop2')).to.be.false; |
| }); |
| |
| }); |
| |
| describe('#existsInByKey', function () { |
| |
| beforeEach(function () { |
| this.obj = Em.Object.create({ |
| prop1: 'v1', |
| prop2: Em.computed.existsInByKey('prop1', 'prop3'), |
| prop3: ['v1', 'v2'] |
| }); |
| }); |
| |
| it('`true` if dependent value is in the array', function () { |
| expect(this.obj.get('prop2')).to.be.true; |
| }); |
| |
| it('`true` if dependent value is in the array (2)', function () { |
| this.obj.set('prop1', 'v2'); |
| expect(this.obj.get('prop2')).to.be.true; |
| }); |
| |
| it('`false` if dependent value is not in the array', function () { |
| this.obj.set('prop1', 'v3'); |
| expect(this.obj.get('prop2')).to.be.false; |
| }); |
| |
| it('`false` if dependent value is not in the array (2)', function () { |
| this.obj.set('prop1', 'v1'); |
| this.obj.set('prop3', ['v2', 'v3']); |
| expect(this.obj.get('prop2')).to.be.false; |
| }); |
| |
| it('prop2 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop2._dependentKeys).to.eql(['prop1', 'prop3.[]']); |
| }); |
| |
| }); |
| |
| describe('#percents', function () { |
| |
| beforeEach(function () { |
| App.setProperties({ |
| p1: 25, |
| p2: 100 |
| }); |
| this.obj = Em.Object.create({ |
| prop1: 10, |
| prop2: 25, |
| prop3: Em.computed.percents('prop1', 'prop2'), |
| prop4: Em.computed.percents('prop1', 'prop2', 2), |
| prop5: Em.computed.percents('App.p1', 'App.p2', 1) |
| }); |
| }); |
| |
| afterEach(function () { |
| delete App.p1; |
| delete App.p2; |
| }); |
| |
| it('should calculate percents', function () { |
| expect(this.obj.get('prop3')).to.equal(40); |
| expect(this.obj.get('prop4')).to.equal(40.00); |
| }); |
| |
| it('should calculate percents (2)', function () { |
| this.obj.set('prop2', 35); |
| expect(this.obj.get('prop3')).to.equal(29); |
| expect(this.obj.get('prop4')).to.equal(28.57); |
| }); |
| |
| it('should calculate percents (3)', function () { |
| this.obj.set('prop2', '35'); |
| expect(this.obj.get('prop3')).to.equal(29); |
| expect(this.obj.get('prop4')).to.equal(28.57); |
| }); |
| |
| it('should calculate percents (4)', function () { |
| this.obj.set('prop1', 10.6); |
| this.obj.set('prop2', 100); |
| expect(this.obj.get('prop3')).to.equal(11); |
| expect(this.obj.get('prop4')).to.equal(10.60); |
| }); |
| |
| it('should calculate percents (5)', function () { |
| this.obj.set('prop1', '10.6'); |
| this.obj.set('prop2', 100); |
| expect(this.obj.get('prop3')).to.equal(11); |
| expect(this.obj.get('prop4')).to.equal(10.60); |
| }); |
| |
| it('prop5 depends on App.* keys', function () { |
| expect(this.obj.get('prop5')).to.equal(25.0); |
| App.set('p2', 50); |
| expect(this.obj.get('prop5')).to.equal(50.0); |
| App.set('p1', 10); |
| expect(this.obj.get('prop5')).to.equal(20.0); |
| }); |
| |
| it('prop4 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop5._dependentKeys).to.eql(['App.p1', 'App.p2']); |
| }); |
| |
| }); |
| |
| describe('#formatRole', function () { |
| |
| beforeEach(function () { |
| this.obj = Em.Object.create({ |
| prop1: 'NAMENODE', |
| prop2: false, |
| prop3: Em.computed.formatRole('prop1', 'prop2') |
| }); |
| sinon.stub(App.StackServiceComponent, 'find', function () { |
| return [ |
| Em.Object.create({id: 'NAMENODE', displayName: 'NameNode'}), |
| Em.Object.create({id: 'SECONDARY_NAMENODE', displayName: 'Secondary NameNode'}) |
| ]; |
| }); |
| sinon.stub(App.StackService, 'find', function () { |
| return [ |
| Em.Object.create({id: 'MAPREDUCE2', displayName: 'MapReduce2'}), |
| Em.Object.create({id: 'HIVE', displayName: 'Hive'}) |
| ]; |
| }); |
| }); |
| |
| afterEach(function () { |
| App.StackService.find.restore(); |
| App.StackServiceComponent.find.restore(); |
| }); |
| |
| it('should format as role', function () { |
| expect(this.obj.get('prop3')).to.equal('NameNode'); |
| }); |
| |
| it('should format as role (2)', function () { |
| this.obj.set('prop1', 'HIVE'); |
| this.obj.set('prop2', true); |
| expect(this.obj.get('prop3')).to.equal('Hive'); |
| }); |
| |
| }); |
| |
| describe('#sumBy', function () { |
| |
| beforeEach(function () { |
| this.obj = Em.Object.create({ |
| prop1: [ |
| {a: 1}, {a: 2}, {a: 3} |
| ], |
| prop2: Em.computed.sumBy('prop1', 'a') |
| }); |
| }); |
| |
| it('should calculate sum', function () { |
| expect(this.obj.get('prop2')).to.equal(6); |
| }); |
| |
| it('should calculate sum (2)', function () { |
| this.obj.get('prop1').pushObject({a: 4}); |
| expect(this.obj.get('prop2')).to.equal(10); |
| }); |
| |
| it('0 for empty collection', function () { |
| this.obj.set('prop1', []); |
| expect(this.obj.get('prop2')).to.equal(0); |
| }); |
| |
| }); |
| |
| describe('#i18nFormat', function () { |
| |
| beforeEach(function () { |
| |
| App.setProperties({ |
| someAnotherKey: 'some value' |
| }); |
| |
| sinon.stub(Em.I18n, 't', function (key) { |
| var msgs = { |
| key1: '{0} {1} {2}' |
| }; |
| return msgs[key]; |
| }); |
| this.obj = Em.Object.create({ |
| prop1: 'abc', |
| prop2: 'cba', |
| prop3: 'aaa', |
| prop4: Em.computed.i18nFormat('key1', 'prop1', 'prop2', 'prop3'), |
| prop5: Em.computed.i18nFormat('not_existing_key', 'prop1', 'prop2', 'prop3'), |
| prop6: Em.computed.i18nFormat('key1', 'App.someRandomTestingKey', 'prop2', 'prop3') |
| }); |
| }); |
| |
| afterEach(function () { |
| Em.I18n.t.restore(); |
| }); |
| |
| it('`prop4` check dependent keys', function () { |
| expect(Em.meta(this.obj).descs.prop4._dependentKeys).to.eql(['prop1', 'prop2', 'prop3']); |
| }); |
| |
| it('should format message', function () { |
| expect(this.obj.get('prop4')).to.equal('abc cba aaa'); |
| }); |
| |
| it('should format message (2)', function () { |
| this.obj.set('prop1', 'aaa'); |
| expect(this.obj.get('prop4')).to.equal('aaa cba aaa'); |
| }); |
| |
| it('empty string for not existing i18-key', function () { |
| expect(this.obj.get('prop5')).to.equal(''); |
| }); |
| |
| it('`prop6` depends on App.* key', function () { |
| expect(this.obj.get('prop6')).to.equal('some value cba aaa'); |
| App.set('someAnotherKey', ''); |
| expect(this.obj.get('prop6')).to.equal(' cba aaa'); |
| }); |
| |
| it('prop6 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop6._dependentKeys).to.eql(['App.someRandomTestingKey', 'prop2', 'prop3']); |
| }); |
| |
| }); |
| |
| describe('#concat', function () { |
| |
| beforeEach(function () { |
| |
| App.setProperties({ |
| someAnotherKey: 'some value' |
| }); |
| |
| this.obj = Em.Object.create({ |
| prop1: 'abc', |
| prop2: 'cba', |
| prop3: 'aaa', |
| prop4: Em.computed.concat(' ', 'prop1', 'prop2', 'prop3'), |
| prop5: Em.computed.concat(' ', 'App.someRandomTestingKey', 'prop2', 'prop3'), |
| prop6: Em.computed.concat(' ') |
| }); |
| }); |
| |
| it('should concat dependent values', function () { |
| expect(this.obj.get('prop4')).to.equal('abc cba aaa'); |
| }); |
| |
| it('should concat dependent values (2)', function () { |
| this.obj.set('prop1', 'aaa'); |
| expect(this.obj.get('prop4')).to.equal('aaa cba aaa'); |
| }); |
| |
| it('`prop5` depends on App.* key', function () { |
| expect(this.obj.get('prop5')).to.equal('some value cba aaa'); |
| App.set('someAnotherKey', ''); |
| expect(this.obj.get('prop5')).to.equal(' cba aaa'); |
| }); |
| |
| it('prop5 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop5._dependentKeys).to.eql(['App.someRandomTestingKey', 'prop2', 'prop3']); |
| }); |
| |
| it('prop6 without dependent keys', function () { |
| expect(this.obj.get('prop6')).to.equal(''); |
| }); |
| |
| }); |
| |
| describe('#notExistsIn', function () { |
| |
| beforeEach(function () { |
| this.obj = Em.Object.create({ |
| prop1: 'v1', |
| prop2: Em.computed.notExistsIn('prop1', ['v1', 'v2']) |
| }); |
| }); |
| |
| it('`false` if dependent value is in the array', function () { |
| expect(this.obj.get('prop2')).to.be.false; |
| }); |
| |
| it('`false` if dependent value is in the array (2)', function () { |
| this.obj.set('prop1', 'v2'); |
| expect(this.obj.get('prop2')).to.be.false; |
| }); |
| |
| it('`true` if dependent value is not in the array', function () { |
| this.obj.set('prop1', 'v3'); |
| expect(this.obj.get('prop2')).to.be.true; |
| }); |
| |
| }); |
| |
| describe('#notExistsInByKey', function () { |
| |
| beforeEach(function () { |
| this.obj = Em.Object.create({ |
| prop1: 'v1', |
| prop2: Em.computed.notExistsInByKey('prop1', 'prop3'), |
| prop3: ['v1', 'v2'] |
| }); |
| }); |
| |
| it('`false` if dependent value is in the array', function () { |
| expect(this.obj.get('prop2')).to.be.false; |
| }); |
| |
| it('`false` if dependent value is in the array (2)', function () { |
| this.obj.set('prop1', 'v2'); |
| expect(this.obj.get('prop2')).to.be.false; |
| }); |
| |
| it('`true` if dependent value is not in the array', function () { |
| this.obj.set('prop1', 'v3'); |
| expect(this.obj.get('prop2')).to.be.true; |
| }); |
| |
| it('`true` if dependent value is not in the array (2)', function () { |
| this.obj.set('prop1', 'v1'); |
| this.obj.set('prop3', ['v2', 'v3']); |
| expect(this.obj.get('prop2')).to.be.true; |
| }); |
| |
| it('prop2 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop2._dependentKeys).to.eql(['prop1', 'prop3.[]']); |
| }); |
| |
| }); |
| |
| describe('#firstNotBlank', function () { |
| |
| beforeEach(function () { |
| |
| App.setProperties({ |
| someAnotherKey: 'NOT-EMPTY-STRING' |
| }); |
| |
| this.obj = Em.Object.create({ |
| prop1: '', |
| prop2: null, |
| prop3: '1234', |
| prop4: Em.computed.firstNotBlank('prop1', 'prop2', 'prop3'), |
| prop5: Em.computed.firstNotBlank('prop1', 'App.someRandomTestingKey', 'prop3'), |
| prop6: Em.computed.firstNotBlank('prop1', 'prop2') |
| }) |
| }); |
| |
| it('`prop4` check dependent keys', function () { |
| expect(Em.meta(this.obj).descs.prop4._dependentKeys).to.eql(['prop1', 'prop2', 'prop3']); |
| }); |
| |
| it('should returns prop3', function () { |
| expect(this.obj.get('prop4')).to.equal('1234'); |
| }); |
| |
| it('should returns prop2', function () { |
| this.obj.set('prop2', 'not empty string'); |
| expect(this.obj.get('prop4')).to.equal('not empty string'); |
| }); |
| |
| it('should returns prop1', function () { |
| this.obj.set('prop2', 'not empty string'); |
| this.obj.set('prop1', 'prop1 is used'); |
| expect(this.obj.get('prop4')).to.equal('prop1 is used'); |
| }); |
| |
| it('`prop5` depends on App.* key', function () { |
| expect(this.obj.get('prop5')).to.equal('NOT-EMPTY-STRING'); |
| App.set('someAnotherKey', '!!!!!!!'); |
| expect(this.obj.get('prop5')).to.equal('!!!!!!!'); |
| App.set('someAnotherKey', null); |
| expect(this.obj.get('prop5')).to.equal('1234'); |
| }); |
| |
| it('prop5 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop5._dependentKeys).to.eql(['prop1', 'App.someRandomTestingKey', 'prop3']); |
| }); |
| |
| it('prop6 depends on blank values', function () { |
| expect(this.obj.get('prop6')).to.be.null; |
| }); |
| |
| }); |
| |
| describe('#format', function () { |
| |
| beforeEach(function () { |
| |
| App.setProperties({ |
| someAnotherKey: 'some value' |
| }); |
| |
| this.obj = Em.Object.create({ |
| prop1: 'abc', |
| prop2: 'cba', |
| prop3: 'aaa', |
| prop4: Em.computed.format('{0} {1} {2}', 'prop1', 'prop2', 'prop3'), |
| prop5: Em.computed.format(null, 'prop1', 'prop2', 'prop3'), |
| prop6: Em.computed.format('{0} {1} {2}', 'App.someRandomTestingKey', 'prop2', 'prop3') |
| }); |
| }); |
| |
| it('`prop4` check dependent keys', function () { |
| expect(Em.meta(this.obj).descs.prop4._dependentKeys).to.eql(['prop1', 'prop2', 'prop3']); |
| }); |
| |
| it('should format message', function () { |
| expect(this.obj.get('prop4')).to.equal('abc cba aaa'); |
| }); |
| |
| it('should format message (2)', function () { |
| this.obj.set('prop1', 'aaa'); |
| expect(this.obj.get('prop4')).to.equal('aaa cba aaa'); |
| }); |
| |
| it('empty string for not existing i18-key', function () { |
| expect(this.obj.get('prop5')).to.equal(''); |
| }); |
| |
| it('`prop6` depends on App.* key', function () { |
| expect(this.obj.get('prop6')).to.equal('some value cba aaa'); |
| App.set('someAnotherKey', ''); |
| expect(this.obj.get('prop6')).to.equal(' cba aaa'); |
| }); |
| |
| it('prop6 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop6._dependentKeys).to.eql(['App.someRandomTestingKey', 'prop2', 'prop3']); |
| }); |
| |
| }); |
| |
| describe('#formatUnavailable', function () { |
| |
| beforeEach(function () { |
| App.setProperties({ |
| someAnotherKey: 1 |
| }); |
| |
| this.obj = Em.Object.create({ |
| prop1: 1, |
| prop2: Em.computed.formatUnavailable('prop1'), |
| prop3: Em.computed.formatUnavailable('App.someRandomTestingKey') |
| }); |
| }); |
| |
| it('`value` is 1', function () { |
| expect(this.obj.get('prop2')).to.equal(1); |
| expect(this.obj.get('prop3')).to.equal(1); |
| }); |
| |
| it('`value` is 0', function () { |
| App.set('someAnotherKey', 0); |
| this.obj.set('prop1', 0); |
| expect(this.obj.get('prop2')).to.equal(0); |
| expect(this.obj.get('prop3')).to.equal(0); |
| }); |
| |
| it('`value` is `0`', function () { |
| App.set('someAnotherKey', '0'); |
| this.obj.set('prop1', '0'); |
| expect(this.obj.get('prop2')).to.equal('0'); |
| expect(this.obj.get('prop3')).to.equal('0'); |
| }); |
| |
| it('`value` is not numeric', function () { |
| App.set('someAnotherKey', null); |
| this.obj.set('prop1', null); |
| expect(this.obj.get('prop2')).to.equal('n/a'); |
| expect(this.obj.get('prop3')).to.equal('n/a'); |
| }); |
| |
| it('prop3 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop3._dependentKeys).to.eql(['App.someRandomTestingKey']); |
| }); |
| |
| }); |
| |
| describe('#countBasedMessage', function () { |
| |
| var msg0 = 'msg0'; |
| var msg1 = 'msg1'; |
| var msgM = 'msgM'; |
| |
| beforeEach(function () { |
| App.setProperties({ |
| someAnotherKey: 1 |
| }); |
| |
| this.obj = Em.Object.create({ |
| prop1: 1, |
| prop2: Em.computed.countBasedMessage('prop1', msg0, msg1, msgM), |
| prop3: Em.computed.countBasedMessage('App.someRandomTestingKey', msg0, msg1, msgM) |
| }); |
| }); |
| |
| it('`value` is 1', function () { |
| expect(this.obj.get('prop2')).to.equal(msg1); |
| expect(this.obj.get('prop3')).to.equal(msg1); |
| }); |
| |
| it('`value` is 0', function () { |
| App.set('someAnotherKey', 0); |
| this.obj.set('prop1', 0); |
| expect(this.obj.get('prop2')).to.equal(msg0); |
| expect(this.obj.get('prop3')).to.equal(msg0); |
| }); |
| |
| it('`value` is greater than 1', function () { |
| App.set('someAnotherKey', 3); |
| this.obj.set('prop1', 3); |
| expect(this.obj.get('prop2')).to.equal(msgM); |
| expect(this.obj.get('prop3')).to.equal(msgM); |
| }); |
| |
| it('prop3 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop3._dependentKeys).to.eql(['App.someRandomTestingKey']); |
| }); |
| |
| }); |
| |
| describe('#getByKey', function () { |
| |
| beforeEach(function () { |
| this.obj = Em.Object.create({ |
| prop1: {a: 1, b: 2, c: 3}, |
| prop2: 'a', |
| prop3: Em.computed.getByKey('prop1', 'prop2'), |
| prop4: Em.computed.getByKey('prop1', 'App.someRandomTestingKey'), |
| prop5: Em.computed.getByKey('prop1', 'prop2', 100500) // with default value |
| }); |
| App.set('someAnotherKey', 'a'); |
| }); |
| |
| it('prop3 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop3._dependentKeys).to.eql(['prop1', 'prop2']); |
| }); |
| |
| it('prop4 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop4._dependentKeys).to.eql(['prop1', 'App.someRandomTestingKey']); |
| }); |
| |
| it('prop5 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop5._dependentKeys).to.eql(['prop1', 'prop2']); |
| }); |
| |
| it('prop3 value is 1', function () { |
| expect(this.obj.get('prop3')).to.be.equal(1); |
| }); |
| |
| it('prop3 value is 2', function () { |
| this.obj.set('prop2', 'b'); |
| expect(this.obj.get('prop3')).to.be.equal(2); |
| }); |
| |
| it('prop3 value is 3', function () { |
| this.obj.set('prop2', 'c'); |
| expect(this.obj.get('prop3')).to.be.equal(3); |
| }); |
| |
| it('prop3 value is 4', function () { |
| this.obj.set('prop1.c', 4); |
| this.obj.set('prop2', 'c'); |
| expect(this.obj.get('prop3')).to.be.equal(4); |
| }); |
| |
| it('prop4 values is 1', function () { |
| expect(this.obj.get('prop4')).to.be.equal(1); |
| }); |
| |
| it('prop4 values is 2', function () { |
| App.set('someAnotherKey', 'b'); |
| expect(this.obj.get('prop4')).to.be.equal(2); |
| }); |
| |
| it('prop4 values is 3', function () { |
| App.set('someAnotherKey', 'c'); |
| expect(this.obj.get('prop4')).to.be.equal(3); |
| }); |
| |
| it('prop5 value is set to the default value', function () { |
| this.obj.set('prop2', 'd'); |
| expect(this.obj.get('prop5')).to.be.equal(100500); |
| }); |
| |
| }); |
| |
| describe('#truncate', function () { |
| |
| beforeEach(function () { |
| this.obj = Em.Object.create({ |
| prop1: '123456789', |
| prop2: Em.computed.truncate('prop1', 8, 5), |
| prop3: Em.computed.truncate('App.someRandomTestingKey', 8, 5), |
| prop4: Em.computed.truncate('prop1', 8, 5, '###') |
| }); |
| App.set('someAnotherKey', 'abcdefghi'); |
| }); |
| |
| it('prop2 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop2._dependentKeys).to.be.eql(['prop1']); |
| }); |
| |
| it('prop3 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop3._dependentKeys).to.be.eql(['App.someRandomTestingKey']); |
| }); |
| |
| it('prop4 dependent keys are valid', function () { |
| expect(Em.meta(this.obj).descs.prop4._dependentKeys).to.be.eql(['prop1']); |
| }); |
| |
| it('prop2 value is 12345...', function () { |
| expect(this.obj.get('prop2')).to.be.equal('12345...'); |
| }); |
| |
| it('prop2 value is 54321...', function () { |
| this.obj.set('prop1', '543216789'); |
| expect(this.obj.get('prop2')).to.be.equal('54321...'); |
| }); |
| |
| it('prop2 value is 1234', function () { |
| this.obj.set('prop1', '1234'); |
| expect(this.obj.get('prop2')).to.be.equal('1234'); |
| }); |
| |
| it('prop2 value is ""', function () { |
| this.obj.set('prop1', null); |
| expect(this.obj.get('prop2')).to.be.equal(''); |
| }); |
| |
| it('prop3 value is abcde...', function () { |
| expect(this.obj.get('prop3')).to.be.equal('abcde...'); |
| }); |
| |
| it('prop3 value is edcba...', function () { |
| App.set('someAnotherKey', 'edcbafghi'); |
| expect(this.obj.get('prop3')).to.be.equal('edcba...'); |
| }); |
| |
| it('prop3 value is abcd', function () { |
| App.set('someAnotherKey', 'abcd'); |
| expect(this.obj.get('prop3')).to.be.equal('abcd'); |
| }); |
| |
| it('prop4 value is 12345###', function () { |
| expect(this.obj.get('prop4')).to.be.equal('12345###'); |
| }); |
| |
| it('prop4 value is 54321###', function () { |
| this.obj.set('prop1', '543216789'); |
| expect(this.obj.get('prop4')).to.be.equal('54321###'); |
| }); |
| |
| it('prop4 value is 12345', function () { |
| this.obj.set('prop1', '12345'); |
| expect(this.obj.get('prop4')).to.be.equal('12345'); |
| }); |
| |
| }); |
| |
| }); |