From b07f307efdda96b8cb791c2b48d277e7bd8e5c96 Mon Sep 17 00:00:00 2001 From: Julia Date: Mon, 27 Jan 2025 16:42:43 +0400 Subject: [PATCH] Fix specs --- spec/compability/service.rb | 8 +++---- spec/service/endpoint_spec.rb | 29 +++++++++++++++++------ spec/service/extension_examples.rb | 4 +++- spec/service/group_spec.rb | 37 +++++++++++++++++++++--------- spec/service/stats_spec.rb | 4 ++-- spec/service_spec.rb | 6 ++--- 6 files changed, 60 insertions(+), 28 deletions(-) diff --git a/spec/compability/service.rb b/spec/compability/service.rb index 43853db..b6cba7b 100644 --- a/spec/compability/service.rb +++ b/spec/compability/service.rb @@ -14,7 +14,7 @@ def start add_service add_endpoints end - + def stop @service.stop end @@ -26,11 +26,11 @@ def add_service name: "demo", version: "1.0.0", description: "demo service", - metadata: { workload: "cpu" } + metadata: {workload: "cpu"} ) service.on_stats do |endpoint| - { endpoint: endpoint.name } + {endpoint: endpoint.name} end end @@ -38,7 +38,7 @@ def add_endpoints group1 = service.add_group("g1") group2 = service.add_group("g2", queue: "group-queue") - add_endpoint(service, "demo-default-queue", subject: "demo.default", metadata: { key: "value" }) + add_endpoint(service, "demo-default-queue", subject: "demo.default", metadata: {key: "value"}) add_endpoint(service, "demo-custom-queue", subject: "demo.default", queue: "endpoint-group") add_endpoint(group1, "g1-parent-queue", subject: "parent.queue") diff --git a/spec/service/endpoint_spec.rb b/spec/service/endpoint_spec.rb index 1a2d85c..8f086c3 100644 --- a/spec/service/endpoint_spec.rb +++ b/spec/service/endpoint_spec.rb @@ -16,11 +16,12 @@ let(:service) { client.add_service(name: "foo", queue: "queue") } subject do - described_class.new(name: name, options: options, parent: service, &block) + described_class.new(name: name, options: options, parent: parent, &block) end let(:name) { "bar" } let(:options) { {} } + let(:parent) { service } let(:block) { ->(msg) { msg.respond("bar") } } after { service.stop } @@ -46,11 +47,25 @@ end end + context "when parent is a service" do + it "builds sets subject to name" do + expect(subject.subject).to eq("bar") + end + end + + context "when parent is a group" do + let(:parent) { service.add_group("baz") } + + it "builds subject based on parent.subject" do + expect(subject.subject).to eq("baz.bar") + end + end + context "when options[:subject] is present" do let(:options) { {subject: "baz"} } it "builds subject based on options[:subject]" do - expect(subject.subject).to eq("foo.baz") + expect(subject.subject).to eq("baz") end end @@ -58,7 +73,7 @@ let(:options) { {subject: nil} } it "builds subject based on endpoint name" do - expect(subject.subject).to eq("foo.bar") + expect(subject.subject).to eq("bar") end end @@ -121,7 +136,7 @@ let(:request) do subject begin - client.request("foo.bar") + client.request("bar") rescue nil end @@ -195,7 +210,7 @@ subject.stop expect(subs.values).to include( - having_attributes(subject: "foo.bar", drained: true) + having_attributes(subject: "bar", drained: true) ) end @@ -209,7 +224,7 @@ describe "#reset" do before do subject - 3.times { client.request("foo.bar") } + 3.times { client.request("bar") } end it "resets endpoint stats" do @@ -220,7 +235,7 @@ processing_time: 0, average_processing_time: 0, num_errors: 0, - last_error: nil + last_error: "" ) end end diff --git a/spec/service/extension_examples.rb b/spec/service/extension_examples.rb index 043ec3e..e019522 100644 --- a/spec/service/extension_examples.rb +++ b/spec/service/extension_examples.rb @@ -1,7 +1,9 @@ # frozen_string_literal: true RSpec.shared_examples "extension" do |params| - let(:subject_value) { "#{subject.subject}.baz" } + let(:subject_value) do + subject.is_a?(NATS::Service) ? "baz" : "#{subject.subject}.baz" + end describe "#add_group" do context "when queue is specified" do diff --git a/spec/service/group_spec.rb b/spec/service/group_spec.rb index 7dd01f6..3082681 100644 --- a/spec/service/group_spec.rb +++ b/spec/service/group_spec.rb @@ -3,13 +3,14 @@ require_relative "extension_examples" RSpec.describe NATS::Service::Group do - subject { described_class.new(name: name, parent: service, queue: queue) } + subject { described_class.new(name: name, parent: parent, queue: queue) } let(:name) { "bar" } let(:queue) { "queue" } let(:client) { NATS.connect } let(:service) { client.add_service(name: "foo", queue: "default") } + let(:parent) { service } before(:all) do @server = NatsServerControl.new @@ -25,16 +26,10 @@ include_examples "extension" describe "#initialize" do - it "sets name" do - expect(subject.name).to eq("bar") - end - - it "builds subject" do - expect(subject.subject).to eq("foo.bar") - end - - it "sets queue" do - expect(subject.queue).to eq("queue") + context "when name is valid" do + it "sets name" do + expect(subject.name).to eq("bar") + end end context "when name is invalid" do @@ -45,6 +40,26 @@ end end + context "when parent is a service" do + it "sets subject to name" do + expect(subject.subject).to eq("bar") + end + end + + context "when parent is a group" do + let(:parent) { service.add_group("baz") } + + it "builds subject based on group.subject" do + expect(subject.subject).to eq("baz.bar") + end + end + + context "when queue is valid" do + it "sets queue" do + expect(subject.queue).to eq("queue") + end + end + context "when queue is blank" do let(:queue) { nil } diff --git a/spec/service/stats_spec.rb b/spec/service/stats_spec.rb index 177f83b..cdca428 100644 --- a/spec/service/stats_spec.rb +++ b/spec/service/stats_spec.rb @@ -9,7 +9,7 @@ processing_time: 0, average_processing_time: 0, num_errors: 0, - last_error: nil + last_error: "" ) end @@ -27,7 +27,7 @@ processing_time: 0, average_processing_time: 0, num_errors: 0, - last_error: nil + last_error: "" ) end end diff --git a/spec/service_spec.rb b/spec/service_spec.rb index b379804..44f87ea 100644 --- a/spec/service_spec.rb +++ b/spec/service_spec.rb @@ -285,8 +285,8 @@ subject.add_endpoint("bar") { |msg| msg.respond("bar") } subject.add_endpoint("baz") { |msg| msg.respond("baz") } - client.request("foo.bar") - client.request("foo.baz") + client.request("bar") + client.request("baz") end it "resets all endpoints stats" do @@ -298,7 +298,7 @@ processing_time: 0, average_processing_time: 0, num_errors: 0, - last_error: nil + last_error: "" ) end end