41 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| require 'spec_helper'
 | |
| 
 | |
| RSpec.describe Gitlab::GraphqlLogger do
 | |
|   subject { described_class.new('/dev/null') }
 | |
| 
 | |
|   let(:now) { Time.now }
 | |
| 
 | |
|   it 'builds a logger once' do
 | |
|     expect(::Logger).to receive(:new).and_call_original
 | |
| 
 | |
|     subject.info('hello world')
 | |
|     subject.error('hello again')
 | |
|   end
 | |
| 
 | |
|   context 'logging a GraphQL query' do
 | |
|     let(:query) { File.read(Rails.root.join('spec/fixtures/api/graphql/introspection.graphql')) }
 | |
| 
 | |
|     it 'logs a query from JSON' do
 | |
|       analyzer_memo = {
 | |
|         query_string: query,
 | |
|         variables: {},
 | |
|         complexity: 181,
 | |
|         depth: 0,
 | |
|         duration_s: 7
 | |
|       }
 | |
| 
 | |
|       output = subject.format_message('INFO', now, 'test', analyzer_memo)
 | |
| 
 | |
|       data = Gitlab::Json.parse(output)
 | |
|       expect(data['severity']).to eq('INFO')
 | |
|       expect(data['time']).to eq(now.utc.iso8601(3))
 | |
|       expect(data['complexity']).to eq(181)
 | |
|       expect(data['variables']).to eq({})
 | |
|       expect(data['depth']).to eq(0)
 | |
|       expect(data['duration_s']).to eq(7)
 | |
|     end
 | |
|   end
 | |
| end
 |