File tree Expand file tree Collapse file tree 3 files changed +42
-13
lines changed Expand file tree Collapse file tree 3 files changed +42
-13
lines changed Original file line number Diff line number Diff line change 6
6
" transform-runtime"
7
7
],
8
8
"presets" : [" react" , [" env" , {}]],
9
+ "ignore" : [
10
+ " lib/Disposables.js"
11
+ ],
9
12
"sourceMaps" : " inline"
10
13
}
Original file line number Diff line number Diff line change 1
- /* @flow */
1
+ // NOTE Using standard ES6 code without flow/ES modules here
2
+ // to make the extension of the parent class to work.
3
+ // If applying babel the transpiled code is incompatible and would throw:
4
+ // "Class constructor CompositeDisposable cannot be invoked without 'new'"
5
+ const { Disposable, CompositeDisposable } = require ( "atom" ) ;
2
6
3
- import { Disposable , CompositeDisposable } from "atom" ;
4
-
5
- // Make it easier to define side-effects for BaconJS streams
6
- //
7
- // Example:
8
- // var disposable = new Disposables()
9
- // disposable.add(
10
- // someStream.onValue(val => {
11
- // console.log('will be removed on disposable.dispose()')
12
- // }))
13
- export default class Disposables extends CompositeDisposable {
14
- add ( ...values : Array < atom$IDisposable | Disposables | Function > ) {
7
+ class Disposables extends CompositeDisposable {
8
+ add ( ...values ) {
15
9
for ( let val of values ) {
16
10
if ( ! Disposable . isDisposable ( val ) ) {
17
11
if ( typeof val === "function" ) {
@@ -26,3 +20,5 @@ export default class Disposables extends CompositeDisposable {
26
20
}
27
21
}
28
22
}
23
+
24
+ module . exports = Disposables ;
Original file line number Diff line number Diff line change
1
+ /* @flow */
2
+
3
+ import Disposables from "../lib/Disposables" ;
4
+
5
+ const newFakeDisposable = ( ) => {
6
+ const spy = jasmine . createSpy ( "dispose" ) ;
7
+ return {
8
+ dispose : spy ,
9
+ disposed : ( ) => true
10
+ } ;
11
+ } ;
12
+
13
+ describe ( "Disposables" , ( ) => {
14
+ let disposables ;
15
+
16
+ beforeEach ( ( ) => {
17
+ disposables = new Disposables ( ) ;
18
+ } ) ;
19
+
20
+ describe ( ".add" , ( ) => {
21
+ it ( "accepts multiple values" , ( ) => {
22
+ const fake1 = newFakeDisposable ( ) ;
23
+ const fake2 = newFakeDisposable ( ) ;
24
+ disposables . add ( fake1 , fake2 ) ;
25
+ disposables . dispose ( ) ;
26
+ expect ( fake1 . dispose ) . toHaveBeenCalled ( ) ;
27
+ expect ( fake2 . dispose ) . toHaveBeenCalled ( ) ;
28
+ } ) ;
29
+ } ) ;
30
+ } ) ;
You can’t perform that action at this time.
0 commit comments