Skip to content

Instantly share code, notes, and snippets.

@tbuehlmann
Last active May 22, 2016 14:04
Show Gist options
  • Save tbuehlmann/aba327e07b7a73b84300f3e4b55b8883 to your computer and use it in GitHub Desktop.
Save tbuehlmann/aba327e07b7a73b84300f3e4b55b8883 to your computer and use it in GitHub Desktop.
class State < ActiveRecord::Base
def self.default
find_by(default: true)
end
def make_default!
PgLock.new(name: 'set_state_default').lock do
State.update_all(default: false)
update(default: true)
end
end
def to_s
name
end
end
require 'rails_helper'
RSpec.describe State, type: :model do
let!(:state1) {FactoryGirl.create(:state, name: "New", default: false)}
let!(:state2) {FactoryGirl.create(:state, name: "Closed", default: false)}
let!(:state3) {FactoryGirl.create(:state, name: "Open", default: true)}
it '#make_default! sets a default state to true' do
state1.make_default!
expect(State.first.default?).to be true
end
it '#make_default! sets all other states to false' do
state1.make_default!
expect(State.first.default?).to be true
expect(State.second.default?).to be false
expect(State.third.default?).to be false
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment