Sha256: 1b32a4acefec07c9fe96926fd9b62542d2bf31b2a81af9940435209d0da49fc1

Contents?: true

Size: 1.15 KB

Versions: 14

Compression:

Stored size: 1.15 KB

Contents

require 'spec_helper'

describe Computation do
  it 'should trigger again when a dependent changes' do
    a = ReactiveHash.new

    values = []

    -> { values << a[0] }.watch!

    expect(values).to eq([nil])

    a[0] = 'one'
    Computation.flush!
    expect(values).to eq([nil, 'one'])

    a[0] = 'two'
    Computation.flush!
    expect(values).to eq([nil, 'one', 'two'])
  end

  it 'should not trigger after the computation is stopped' do
    a = ReactiveHash.new

    values = []
    computation = -> { values << a[0] }.watch!

    expect(values).to eq([nil])

    a[0] = 'one'
    Computation.flush!
    expect(values).to eq([nil, 'one'])

    computation.stop

    a[0] = 'two'
    Computation.flush!
    expect(values).to eq([nil, 'one'])
  end

  it 'should support nested watches' do
    a = ReactiveHash.new

    values = []
    -> do
      values << a[0]

      -> do
        values << a[1]
      end.watch!
    end.watch!

    expect(values).to eq([nil,nil])

    a[1] = 'inner'
    Computation.flush!
    expect(values).to eq([nil,nil,'inner'])

    a[0] = 'outer'
    Computation.flush!
    expect(values).to eq([nil,nil,'inner','outer','inner'])
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
volt-0.8.14 spec/reactive/computation_spec.rb
volt-0.8.13 spec/reactive/computation_spec.rb
volt-0.8.11 spec/reactive/computation_spec.rb
volt-0.8.10 spec/reactive/computation_spec.rb
volt-0.8.9 spec/reactive/computation_spec.rb
volt-0.8.8 spec/reactive/computation_spec.rb
volt-0.8.7 spec/reactive/computation_spec.rb
volt-0.8.6 spec/reactive/computation_spec.rb
volt-0.8.5 spec/reactive/computation_spec.rb
volt-0.8.4 spec/reactive/computation_spec.rb
volt-0.8.3 spec/reactive/computation_spec.rb
volt-0.8.2 spec/reactive/computation_spec.rb
volt-0.8.1 spec/reactive/computation_spec.rb
volt-0.8.0 spec/reactive/computation_spec.rb