|
@@ -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))
|
|
|
+ })
|
|
|
})
|
|
|
})
|
|
|
})
|