Advertisement
terraplane

Untitled

Aug 11th, 2022 (edited)
2,179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rails 0.81 KB | None | 0 0
  1. require 'spec_helper'
  2.  
  3. require 'aasm'
  4. require 'digest'
  5.  
  6. class Order
  7.   include AASM
  8.  
  9.   attr_reader :number
  10.  
  11.   aasm do
  12.     state :created, initial: true, before_enter: :set_number
  13.     state :assembled
  14.     state :delivered
  15.  
  16.     event :assembly! do
  17.       transitions from: :created, to: :assembled
  18.     end
  19.  
  20.     event :deliver! do
  21.       transitions from: :assembled, to: :delivered
  22.     end
  23.   end
  24.  
  25.   private
  26.  
  27.   def set_number
  28.     @number = Digest::MD5.hexdigest(rand(1..100000).to_s)
  29.   end
  30. end
  31.  
  32. describe 'State machine' do
  33.   let(:order) { Order.new }
  34.  
  35.   it 'works' do
  36.     expect(order.created?).to be true
  37.     expect(order.number.class).to eq(String)
  38.  
  39.     order.assembly!
  40.     expect(order.assembled?).to be true
  41.  
  42.     order.deliver!
  43.     expect(order.delivered?).to be true
  44.   end
  45. end
  46.  
  47.  
  48.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement