<feed xmlns='http://www.w3.org/2005/Atom'>
<title>angular.js/test/ngMock, branch v1.2.4</title>
<subtitle></subtitle>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/angular.js/'/>
<entry>
<title>fix(ngMock): fixes httpBackend expectation with body object</title>
<updated>2013-11-22T06:57:15+00:00</updated>
<author>
<name>Corey Burrows</name>
</author>
<published>2013-11-14T14:42:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/angular.js/commit/?id=4d16472b918a3482942d76f1e273a5aa01f65e83'/>
<id>4d16472b918a3482942d76f1e273a5aa01f65e83</id>
<content type='text'>
Fixes an issue with httpBackend expectations where a given body object
may not match the actual request body if its keys are serialized in a
different order.

Closes #4956
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes an issue with httpBackend expectations where a given body object
may not match the actual request body if its keys are serialized in a
different order.

Closes #4956
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(tests): Correct tests for IE11</title>
<updated>2013-11-22T05:53:09+00:00</updated>
<author>
<name>Tobias Bosch</name>
</author>
<published>2013-11-21T22:30:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/angular.js/commit/?id=579242346c4202ea58fc2cae6df232289cbea0bb'/>
<id>579242346c4202ea58fc2cae6df232289cbea0bb</id>
<content type='text'>
Some tests were wrong. However, src/* did not contain problems.

Fixes #5046
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Some tests were wrong. However, src/* did not contain problems.

Fixes #5046
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(modules): stop leaking global variables in tests</title>
<updated>2013-10-10T18:58:15+00:00</updated>
<author>
<name>Pete Bacon Darwin</name>
</author>
<published>2013-10-10T08:11:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/angular.js/commit/?id=07272608d8ae39a5dd220cdb5637b1439342d5c3'/>
<id>07272608d8ae39a5dd220cdb5637b1439342d5c3</id>
<content type='text'>
The routeUtils.js file was declaring a number of functions that were
leaking into other modules such as ngMocks causing tests to pass
incorrectly.

Closes #4360
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The routeUtils.js file was declaring a number of functions that were
leaking into other modules such as ngMocks causing tests to pass
incorrectly.

Closes #4360
</pre>
</div>
</content>
</entry>
<entry>
<title>feat($interval): add a service wrapping setInterval</title>
<updated>2013-10-07T20:45:40+00:00</updated>
<author>
<name>Julie</name>
</author>
<published>2013-09-13T19:47:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/angular.js/commit/?id=2b5ce84fca7b41fca24707e163ec6af84bc12e83'/>
<id>2b5ce84fca7b41fca24707e163ec6af84bc12e83</id>
<content type='text'>
The $interval service simplifies creating and testing recurring tasks.
This service does not increment $browser's outstanding request count,
which means that scenario tests and Protractor tests will not timeout
when a site uses a polling function registered by $interval. Provides
a workaround for #2402.

For unit tests, repeated tasks can be controlled using ngMock$interval's
tick(), tickNext(), and tickAll() functions.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The $interval service simplifies creating and testing recurring tasks.
This service does not increment $browser's outstanding request count,
which means that scenario tests and Protractor tests will not timeout
when a site uses a polling function registered by $interval. Provides
a workaround for #2402.

For unit tests, repeated tasks can be controlled using ngMock$interval's
tick(), tickNext(), and tickAll() functions.
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(*): protect calls to hasOwnProperty in public API</title>
<updated>2013-10-07T16:01:13+00:00</updated>
<author>
<name>Peter Bacon Darwin</name>
</author>
<published>2013-10-05T09:49:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/angular.js/commit/?id=7a586e5c19f3d1ecc3fefef084ce992072ee7f60'/>
<id>7a586e5c19f3d1ecc3fefef084ce992072ee7f60</id>
<content type='text'>
Objects received from outside AngularJS may have had their `hasOwnProperty`
method overridden with something else. In cases where we can do this without
incurring a performance penalty we call directly on Object.prototype.hasOwnProperty
to ensure that we use the correct method.

Also, we have some internal hash objects, where the keys for the map are provided
from outside AngularJS. In such cases we either prevent `hasOwnProperty` from
being used as a key or provide some other way of preventing our objects from
having their `hasOwnProperty` overridden.

BREAKING CHANGE: Inputs with name equal to "hasOwnProperty" are not allowed inside
form or ngForm directives.

Before, inputs whose name was "hasOwnProperty" were quietly ignored and not added
to the scope.  Now a badname exception is thrown.

Using "hasOwnProperty" for an input name would be very unusual and bad practice.
Either do not include such an input in a `form` or `ngForm` directive or change
the name of the input.

Closes #3331</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Objects received from outside AngularJS may have had their `hasOwnProperty`
method overridden with something else. In cases where we can do this without
incurring a performance penalty we call directly on Object.prototype.hasOwnProperty
to ensure that we use the correct method.

Also, we have some internal hash objects, where the keys for the map are provided
from outside AngularJS. In such cases we either prevent `hasOwnProperty` from
being used as a key or provide some other way of preventing our objects from
having their `hasOwnProperty` overridden.

BREAKING CHANGE: Inputs with name equal to "hasOwnProperty" are not allowed inside
form or ngForm directives.

Before, inputs whose name was "hasOwnProperty" were quietly ignored and not added
to the scope.  Now a badname exception is thrown.

Using "hasOwnProperty" for an input name would be very unusual and bad practice.
Either do not include such an input in a `form` or `ngForm` directive or change
the name of the input.

Closes #3331</pre>
</div>
</content>
</entry>
<entry>
<title>feat(ngMock.$timeout): remove flushNext method</title>
<updated>2013-10-02T22:59:49+00:00</updated>
<author>
<name>Vojta Jina</name>
</author>
<published>2013-09-05T19:01:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/angular.js/commit/?id=fc8034b352121f8f057dbd5e3837eeb17e1df580'/>
<id>fc8034b352121f8f057dbd5e3837eeb17e1df580</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>feat(ngMock): allow passing an object literal as shorthand to module</title>
<updated>2013-09-03T21:22:12+00:00</updated>
<author>
<name>Merrick Christensen</name>
</author>
<published>2013-08-26T05:45:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/angular.js/commit/?id=f737c97df02918eb5b19bf5c8248fa3e20f9b361'/>
<id>f737c97df02918eb5b19bf5c8248fa3e20f9b361</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>revert: feat(mocks): make $timeout#flush throw an exception when empty</title>
<updated>2013-08-28T00:23:36+00:00</updated>
<author>
<name>Igor Minar</name>
</author>
<published>2013-08-28T00:20:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/angular.js/commit/?id=4114f9c21bec5a396e59954dfc42d2c96527ac3d'/>
<id>4114f9c21bec5a396e59954dfc42d2c96527ac3d</id>
<content type='text'>
This reverts commit cbf06a5d64aba537f0e2679a194d3998d8365493.

This turned out to be a bad idea because it allow us to fast-forward
the wall clock time (see previous commit).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit cbf06a5d64aba537f0e2679a194d3998d8365493.

This turned out to be a bad idea because it allow us to fast-forward
the wall clock time (see previous commit).
</pre>
</div>
</content>
</entry>
<entry>
<title>revert: fix(mocks): $timeout#flush should not update time when empty</title>
<updated>2013-08-28T00:21:11+00:00</updated>
<author>
<name>Igor Minar</name>
</author>
<published>2013-08-28T00:20:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/angular.js/commit/?id=70b44ad32a79e0746e19a74bde35f49c79f89942'/>
<id>70b44ad32a79e0746e19a74bde35f49c79f89942</id>
<content type='text'>
This reverts commit 42af8eada2803a54a98b4f792e60feb480d68a0c.

This turned out to be a bad idea as it prevents us from moving the
time forward and asserting that the component state didn't change
due to the scheduled task executing too early.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit 42af8eada2803a54a98b4f792e60feb480d68a0c.

This turned out to be a bad idea as it prevents us from moving the
time forward and asserting that the component state didn't change
due to the scheduled task executing too early.
</pre>
</div>
</content>
</entry>
<entry>
<title>fix(mocks): $timeout#flush should not update time when empty</title>
<updated>2013-08-25T21:46:55+00:00</updated>
<author>
<name>Igor Minar</name>
</author>
<published>2013-08-25T21:36:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.teddywing.com/fork/angular.js/commit/?id=42af8eada2803a54a98b4f792e60feb480d68a0c'/>
<id>42af8eada2803a54a98b4f792e60feb480d68a0c</id>
<content type='text'>
When $timeout#flush is called with a delay and no task can be flushed within that
delay, the current time should not be updated as that gets the mock into an inconsistent
state.

BREAKING CHANGE: if a tests was written around the buggy behavior the delays might be off now

This would typically not be a problem, but because of the previous breaking change in
$timeout.flush, the combination of two might be confusing and that's why we are documenting
it.

Old behavior:

```
doSomething(); //schedules task to execute in 500ms from now
doOtherStuff(); //schedules task to execute in 600ms from now

try {
  $timeout.flush(300); // throws "no task to be flushed" exception
} catch(e) {};
$time.flush(200); //flushes only doSomething() task
```

New behavior:

```
doSomething(); //schedules task to execute in 500ms from now
doOtherStuff(); //schedules task to execute in 600ms from now

try {
  $timeout.flush(300); // throws "no task to be flushed" exception
} catch(e) {};
$time.flush(200); // throws "no task to be flushed" exception again
                  // because previous exception didn't move the time forward
```

Fixed test:

```
doSomething(); //schedules task to execute in 500ms from now
doOtherStuff(); //schedules task to execute in 600ms from now

try {
  $timeout.flush(300); // throws "no task to be flushed" exception
} catch(e) {};
$time.flush(500); // flushes only doSomething() task
```
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When $timeout#flush is called with a delay and no task can be flushed within that
delay, the current time should not be updated as that gets the mock into an inconsistent
state.

BREAKING CHANGE: if a tests was written around the buggy behavior the delays might be off now

This would typically not be a problem, but because of the previous breaking change in
$timeout.flush, the combination of two might be confusing and that's why we are documenting
it.

Old behavior:

```
doSomething(); //schedules task to execute in 500ms from now
doOtherStuff(); //schedules task to execute in 600ms from now

try {
  $timeout.flush(300); // throws "no task to be flushed" exception
} catch(e) {};
$time.flush(200); //flushes only doSomething() task
```

New behavior:

```
doSomething(); //schedules task to execute in 500ms from now
doOtherStuff(); //schedules task to execute in 600ms from now

try {
  $timeout.flush(300); // throws "no task to be flushed" exception
} catch(e) {};
$time.flush(200); // throws "no task to be flushed" exception again
                  // because previous exception didn't move the time forward
```

Fixed test:

```
doSomething(); //schedules task to execute in 500ms from now
doOtherStuff(); //schedules task to execute in 600ms from now

try {
  $timeout.flush(300); // throws "no task to be flushed" exception
} catch(e) {};
$time.flush(500); // flushes only doSomething() task
```
</pre>
</div>
</content>
</entry>
</feed>
