27 lines
		
	
	
		
			1001 B
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			1001 B
		
	
	
	
		
			Ruby
		
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
require 'spec_helper'
 | 
						|
require_migration!
 | 
						|
 | 
						|
RSpec.describe MigrateCustomPermissions, feature_category: :permissions do
 | 
						|
  let(:member_roles) { table(:member_roles) }
 | 
						|
  let!(:member_role_a) { member_roles.create!(name: 'a', base_access_level: 10, read_code: true) }
 | 
						|
  let!(:member_role_b) { member_roles.create!(name: 'b', base_access_level: 10, archive_project: true) }
 | 
						|
  let(:boolean_permissions_where) { { read_code: true } }
 | 
						|
  let(:jsonb_permissions_where) { "member_roles.permissions @> ('{\"read_code\":true}')::jsonb" }
 | 
						|
 | 
						|
  it 'correctly migrates up and down' do
 | 
						|
    disable_migrations_output do
 | 
						|
      reversible_migration do |migration|
 | 
						|
        migration.before -> {
 | 
						|
          expect(member_roles.where(boolean_permissions_where).pluck(:id)).to contain_exactly(member_role_a.id)
 | 
						|
        }
 | 
						|
 | 
						|
        migration.after -> {
 | 
						|
          expect(member_roles.where(jsonb_permissions_where).pluck(:id)).to contain_exactly(member_role_a.id)
 | 
						|
        }
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |