-
-
Notifications
You must be signed in to change notification settings - Fork 4.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #20018 from NullVoxPopuli/remove-flags-for-shipped…
…-features
- Loading branch information
Showing
5 changed files
with
184 additions
and
208 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
145 changes: 71 additions & 74 deletions
145
packages/@ember/-internals/metal/tests/cached/get_test.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,102 +1,99 @@ | ||
import { AbstractTestCase, moduleFor } from 'internal-test-helpers'; | ||
import { cached, tracked } from '../..'; | ||
import { EMBER_CACHED } from '@ember/canary-features'; | ||
|
||
if (EMBER_CACHED) { | ||
moduleFor( | ||
'@cached decorator: get', | ||
class extends AbstractTestCase { | ||
'@test it works'() { | ||
let assert = this.assert; | ||
|
||
class Person { | ||
@tracked firstName = 'Jen'; | ||
@tracked lastName = 'Weber'; | ||
|
||
@cached | ||
get fullName() { | ||
let fullName = `${this.firstName} ${this.lastName}`; | ||
|
||
assert.step(fullName); | ||
return fullName; | ||
} | ||
|
||
moduleFor( | ||
'@cached decorator: get', | ||
class extends AbstractTestCase { | ||
'@test it works'() { | ||
let assert = this.assert; | ||
|
||
class Person { | ||
@tracked firstName = 'Jen'; | ||
@tracked lastName = 'Weber'; | ||
|
||
@cached | ||
get fullName() { | ||
let fullName = `${this.firstName} ${this.lastName}`; | ||
|
||
assert.step(fullName); | ||
return fullName; | ||
} | ||
} | ||
|
||
let person = new Person(); | ||
let person = new Person(); | ||
|
||
assert.verifySteps([], 'getter is not called after class initialization'); | ||
assert.verifySteps([], 'getter is not called after class initialization'); | ||
|
||
assert.strictEqual(person.fullName, 'Jen Weber'); | ||
assert.verifySteps(['Jen Weber'], 'getter was called after property access'); | ||
assert.strictEqual(person.fullName, 'Jen Weber'); | ||
assert.verifySteps(['Jen Weber'], 'getter was called after property access'); | ||
|
||
assert.strictEqual(person.fullName, 'Jen Weber'); | ||
assert.verifySteps([], 'getter was not called again after repeated property access'); | ||
assert.strictEqual(person.fullName, 'Jen Weber'); | ||
assert.verifySteps([], 'getter was not called again after repeated property access'); | ||
|
||
person.firstName = 'Kenneth'; | ||
assert.verifySteps([], 'changing a property does not trigger an eager re-computation'); | ||
person.firstName = 'Kenneth'; | ||
assert.verifySteps([], 'changing a property does not trigger an eager re-computation'); | ||
|
||
assert.strictEqual(person.fullName, 'Kenneth Weber'); | ||
assert.verifySteps(['Kenneth Weber'], 'accessing the property triggers a re-computation'); | ||
assert.strictEqual(person.fullName, 'Kenneth Weber'); | ||
assert.verifySteps(['Kenneth Weber'], 'accessing the property triggers a re-computation'); | ||
|
||
assert.strictEqual(person.fullName, 'Kenneth Weber'); | ||
assert.verifySteps([], 'getter was not called again after repeated property access'); | ||
assert.strictEqual(person.fullName, 'Kenneth Weber'); | ||
assert.verifySteps([], 'getter was not called again after repeated property access'); | ||
|
||
person.lastName = 'Larsen'; | ||
assert.verifySteps([], 'changing a property does not trigger an eager re-computation'); | ||
person.lastName = 'Larsen'; | ||
assert.verifySteps([], 'changing a property does not trigger an eager re-computation'); | ||
|
||
assert.strictEqual(person.fullName, 'Kenneth Larsen'); | ||
assert.verifySteps(['Kenneth Larsen'], 'accessing the property triggers a re-computation'); | ||
} | ||
assert.strictEqual(person.fullName, 'Kenneth Larsen'); | ||
assert.verifySteps(['Kenneth Larsen'], 'accessing the property triggers a re-computation'); | ||
} | ||
|
||
'@test it has a separate cache per class instance'() { | ||
let assert = this.assert; | ||
'@test it has a separate cache per class instance'() { | ||
let assert = this.assert; | ||
|
||
class Person { | ||
@tracked firstName; | ||
@tracked lastName; | ||
class Person { | ||
@tracked firstName; | ||
@tracked lastName; | ||
|
||
constructor(firstName, lastName) { | ||
this.firstName = firstName; | ||
this.lastName = lastName; | ||
} | ||
constructor(firstName, lastName) { | ||
this.firstName = firstName; | ||
this.lastName = lastName; | ||
} | ||
|
||
@cached | ||
get fullName() { | ||
let fullName = `${this.firstName} ${this.lastName}`; | ||
assert.step(fullName); | ||
return fullName; | ||
} | ||
@cached | ||
get fullName() { | ||
let fullName = `${this.firstName} ${this.lastName}`; | ||
assert.step(fullName); | ||
return fullName; | ||
} | ||
} | ||
|
||
let jen = new Person('Jen', 'Weber'); | ||
let chris = new Person('Chris', 'Garrett'); | ||
let jen = new Person('Jen', 'Weber'); | ||
let chris = new Person('Chris', 'Garrett'); | ||
|
||
assert.verifySteps([], 'getter is not called after class initialization'); | ||
assert.verifySteps([], 'getter is not called after class initialization'); | ||
|
||
assert.strictEqual(jen.fullName, 'Jen Weber'); | ||
assert.verifySteps(['Jen Weber'], 'getter was called after property access'); | ||
assert.strictEqual(jen.fullName, 'Jen Weber'); | ||
assert.verifySteps(['Jen Weber'], 'getter was called after property access'); | ||
|
||
assert.strictEqual(jen.fullName, 'Jen Weber'); | ||
assert.verifySteps([], 'getter was not called again after repeated property access'); | ||
assert.strictEqual(jen.fullName, 'Jen Weber'); | ||
assert.verifySteps([], 'getter was not called again after repeated property access'); | ||
|
||
assert.strictEqual(chris.fullName, 'Chris Garrett', 'other instance has a different value'); | ||
assert.verifySteps(['Chris Garrett'], 'getter was called after property access'); | ||
assert.strictEqual(chris.fullName, 'Chris Garrett', 'other instance has a different value'); | ||
assert.verifySteps(['Chris Garrett'], 'getter was called after property access'); | ||
|
||
assert.strictEqual(chris.fullName, 'Chris Garrett'); | ||
assert.verifySteps([], 'getter was not called again after repeated property access'); | ||
assert.strictEqual(chris.fullName, 'Chris Garrett'); | ||
assert.verifySteps([], 'getter was not called again after repeated property access'); | ||
|
||
chris.lastName = 'Manson'; | ||
assert.verifySteps([], 'changing a property does not trigger an eager re-computation'); | ||
chris.lastName = 'Manson'; | ||
assert.verifySteps([], 'changing a property does not trigger an eager re-computation'); | ||
|
||
assert.strictEqual(jen.fullName, 'Jen Weber', 'other instance is unaffected'); | ||
assert.verifySteps([], 'getter was not called again after repeated property access'); | ||
assert.strictEqual(jen.fullName, 'Jen Weber', 'other instance is unaffected'); | ||
assert.verifySteps([], 'getter was not called again after repeated property access'); | ||
|
||
assert.strictEqual(chris.fullName, 'Chris Manson'); | ||
assert.verifySteps(['Chris Manson'], 'getter was called after property access'); | ||
assert.strictEqual(chris.fullName, 'Chris Manson'); | ||
assert.verifySteps(['Chris Manson'], 'getter was called after property access'); | ||
|
||
assert.strictEqual(jen.fullName, 'Jen Weber', 'other instance is unaffected'); | ||
assert.verifySteps([], 'getter was not called again after repeated property access'); | ||
} | ||
assert.strictEqual(jen.fullName, 'Jen Weber', 'other instance is unaffected'); | ||
assert.verifySteps([], 'getter was not called again after repeated property access'); | ||
} | ||
); | ||
} | ||
} | ||
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.