From b58ff176465dbe815ea4b90f6df2bfb39d46a0a9 Mon Sep 17 00:00:00 2001 From: Julia Date: Fri, 24 Jan 2025 20:27:09 +0400 Subject: [PATCH] Fix lints --- lib/nats/service.rb | 8 ++--- lib/nats/service/errors.rb | 3 ++ lib/nats/service/monitoring.rb | 2 +- lib/nats/service/stats.rb | 2 +- spec/service/callbacks_spec.rb | 1 + spec/service/endpoint_spec.rb | 32 +++++++++-------- spec/service/monitoring_spec.rb | 18 +++++----- spec/service/status_spec.rb | 40 ++++++++++----------- spec/service/validator_spec.rb | 16 ++++----- spec/service_spec.rb | 61 +++++++++++++++++++++++---------- 10 files changed, 107 insertions(+), 76 deletions(-) diff --git a/lib/nats/service.rb b/lib/nats/service.rb index a2b16fe..f81221b 100644 --- a/lib/nats/service.rb +++ b/lib/nats/service.rb @@ -14,7 +14,7 @@ require_relative "service/stats" # client = NATS.connect -# +# # service = client.add_service( # name: "name", # version: "1.0.0", @@ -27,7 +27,7 @@ # # service.on_stats do |endpoint| # end -# +# # service.on_stop do |error| # end # @@ -45,12 +45,12 @@ class Service include MonitorMixin include Extension - DEFAULT_QUEUE = "q".freeze + DEFAULT_QUEUE = "q" attr_reader :client, :name, :id, :version, :description, :metadata, :queue attr_reader :monitoring, :status, :callbacks, :groups, :endpoints - alias subject name + alias_method :subject, :name def initialize(client, options) super() diff --git a/lib/nats/service/errors.rb b/lib/nats/service/errors.rb index 6f71162..a0acd3f 100644 --- a/lib/nats/service/errors.rb +++ b/lib/nats/service/errors.rb @@ -5,8 +5,11 @@ class Service class Error < StandardError; end class InvalidNameError < Error; end + class InvalidVersionError < Error; end + class InvalidQueueError < Error; end + class InvalidSubjectError < Error; end end end diff --git a/lib/nats/service/monitoring.rb b/lib/nats/service/monitoring.rb index 77ca37a..6133242 100644 --- a/lib/nats/service/monitoring.rb +++ b/lib/nats/service/monitoring.rb @@ -5,7 +5,7 @@ module NATS class Service class Monitoring - DEFAULT_PREFIX = "$SRV".freeze + DEFAULT_PREFIX = "$SRV" VERBS = { ping: "PING", diff --git a/lib/nats/service/stats.rb b/lib/nats/service/stats.rb index f256d15..d4ae825 100644 --- a/lib/nats/service/stats.rb +++ b/lib/nats/service/stats.rb @@ -43,7 +43,7 @@ def error(error) private def to_nsec(seconds) - (seconds * 10 ** 9).to_i + (seconds * 10**9).to_i end end end diff --git a/spec/service/callbacks_spec.rb b/spec/service/callbacks_spec.rb index 5c02f2f..42d1e56 100644 --- a/spec/service/callbacks_spec.rb +++ b/spec/service/callbacks_spec.rb @@ -2,6 +2,7 @@ RSpec.describe NATS::Service::Callbacks do subject { described_class.new(service) } + let(:service) { instance_double(NATS::Service) } describe "#register" do diff --git a/spec/service/endpoint_spec.rb b/spec/service/endpoint_spec.rb index d748ffe..5172434 100644 --- a/spec/service/endpoint_spec.rb +++ b/spec/service/endpoint_spec.rb @@ -21,7 +21,7 @@ let(:options) { {} } let(:block) { ->(msg) { msg.respond("bar") } } - after { service.stop } + after { service.stop } describe "#initialize" do it "sets service" do @@ -45,7 +45,7 @@ end context "when options[:subject] is present" do - let(:options) { { subject: "baz" } } + let(:options) { {subject: "baz"} } it "builds subject based on options[:subject]" do expect(subject.subject).to eq("foo.baz") @@ -53,7 +53,7 @@ end context "when options[:subject] is blank" do - let(:options) { { subject: nil } } + let(:options) { {subject: nil} } it "builds subject based on endpoint name" do expect(subject.subject).to eq("foo.bar") @@ -61,7 +61,7 @@ end context "when options[:subject] is invalid" do - let(:options) { { subject: ">baz" } } + let(:options) { {subject: ">baz"} } it "raises InvalidSubjectError" do expect { subject }.to raise_error(NATS::Service::InvalidSubjectError) @@ -69,7 +69,7 @@ end context "when options[:queue] is present" do - let(:options) { { queue: "qux" } } + let(:options) { {queue: "qux"} } it "sets queue to options[:queue]" do expect(subject.queue).to eq("qux") @@ -77,7 +77,7 @@ end context "when options[:queue] is blank" do - let(:options) { { queue: nil } } + let(:options) { {queue: nil} } it "sets queue parent.queue" do expect(subject.queue).to eq("queue") @@ -85,7 +85,7 @@ end context "when options[:queue] is invalid" do - let(:options) { { queue: ">qux" } } + let(:options) { {queue: ">qux"} } it "raises InvalidQueueError" do expect { subject }.to raise_error(NATS::Service::InvalidQueueError) @@ -93,15 +93,15 @@ end context "when options[:metadata] is present" do - let(:options) { { metadata: { foo: :bar } } } + let(:options) { {metadata: {foo: :bar}} } it "sets metadata to options[:metadata]" do - expect(subject.metadata).to eq({ foo: :bar }) + expect(subject.metadata).to eq({foo: :bar}) end end context "when options[:metadata] is blank" do - let(:options) { { metatada: nil } } + let(:options) { {metatada: nil} } it "sets metadata to nil" do expect(subject.metadata).to be_nil @@ -118,14 +118,18 @@ describe "handler" do let(:request) do subject - client.request("foo.bar") rescue nil + begin + client.request("foo.bar") + rescue + nil + end end context "when there are no errors" do it "executes endpoint" do expect(request).to have_attributes(data: "bar") end - + it "does not record any errors" do request @@ -143,9 +147,9 @@ let(:block) { ->(msg) { raise "Endpoint Error" } } it "responds with error" do - expect(request).to have_attributes(header: {"Nats-Service-Error"=>"Endpoint Error", "Nats-Service-Error-Code"=>"500"}) + expect(request).to have_attributes(header: {"Nats-Service-Error" => "Endpoint Error", "Nats-Service-Error-Code" => "500"}) end - + it "records error" do request diff --git a/spec/service/monitoring_spec.rb b/spec/service/monitoring_spec.rb index 56eb569..c79b108 100644 --- a/spec/service/monitoring_spec.rb +++ b/spec/service/monitoring_spec.rb @@ -13,9 +13,9 @@ instance_double(NATS::Service::Status, basic: basic, info: info, stats: stats) end - let(:basic) { { name: "foo", id: "bar", version: "1.0.0" } } - let(:info) { { **basic, description: "foo bar" } } - let(:stats) { { **basic, started: "2025-01-24T05:40:37Z" } } + let(:basic) { {name: "foo", id: "bar", version: "1.0.0"} } + let(:info) { {**basic, description: "foo bar"} } + let(:stats) { {**basic, started: "2025-01-24T05:40:37Z"} } let(:client) { NATS.connect } @@ -28,7 +28,7 @@ @server.kill_server end - after { subject.stop } + after { subject.stop } describe "#initialize" do context "when prefix is specified" do @@ -46,7 +46,7 @@ having_attributes(subject: "$FOO.INFO.foo.bar"), having_attributes(subject: "$FOO.STATS"), having_attributes(subject: "$FOO.STATS.foo"), - having_attributes(subject: "$FOO.STATS.foo.bar"), + having_attributes(subject: "$FOO.STATS.foo.bar") ) end end @@ -66,13 +66,13 @@ having_attributes(subject: "$SRV.INFO.foo.bar"), having_attributes(subject: "$SRV.STATS"), having_attributes(subject: "$SRV.STATS.foo"), - having_attributes(subject: "$SRV.STATS.foo.bar"), + having_attributes(subject: "$SRV.STATS.foo.bar") ) end end describe "PING" do - let(:ping_response) { { type: "io.nats.micro.v1.ping_response", **basic }.to_json } + let(:ping_response) { {type: "io.nats.micro.v1.ping_response", **basic}.to_json } it "returns PING response" do subject @@ -84,7 +84,7 @@ end describe "INFO" do - let(:info_response) { { type: "io.nats.micro.v1.info_response", **info }.to_json } + let(:info_response) { {type: "io.nats.micro.v1.info_response", **info}.to_json } it "returns INFO response" do subject @@ -96,7 +96,7 @@ end describe "STATS" do - let(:stats_response) { { type: "io.nats.micro.v1.stats_response", **stats }.to_json } + let(:stats_response) { {type: "io.nats.micro.v1.stats_response", **stats}.to_json } it "returns STATS response" do subject diff --git a/spec/service/status_spec.rb b/spec/service/status_spec.rb index 2c5dc30..7abc97b 100644 --- a/spec/service/status_spec.rb +++ b/spec/service/status_spec.rb @@ -19,12 +19,12 @@ def endpoint(values) let(:service) do instance_double( - NATS::Service, - name: "foo", + NATS::Service, + name: "foo", id: "bar", version: "1.0.0", description: "foo bar", - metadata: { foo: :bar }, + metadata: {foo: :bar}, endpoints: endpoints, callbacks: NATS::Service::Callbacks.new(nil) ) @@ -35,7 +35,7 @@ def endpoint(values) name: "foo", id: "bar", version: "1.0.0", - metadata: { foo: :bar } + metadata: {foo: :bar} } end @@ -63,8 +63,8 @@ def endpoint(values) context "when service has some endpoints" do let(:endpoints) do [ - endpoint(name: "baz", subject: "foo.baz", queue: "q", metadata: { baz: :qux }), - endpoint(name: "qux", subject: "foo.qux", queue: "q", metadata: { qux: :baz }) + endpoint(name: "baz", subject: "foo.baz", queue: "q", metadata: {baz: :qux}), + endpoint(name: "qux", subject: "foo.qux", queue: "q", metadata: {qux: :baz}) ] end @@ -73,8 +73,8 @@ def endpoint(values) **basic, description: "foo bar", endpoints: [ - { name: "baz", subject: "foo.baz", queue_group: "q", metadata: { baz: :qux } }, - { name: "qux", subject: "foo.qux", queue_group: "q", metadata: { qux: :baz } } + {name: "baz", subject: "foo.baz", queue_group: "q", metadata: {baz: :qux}}, + {name: "qux", subject: "foo.qux", queue_group: "q", metadata: {qux: :baz}} ] }) end @@ -107,7 +107,7 @@ def endpoint(values) name: "baz", subject: "foo.baz", queue: "q", - stats: { + stats: { num_requests: 1, processing_time: 300, average_processing_time: 300, @@ -136,9 +136,9 @@ def endpoint(values) **basic, started: "2025-01-25T07:45:10Z", endpoints: [ - { - name: "baz", - subject: "foo.baz", + { + name: "baz", + subject: "foo.baz", queue_group: "q", num_requests: 1, processing_time: 300, @@ -147,7 +147,7 @@ def endpoint(values) last_error: nil, data: nil }, - { + { name: "qux", subject: "foo.qux", queue_group: "q", @@ -169,7 +169,7 @@ def endpoint(values) errors = endpoint.stats.num_errors requests = endpoint.stats.num_requests - { errors_rate: (errors.to_f / requests).round(2) } + {errors_rate: (errors.to_f / requests).round(2)} end end @@ -178,18 +178,18 @@ def endpoint(values) **basic, started: "2025-01-25T07:45:10Z", endpoints: [ - { - name: "baz", - subject: "foo.baz", + { + name: "baz", + subject: "foo.baz", queue_group: "q", num_requests: 1, processing_time: 300, average_processing_time: 300, num_errors: 0, last_error: nil, - data: { errors_rate: 0 } + data: {errors_rate: 0} }, - { + { name: "qux", subject: "foo.qux", queue_group: "q", @@ -198,7 +198,7 @@ def endpoint(values) average_processing_time: 500, num_errors: 1, last_error: "StandardError", - data: { errors_rate: 0.33 } + data: {errors_rate: 0.33} } ] }) diff --git a/spec/service/validator_spec.rb b/spec/service/validator_spec.rb index 75ea671..8f8faaf 100644 --- a/spec/service/validator_spec.rb +++ b/spec/service/validator_spec.rb @@ -5,10 +5,10 @@ subject { described_class.validate(values) } describe ":name" do - let(:values) { { name: name } } + let(:values) { {name: name} } context "when name is not present" do - let(:values) { { } } + let(:values) { {} } it "does not raise any errors" do expect { subject }.not_to raise_error @@ -41,10 +41,10 @@ end describe ":version" do - let(:values) { { version: version } } + let(:values) { {version: version} } context "when version is not present" do - let(:values) { { } } + let(:values) { {} } it "does not raise any errors" do expect { subject }.not_to raise_error @@ -77,10 +77,10 @@ end describe ":subject" do - let(:values) { { subject: subject_value } } + let(:values) { {subject: subject_value} } context "when subject is not present" do - let(:values) { { } } + let(:values) { {} } it "does not raise any errors" do expect { subject }.not_to raise_error @@ -113,10 +113,10 @@ end describe ":queue" do - let(:values) { { queue: queue } } + let(:values) { {queue: queue} } context "when queue is not present" do - let(:values) { { } } + let(:values) { {} } it "does not raise any errors" do expect { subject }.not_to raise_error diff --git a/spec/service_spec.rb b/spec/service_spec.rb index 3331b4b..b379804 100644 --- a/spec/service_spec.rb +++ b/spec/service_spec.rb @@ -15,6 +15,7 @@ let(:client) { NATS.connect } subject { client.add_service(options) } + let(:service) { subject } let(:options) do @@ -30,7 +31,7 @@ describe "#initialize" do context "when :name is valid" do - let(:options) { { name: "foo" } } + let(:options) { {name: "foo"} } it "sets name" do expect(subject.name).to eq("foo") @@ -38,7 +39,7 @@ end context "when :name is invalid" do - let(:options) { { name: "$foo.*" } } + let(:options) { {name: "$foo.*"} } it "raises InvalidNameError" do expect { subject }.to raise_error(NATS::Service::InvalidNameError) @@ -46,7 +47,7 @@ end context "when :name is blank" do - let(:options) { { name: nil } } + let(:options) { {name: nil} } it "raises InvalidNameError" do expect { subject }.to raise_error(NATS::Service::InvalidNameError) @@ -54,7 +55,7 @@ end context "when :version is valid" do - let(:options) { { version: "1.0.0-alpha-a.b-c+build.1-aef.1" } } + let(:options) { {version: "1.0.0-alpha-a.b-c+build.1-aef.1"} } it "sets version" do expect(subject.version).to eq("1.0.0-alpha-a.b-c+build.1-aef.1") @@ -62,7 +63,7 @@ end context "when :version is invalid" do - let(:options) { { version: "version-1.0-alpha" } } + let(:options) { {version: "version-1.0-alpha"} } it "raises InvalidVersionError" do expect { subject }.to raise_error(NATS::Service::InvalidVersionError) @@ -70,7 +71,7 @@ end context "when :version is blank" do - let(:options) { { version: nil } } + let(:options) { {version: nil} } it "raises InvalidVersionError" do expect { subject }.to raise_error(NATS::Service::InvalidVersionError) @@ -78,7 +79,7 @@ end context "when :description is valid" do - let(:options) { { description: "bar" } } + let(:options) { {description: "bar"} } it "sets description" do expect(subject.description).to eq("bar") @@ -86,7 +87,7 @@ end context "when :description is blank" do - let(:options) { { description: nil } } + let(:options) { {description: nil} } it "sets description to nil" do expect(subject.description).to be nil @@ -94,10 +95,10 @@ end context "when :metadata is present" do - let(:options) { { metadata: { foo: :bar } } } + let(:options) { {metadata: {foo: :bar}} } it "sets metadata" do - expect(subject.metadata).to eq({ foo: :bar }) + expect(subject.metadata).to eq({foo: :bar}) end it "freezes metadata" do @@ -106,7 +107,7 @@ end context "when :metadata is blank" do - let(:options) { { metatada: nil } } + let(:options) { {metatada: nil} } it "sets metadata to nil" do expect(subject.metadata).to be_nil @@ -114,7 +115,7 @@ end context "when :queue is present" do - let(:options) { { queue: "qux" } } + let(:options) { {queue: "qux"} } it "sets queue" do expect(subject.queue).to eq("qux") @@ -122,7 +123,7 @@ end context "when :queue is blank" do - let(:options) { { queue: nil } } + let(:options) { {queue: nil} } it "sets queue to default queue" do expect(subject.queue).to eq("q") @@ -130,7 +131,7 @@ end context "when :queue is invalid" do - let(:options) { { queue: ">qux" } } + let(:options) { {queue: ">qux"} } it "raises InvalidQueueError" do expect { subject }.to raise_error(NATS::Service::InvalidQueueError) @@ -144,7 +145,13 @@ end it "stops the service" do - expect { subject rescue nil }.to receive(:stop) + expect { + begin + subject + rescue + nil + end + }.to receive(:stop) end it "raises error" do @@ -218,7 +225,11 @@ end it "marks service as stopped" do - service.stop rescue nil + begin + service.stop + rescue + nil + end expect(subject.stopped?).to be(true) end @@ -234,19 +245,31 @@ end it "stops monitoring" do - service.stop rescue nil + begin + service.stop + rescue + nil + end expect(service.monitoring.stopped?).to be(true) end it "stops endpoints" do - service.stop rescue nil + begin + service.stop + rescue + nil + end expect(service.endpoints.map(&:stopped?)).to all be(true) end it "marks service as stopped" do - service.stop rescue nil + begin + service.stop + rescue + nil + end expect(subject.stopped?).to be(true) end