pubsub_test.go 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. package pubsub_test
  2. import (
  3. "fmt"
  4. "net/url"
  5. "testing"
  6. "github.com/vladimirok5959/golang-twitch/pubsub"
  7. . "github.com/onsi/ginkgo"
  8. . "github.com/onsi/gomega"
  9. )
  10. var _ = Describe("PubSub", func() {
  11. Context("PubSub", func() {
  12. var ps *pubsub.PubSub
  13. BeforeEach(func() {
  14. ps = pubsub.NewWithURL(url.URL{Scheme: "ws", Host: "example.com", Path: ""})
  15. })
  16. AfterEach(func() {
  17. ps.Close()
  18. })
  19. Context("Topic", func() {
  20. It("generate correct topic", func() {
  21. Expect(ps.Topic("channel-bits-events-v1.123")).To(Equal("channel-bits-events-v1.123"))
  22. Expect(ps.Topic("channel-bits-events-v1", 123)).To(Equal("channel-bits-events-v1.123"))
  23. Expect(ps.Topic("channel-bits-events-v1", "123")).To(Equal("channel-bits-events-v1.123"))
  24. Expect(ps.Topic("channel-bits-events-v1", 123, 456)).To(Equal("channel-bits-events-v1.123.456"))
  25. Expect(ps.Topic("channel-bits-events-v1", 123, "456")).To(Equal("channel-bits-events-v1.123.456"))
  26. Expect(ps.Topic("channel-bits-events-v1", "123", 456)).To(Equal("channel-bits-events-v1.123.456"))
  27. Expect(ps.Topic("channel-bits-events-v1", "123", "456")).To(Equal("channel-bits-events-v1.123.456"))
  28. Expect(ps.Topic("channel-bits-events-v1", 123, 456, 789)).To(Equal("channel-bits-events-v1.123.456.789"))
  29. })
  30. })
  31. })
  32. Context("Connection", func() {
  33. var c *pubsub.Connection
  34. BeforeEach(func() {
  35. c = pubsub.NewConnection(url.URL{Scheme: "ws", Host: "example.com", Path: ""})
  36. })
  37. AfterEach(func() {
  38. c.Close()
  39. })
  40. Context("AddTopic", func() {
  41. It("add new topic", func() {
  42. Expect(c.TopicsCount()).To(Equal(0))
  43. Expect(c.Topics()).To(Equal([]string{}))
  44. c.AddTopic("community-points-channel-v1.1")
  45. Expect(c.TopicsCount()).To(Equal(1))
  46. Expect(c.Topics()).To(ContainElements(
  47. "community-points-channel-v1.1",
  48. ))
  49. c.AddTopic("community-points-channel-v1.2")
  50. Expect(c.TopicsCount()).To(Equal(2))
  51. Expect(c.Topics()).To(ContainElements(
  52. "community-points-channel-v1.1",
  53. "community-points-channel-v1.2",
  54. ))
  55. })
  56. It("not add the same topics", func() {
  57. Expect(c.TopicsCount()).To(Equal(0))
  58. Expect(c.Topics()).To(Equal([]string{}))
  59. c.AddTopic("community-points-channel-v1.1")
  60. Expect(c.TopicsCount()).To(Equal(1))
  61. Expect(c.Topics()).To(ContainElements(
  62. "community-points-channel-v1.1",
  63. ))
  64. c.AddTopic("community-points-channel-v1.1")
  65. Expect(c.TopicsCount()).To(Equal(1))
  66. Expect(c.Topics()).To(ContainElements(
  67. "community-points-channel-v1.1",
  68. ))
  69. })
  70. It("add not more than 50 topics", func() {
  71. Expect(c.TopicsCount()).To(Equal(0))
  72. Expect(c.Topics()).To(Equal([]string{}))
  73. for i := 1; i <= 60; i++ {
  74. c.AddTopic(fmt.Sprintf("community-points-channel-v1.%d", i))
  75. }
  76. Expect(c.TopicsCount()).To(Equal(50))
  77. })
  78. })
  79. Context("RemoveTopic", func() {
  80. It("remove topic", func() {
  81. Expect(c.TopicsCount()).To(Equal(0))
  82. Expect(c.Topics()).To(Equal([]string{}))
  83. c.AddTopic("community-points-channel-v1.1")
  84. Expect(c.TopicsCount()).To(Equal(1))
  85. Expect(c.Topics()).To(ContainElements(
  86. "community-points-channel-v1.1",
  87. ))
  88. c.RemoveTopic("community-points-channel-v1.1")
  89. Expect(c.TopicsCount()).To(Equal(0))
  90. Expect(c.Topics()).To(Equal([]string{}))
  91. })
  92. })
  93. Context("RemoveAllTopics", func() {
  94. It("remove all topic", func() {
  95. Expect(c.TopicsCount()).To(Equal(0))
  96. Expect(c.Topics()).To(Equal([]string{}))
  97. c.AddTopic("community-points-channel-v1.1")
  98. c.AddTopic("community-points-channel-v1.2")
  99. Expect(c.TopicsCount()).To(Equal(2))
  100. Expect(c.Topics()).To(ContainElements(
  101. "community-points-channel-v1.1",
  102. "community-points-channel-v1.2",
  103. ))
  104. c.RemoveAllTopics()
  105. Expect(c.TopicsCount()).To(Equal(0))
  106. Expect(c.Topics()).To(Equal([]string{}))
  107. })
  108. })
  109. Context("Topics", func() {
  110. It("return topics", func() {
  111. Expect(c.TopicsCount()).To(Equal(0))
  112. Expect(c.Topics()).To(Equal([]string{}))
  113. c.AddTopic("community-points-channel-v1.1")
  114. Expect(c.TopicsCount()).To(Equal(1))
  115. Expect(c.Topics()).To(ContainElements(
  116. "community-points-channel-v1.1",
  117. ))
  118. })
  119. })
  120. Context("HasTopic", func() {
  121. It("checks topics", func() {
  122. Expect(c.TopicsCount()).To(Equal(0))
  123. Expect(c.Topics()).To(Equal([]string{}))
  124. c.AddTopic("community-points-channel-v1.1")
  125. Expect(c.HasTopic("unknown")).To(BeFalse())
  126. Expect(c.HasTopic("community-points-channel-v1.1")).To(BeTrue())
  127. })
  128. })
  129. Context("TopicsCount", func() {
  130. It("return topics count", func() {
  131. Expect(c.TopicsCount()).To(Equal(0))
  132. c.AddTopic("community-points-channel-v1.1")
  133. Expect(c.TopicsCount()).To(Equal(1))
  134. c.AddTopic("community-points-channel-v1.2")
  135. Expect(c.TopicsCount()).To(Equal(2))
  136. })
  137. })
  138. })
  139. })
  140. func TestSuite(t *testing.T) {
  141. RegisterFailHandler(Fail)
  142. RunSpecs(t, "PubSub")
  143. }