37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| require 'spec_helper'
 | |
| 
 | |
| RSpec.describe Gitlab::Database::SchemaCleaner do
 | |
|   let(:example_schema) { fixture_file(File.join('gitlab', 'database', 'structure_example.sql')) }
 | |
|   let(:io) { StringIO.new }
 | |
| 
 | |
|   subject do
 | |
|     described_class.new(example_schema).clean(io)
 | |
|     io.string
 | |
|   end
 | |
| 
 | |
|   it 'removes comments on extensions' do
 | |
|     expect(subject).not_to include('COMMENT ON EXTENSION')
 | |
|   end
 | |
| 
 | |
|   it 'no assumption about public being the default schema' do
 | |
|     expect(subject).not_to match(/public\.\w+/)
 | |
|   end
 | |
| 
 | |
|   it 'cleans up all the gitlab_schema_prevent_write table triggers' do
 | |
|     expect(subject).not_to match(/CREATE TRIGGER gitlab_schema_write_trigger_for_\w+/)
 | |
|     expect(subject).not_to match(/FOR EACH STATEMENT EXECUTE FUNCTION gitlab_schema_prevent_write/)
 | |
|   end
 | |
| 
 | |
|   it 'keeps the lock_writes trigger functions' do
 | |
|     expect(subject).to match(/CREATE FUNCTION gitlab_schema_prevent_write/)
 | |
|   end
 | |
| 
 | |
|   it 'cleans up the full schema as expected (blackbox test with example)' do
 | |
|     expected_schema = fixture_file(File.join('gitlab', 'database', 'structure_example_cleaned.sql'))
 | |
| 
 | |
|     expect(subject).to eq(expected_schema)
 | |
|   end
 | |
| end
 |