Add NIP-01 compliant client code
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
require 'spec_helper'
|
||||
|
||||
RSpec.describe Nostr::Subscription do
|
||||
let(:filter) do
|
||||
Nostr::Filter.new(since: 1_230_981_305)
|
||||
end
|
||||
|
||||
let(:subscription) do
|
||||
described_class.new(id: 'c24881c305c5cfb7c1168be7e9b0e150', filter:)
|
||||
end
|
||||
|
||||
describe '#==' do
|
||||
context 'when both subscriptions have the same attributes' do
|
||||
it 'returns true' do
|
||||
subscription1 = described_class.new(id: 'c24881c305c5cfb7c1168be7e9b0e150', filter:)
|
||||
subscription2 = described_class.new(id: 'c24881c305c5cfb7c1168be7e9b0e150', filter:)
|
||||
|
||||
expect(subscription1).to eq(subscription2)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when both subscriptions have a different id' do
|
||||
it 'returns false' do
|
||||
subscription1 = described_class.new(id: 'c24881c305c5cfb7c1168be7e9b0e150', filter:)
|
||||
subscription2 = described_class.new(id: '16605b59b539f6e86762f28fb57db2fd', filter:)
|
||||
|
||||
expect(subscription1).not_to eq(subscription2)
|
||||
end
|
||||
end
|
||||
|
||||
context 'when both subscriptions have a different filter' do
|
||||
let(:other_filter) do
|
||||
Nostr::Filter.new(since: 1_230_981_305, until: 1_292_190_341)
|
||||
end
|
||||
|
||||
it 'returns false' do
|
||||
subscription1 = described_class.new(id: 'c24881c305c5cfb7c1168be7e9b0e150', filter:)
|
||||
subscription2 = described_class.new(id: 'c24881c305c5cfb7c1168be7e9b0e150', filter: other_filter)
|
||||
|
||||
expect(subscription1).not_to eq(subscription2)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '.new' do
|
||||
context 'when no id is provided' do
|
||||
it 'creates an instance of a subscription using a randomly generated id' do
|
||||
allow(SecureRandom).to receive(:hex).and_return('a_random_string')
|
||||
|
||||
subscription = described_class.new(filter:)
|
||||
|
||||
expect(subscription.id).to eq('a_random_string')
|
||||
end
|
||||
end
|
||||
|
||||
context 'when an id is provided' do
|
||||
it 'creates an instance of a subscription using that ID' do
|
||||
subscription = described_class.new(
|
||||
id: 'c24881c305c5cfb7c1168be7e9b0e150',
|
||||
filter:
|
||||
)
|
||||
|
||||
expect(subscription.id).to eq('c24881c305c5cfb7c1168be7e9b0e150')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#filter' do
|
||||
it 'exposes the subscription filter' do
|
||||
expect(subscription.filter).to eq(filter)
|
||||
end
|
||||
end
|
||||
|
||||
describe '#id' do
|
||||
it 'exposes the subscription id' do
|
||||
expect(subscription.id).to eq('c24881c305c5cfb7c1168be7e9b0e150')
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user