Browse Source

Connection tests

Volodymyr Tkach 2 years ago
parent
commit
3b9d674782
1 changed files with 150 additions and 13 deletions
  1. 150 13
      pubsub/pubsub_test.go

+ 150 - 13
pubsub/pubsub_test.go

@@ -1,6 +1,7 @@
 package pubsub_test
 
 import (
+	"fmt"
 	"net/url"
 	"testing"
 
@@ -11,22 +12,158 @@ import (
 )
 
 var _ = Describe("PubSub", func() {
-	var ps *pubsub.PubSub
+	Context("PubSub", func() {
+		var ps *pubsub.PubSub
 
-	BeforeEach(func() {
-		ps = pubsub.NewWithURL(url.URL{Scheme: "ws", Host: "example.com", Path: ""})
+		BeforeEach(func() {
+			ps = pubsub.NewWithURL(url.URL{Scheme: "ws", Host: "example.com", Path: ""})
+		})
+
+		AfterEach(func() {
+			ps.Close()
+		})
+
+		Context("Topic", func() {
+			It("generate correct topic", func() {
+				Expect(ps.Topic("channel-bits-events-v1.123")).To(Equal("channel-bits-events-v1.123"))
+				Expect(ps.Topic("channel-bits-events-v1", 123)).To(Equal("channel-bits-events-v1.123"))
+				Expect(ps.Topic("channel-bits-events-v1", "123")).To(Equal("channel-bits-events-v1.123"))
+				Expect(ps.Topic("channel-bits-events-v1", 123, 456)).To(Equal("channel-bits-events-v1.123.456"))
+				Expect(ps.Topic("channel-bits-events-v1", 123, "456")).To(Equal("channel-bits-events-v1.123.456"))
+				Expect(ps.Topic("channel-bits-events-v1", "123", 456)).To(Equal("channel-bits-events-v1.123.456"))
+				Expect(ps.Topic("channel-bits-events-v1", "123", "456")).To(Equal("channel-bits-events-v1.123.456"))
+				Expect(ps.Topic("channel-bits-events-v1", 123, 456, 789)).To(Equal("channel-bits-events-v1.123.456.789"))
+			})
+		})
 	})
 
-	Context("Topic", func() {
-		It("generate correct topic", func() {
-			Expect(ps.Topic("channel-bits-events-v1.123")).To(Equal("channel-bits-events-v1.123"))
-			Expect(ps.Topic("channel-bits-events-v1", 123)).To(Equal("channel-bits-events-v1.123"))
-			Expect(ps.Topic("channel-bits-events-v1", "123")).To(Equal("channel-bits-events-v1.123"))
-			Expect(ps.Topic("channel-bits-events-v1", 123, 456)).To(Equal("channel-bits-events-v1.123.456"))
-			Expect(ps.Topic("channel-bits-events-v1", 123, "456")).To(Equal("channel-bits-events-v1.123.456"))
-			Expect(ps.Topic("channel-bits-events-v1", "123", 456)).To(Equal("channel-bits-events-v1.123.456"))
-			Expect(ps.Topic("channel-bits-events-v1", "123", "456")).To(Equal("channel-bits-events-v1.123.456"))
-			Expect(ps.Topic("channel-bits-events-v1", 123, 456, 789)).To(Equal("channel-bits-events-v1.123.456.789"))
+	Context("Connection", func() {
+		var c *pubsub.Connection
+
+		BeforeEach(func() {
+			c = pubsub.NewConnection(url.URL{Scheme: "ws", Host: "example.com", Path: ""})
+		})
+
+		AfterEach(func() {
+			c.Close()
+		})
+
+		Context("AddTopic", func() {
+			It("add new topic", func() {
+				Expect(c.TopicsCount()).To(Equal(0))
+				Expect(c.Topics()).To(Equal([]string{}))
+
+				c.AddTopic("community-points-channel-v1.1")
+				Expect(c.TopicsCount()).To(Equal(1))
+				Expect(c.Topics()).To(ContainElements(
+					"community-points-channel-v1.1",
+				))
+
+				c.AddTopic("community-points-channel-v1.2")
+				Expect(c.TopicsCount()).To(Equal(2))
+				Expect(c.Topics()).To(ContainElements(
+					"community-points-channel-v1.1",
+					"community-points-channel-v1.2",
+				))
+			})
+
+			It("not add the same topics", func() {
+				Expect(c.TopicsCount()).To(Equal(0))
+				Expect(c.Topics()).To(Equal([]string{}))
+
+				c.AddTopic("community-points-channel-v1.1")
+				Expect(c.TopicsCount()).To(Equal(1))
+				Expect(c.Topics()).To(ContainElements(
+					"community-points-channel-v1.1",
+				))
+
+				c.AddTopic("community-points-channel-v1.1")
+				Expect(c.TopicsCount()).To(Equal(1))
+				Expect(c.Topics()).To(ContainElements(
+					"community-points-channel-v1.1",
+				))
+			})
+
+			It("add not more than 50 topics", func() {
+				Expect(c.TopicsCount()).To(Equal(0))
+				Expect(c.Topics()).To(Equal([]string{}))
+
+				for i := 1; i <= 60; i++ {
+					c.AddTopic(fmt.Sprintf("community-points-channel-v1.%d", i))
+				}
+
+				Expect(c.TopicsCount()).To(Equal(50))
+			})
+		})
+
+		Context("RemoveTopic", func() {
+			It("remove topic", func() {
+				Expect(c.TopicsCount()).To(Equal(0))
+				Expect(c.Topics()).To(Equal([]string{}))
+
+				c.AddTopic("community-points-channel-v1.1")
+				Expect(c.TopicsCount()).To(Equal(1))
+				Expect(c.Topics()).To(ContainElements(
+					"community-points-channel-v1.1",
+				))
+
+				c.RemoveTopic("community-points-channel-v1.1")
+				Expect(c.TopicsCount()).To(Equal(0))
+				Expect(c.Topics()).To(Equal([]string{}))
+			})
+		})
+
+		Context("RemoveAllTopics", func() {
+			It("remove all topic", func() {
+				Expect(c.TopicsCount()).To(Equal(0))
+				Expect(c.Topics()).To(Equal([]string{}))
+
+				c.AddTopic("community-points-channel-v1.1")
+				c.AddTopic("community-points-channel-v1.2")
+				Expect(c.TopicsCount()).To(Equal(2))
+				Expect(c.Topics()).To(ContainElements(
+					"community-points-channel-v1.1",
+					"community-points-channel-v1.2",
+				))
+
+				c.RemoveAllTopics()
+				Expect(c.TopicsCount()).To(Equal(0))
+				Expect(c.Topics()).To(Equal([]string{}))
+			})
+		})
+
+		Context("Topics", func() {
+			It("return topics", func() {
+				Expect(c.TopicsCount()).To(Equal(0))
+				Expect(c.Topics()).To(Equal([]string{}))
+
+				c.AddTopic("community-points-channel-v1.1")
+				Expect(c.TopicsCount()).To(Equal(1))
+				Expect(c.Topics()).To(ContainElements(
+					"community-points-channel-v1.1",
+				))
+			})
+		})
+
+		Context("HasTopic", func() {
+			It("checks topics", func() {
+				Expect(c.TopicsCount()).To(Equal(0))
+				Expect(c.Topics()).To(Equal([]string{}))
+
+				c.AddTopic("community-points-channel-v1.1")
+				Expect(c.HasTopic("unknown")).To(BeFalse())
+				Expect(c.HasTopic("community-points-channel-v1.1")).To(BeTrue())
+			})
+		})
+
+		Context("TopicsCount", func() {
+			It("return topics count", func() {
+				Expect(c.TopicsCount()).To(Equal(0))
+				c.AddTopic("community-points-channel-v1.1")
+				Expect(c.TopicsCount()).To(Equal(1))
+				c.AddTopic("community-points-channel-v1.2")
+				Expect(c.TopicsCount()).To(Equal(2))
+			})
 		})
 	})
 })