Browse Source

Test Observable.skipUntil;

bjorn 10 years ago
parent
commit
685ee50ecc
2 changed files with 49 additions and 0 deletions
  1. 1 0
      tests/observable.lua
  2. 48 0
      tests/skipUntil.lua

+ 1 - 0
tests/observable.lua

@@ -169,5 +169,6 @@ describe('Observable', function()
   dofile('tests/reduce.lua')
   dofile('tests/reduce.lua')
   dofile('tests/reject.lua')
   dofile('tests/reject.lua')
   dofile('tests/skip.lua')
   dofile('tests/skip.lua')
+  dofile('tests/skipUntil.lua')
   dofile('tests/take.lua')
   dofile('tests/take.lua')
 end)
 end)

+ 48 - 0
tests/skipUntil.lua

@@ -0,0 +1,48 @@
+describe('skipUntil', function()
+  it('produces an error if its parent errors', function()
+    local observable = Rx.Observable.fromValue(''):map(function(x) return x() end)
+    expect(observable.subscribe).to.fail()
+    expect(observable:skipUntil(1).subscribe).to.fail()
+  end)
+
+  it('fails if the first argument is not an Observable', function()
+    local observable = Rx.Observable.fromValue(3)
+    expect(observable:skipUntil(nil)).to.fail()
+    expect(observable:skipUntil(0)).to.fail()
+    expect(observable:skipUntil({})).to.fail()
+  end)
+
+  it('produces no values if the specified observable does not produce any values', function()
+    local trigger = Rx.Observable.create(function() end)
+    local observable = Rx.Observable.fromTable({2, 3, 4}):skipUntil(trigger)
+    local onNext, onError, onComplete = observableSpy(observable)
+    expect(#onNext).to.equal(0)
+    expect(#onError).to.equal(0)
+    expect(#onComplete).to.equal(0)
+  end)
+
+  it('produces values after the specified observable produces a value', function()
+    local onNext = spy()
+    local trigger = Rx.Subject.create()
+    local subject = Rx.Subject.create()
+    subject:skipUntil(trigger):subscribe(Rx.Observer.create(onNext))
+    subject:onNext('a')
+    subject:onNext('b')
+    trigger:onNext('a')
+    subject:onNext('c')
+    subject:onNext('d')
+    subject:onComplete()
+    expect(onNext).to.equal({{'c'}, {'d'}})
+  end)
+
+  it('produces all values if the specified observable fires immediately', function()
+    local onNext = spy()
+    local subject = Rx.Subject.create()
+    subject:skipUntil(Rx.Observable.fromValue(1)):subscribe(Rx.Observer.create(onNext))
+    subject:onNext(1)
+    subject:onNext(2)
+    subject:onNext(3)
+    subject:onComplete()
+    expect(onNext).to.equal({{1}, {2}, {3}})
+  end)
+end)