The backend for the AiteStory website
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

233 lines
3.8 KiB

7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
  1. package model
  2. import (
  3. "testing"
  4. "git.aiterp.net/AiteRP/aitestory/server"
  5. )
  6. func TestTag(t *testing.T) {
  7. if server.Main.Config.DB.Password == "" {
  8. t.Skip("No database password")
  9. return
  10. }
  11. var testTag *Tag
  12. name := "Te'Eryvi (Test)"
  13. id := ""
  14. t.Run("Insert", func(t *testing.T) {
  15. tag := Tag{}
  16. tag.Name = name
  17. tag.Type = "Organization"
  18. err := tag.Insert()
  19. if err != nil {
  20. t.Log("Failed to insert:", err)
  21. t.Fail()
  22. }
  23. id = tag.ID
  24. })
  25. t.Run("Insert_BadType", func(t *testing.T) {
  26. tag := Tag{}
  27. tag.Name = "Ehanis Tioran"
  28. tag.Type = "Karakter"
  29. err := tag.Insert()
  30. if err == nil {
  31. t.Log("Oops, it was inserted.")
  32. t.Fail()
  33. return
  34. }
  35. if err.Error() != `invalid tag type` {
  36. t.Log("Wrong error:", err)
  37. t.Fail()
  38. }
  39. })
  40. t.Run("Insert_BadName", func(t *testing.T) {
  41. tag := Tag{}
  42. tag.Name = ""
  43. tag.Type = "Character"
  44. err := tag.Insert()
  45. if err == nil {
  46. t.Log("Oops, it was inserted.")
  47. t.Fail()
  48. return
  49. }
  50. if err.Error() != `invalid length` {
  51. t.Log("Wrong error:", err)
  52. t.Fail()
  53. }
  54. })
  55. t.Run("List", func(t *testing.T) {
  56. tags, err := ListTags()
  57. if err != nil {
  58. t.Log("Failed to get tags:", err)
  59. t.Fail()
  60. }
  61. if len(tags) == 0 {
  62. t.Log("No tags found")
  63. t.Fail()
  64. }
  65. t.Logf("%d tags found", len(tags))
  66. found := false
  67. for _, tag := range tags {
  68. if tag.Name == name && tag.ID == id {
  69. t.Logf("Tag found: %+v", tag)
  70. found = true
  71. break
  72. }
  73. }
  74. if !found {
  75. t.Log("The tag inserted in last test wasn't found")
  76. t.Fail()
  77. }
  78. })
  79. t.Run("FindByID", func(t *testing.T) {
  80. tag, err := FindTag("id", id)
  81. if err != nil {
  82. t.Log("Failed to find tag:", err)
  83. t.Fail()
  84. }
  85. if tag == nil {
  86. t.Log("No tag found")
  87. t.Fail()
  88. return
  89. }
  90. t.Logf("Tag found: %+v", tag)
  91. if tag.Name != name || tag.ID != id {
  92. t.Error("Incorrect tag")
  93. t.Fail()
  94. }
  95. testTag = tag
  96. })
  97. t.Run("FindByName", func(t *testing.T) {
  98. tag, err := FindTag("name", name)
  99. if err != nil {
  100. t.Log("Failed to find tag:", err)
  101. t.Fail()
  102. }
  103. if tag == nil {
  104. t.Log("No tag found")
  105. t.Fail()
  106. return
  107. }
  108. t.Logf("Tag found: %+v", tag)
  109. if tag.Name != name || tag.ID != id {
  110. t.Error("Incorrect tag")
  111. t.Fail()
  112. }
  113. testTag = tag
  114. })
  115. t.Run("Update", func(t *testing.T) {
  116. if testTag == nil {
  117. t.Error("No tag to modify")
  118. t.Fail()
  119. return
  120. }
  121. testTag.Type = "Character"
  122. testTag.Name = "Urdnot Sild"
  123. err := testTag.Update()
  124. if err != nil {
  125. t.Error("Modify failed:", err)
  126. t.Fail()
  127. }
  128. tag, err := FindTag("name", name)
  129. if err != nil && err.Error() != "not found" {
  130. t.Log("Failed to get tags:", err)
  131. t.Fail()
  132. }
  133. if tag != nil {
  134. t.Log("Tag found by old name")
  135. t.Fail()
  136. return
  137. }
  138. name = testTag.Name
  139. })
  140. t.Run("FindByName", func(t *testing.T) {
  141. tag, err := FindTag("name", name)
  142. if err != nil {
  143. t.Log("Failed to get tags:", err)
  144. t.Fail()
  145. }
  146. if tag == nil {
  147. t.Log("No tag found")
  148. t.Fail()
  149. return
  150. }
  151. t.Logf("Tag found: %+v", tag)
  152. if tag.Name != name || tag.ID != id {
  153. t.Error("Incorrect tag")
  154. t.Fail()
  155. }
  156. })
  157. t.Run("EnsureTag", func(t *testing.T) {
  158. tag, err := EnsureTag("Character", "Renala T'Iavay (Test)")
  159. if err != nil {
  160. t.Error(err)
  161. return
  162. }
  163. err = tag.Delete()
  164. if err != nil {
  165. t.Error(err)
  166. return
  167. }
  168. if tag.ID == testTag.ID {
  169. t.Error("Ensured tag matched old tag")
  170. return
  171. }
  172. tag2, err := EnsureTag(testTag.Type, testTag.Name)
  173. if err != nil {
  174. t.Error(err)
  175. return
  176. }
  177. if tag2.ID != testTag.ID {
  178. t.Error("Second ensured tag did not match testTag")
  179. return
  180. }
  181. })
  182. t.Run("Delete", func(t *testing.T) {
  183. if testTag == nil {
  184. t.Error("No tag to delete")
  185. t.Fail()
  186. return
  187. }
  188. err := testTag.Delete()
  189. if err != nil {
  190. t.Error("Delete failed:", err)
  191. t.Fail()
  192. }
  193. })
  194. }