nostr-gem/spec/nostr/client/logger_spec.rb
Wilson Silva 90ab1a6149
Add plain text and coloured logging to the Client
Logs websocket events (connect, message, error and close events)
2024-04-13 14:12:13 +01:00

59 lines
1.4 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
RSpec.describe Nostr::Client::Logger do
let(:client) { instance_spy(Nostr::Client) }
let(:relay) { Nostr::Relay.new(url: 'ws://0.0.0.0:4180/', name: 'localhost') }
let(:logger) { described_class.new }
describe '#attach_to' do
it 'attaches event handlers to the client' do
logger.attach_to(client)
aggregate_failures do
expect(client).to have_received(:on).with(:connect)
expect(client).to have_received(:on).with(:message)
expect(client).to have_received(:on).with(:send)
expect(client).to have_received(:on).with(:error)
expect(client).to have_received(:on).with(:close)
end
end
end
describe '#on_connect' do
it 'returns nil' do
expect(logger.on_connect(relay)).to be_nil
end
end
describe '#on_message' do
it 'returns nil' do
message = 'Received message'
expect(logger.on_message(message)).to be_nil
end
end
describe '#on_send' do
it 'returns nil' do
message = 'Sent message'
expect(logger.on_send(message)).to be_nil
end
end
describe '#on_error' do
it 'returns nil' do
message = 'Error message'
expect(logger.on_error(message)).to be_nil
end
end
describe '#on_close' do
it 'returns nil' do
code = 1000
reason = 'Normal closure'
expect(logger.on_close(code, reason)).to be_nil
end
end
end