1
0
Fork 0
mirror of https://github.com/aasm/aasm synced 2023-03-27 23:22:41 -04:00
aasm/spec/unit/persistence/redis_persistence_multiple_spec.rb
Victor Shcherbakov 8e8c6baeaf Update Redis support
Fix #480
2017-07-11 17:41:02 +05:30

88 lines
2.7 KiB
Ruby

require 'spec_helper'
if defined?(Redis)
describe 'redis' do
Dir[File.dirname(__FILE__) + "/../../models/redis/*.rb"].sort.each do |f|
require File.expand_path(f)
end
before(:all) do
@model = RedisMultiple
end
describe "instance methods" do
let(:model) {@model.new}
it "should respond to aasm persistence methods" do
expect(model).to respond_to(:aasm_read_state)
expect(model).to respond_to(:aasm_write_state)
expect(model).to respond_to(:aasm_write_state_without_persistence)
end
it "should return the initial state when new and the aasm field is nil" do
expect(model.aasm(:left).current_state).to eq(:alpha)
end
it "should save the initial state" do
expect(model.status).to eq("alpha")
end
it "should return the aasm column the aasm field is not nil" do
model.status = "beta"
expect(model.aasm(:left).current_state).to eq(:beta)
end
it "should allow a nil state" do
model.status = nil
expect(model.aasm(:left).current_state).to be_nil
end
end
describe 'subclasses' do
it "should have the same states as its parent class" do
expect(Class.new(@model).aasm(:left).states).to eq(@model.aasm(:left).states)
end
it "should have the same events as its parent class" do
expect(Class.new(@model).aasm(:left).events).to eq(@model.aasm(:left).events)
end
it "should have the same column as its parent even for the new dsl" do
expect(@model.aasm(:left).attribute_name).to eq(:status)
expect(Class.new(@model).aasm(:left).attribute_name).to eq(:status)
end
end
describe "complex example" do
it "works" do
record = RedisComplexExample.new
expect(record.aasm(:left).current_state).to eql :one
expect(record.aasm(:right).current_state).to eql :alpha
expect_aasm_states record, :one, :alpha
record.increment!
expect_aasm_states record, :two, :alpha
record.level_up!
expect_aasm_states record, :two, :beta
record.increment!
expect { record.increment! }.to raise_error(AASM::InvalidTransition)
expect_aasm_states record, :three, :beta
record.level_up!
expect_aasm_states record, :three, :gamma
end
def expect_aasm_states(record, left_state, right_state)
expect(record.aasm(:left).current_state).to eql left_state.to_sym
expect(record.left.value.to_s).to eql left_state.to_s
expect(record.aasm(:right).current_state).to eql right_state.to_sym
expect(record.right.value.to_s).to eql right_state.to_s
end
end
end
end