orm_test.go 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. package orm
  2. import (
  3. "testing"
  4. "time"
  5. "github.com/jinzhu/gorm"
  6. "github.com/remogatto/prettytest"
  7. )
  8. type testSuite struct {
  9. prettytest.Suite
  10. }
  11. func TestRunner(t *testing.T) {
  12. prettytest.Run(
  13. t,
  14. new(testSuite),
  15. )
  16. }
  17. func (t *testSuite) BeforeAll() {
  18. var (
  19. db *gorm.DB
  20. err error
  21. )
  22. connected := false
  23. for !connected {
  24. time.Sleep(10 * time.Second)
  25. db, err = New("karmen:karmen@/karmen_test?charset=utf8&parseTime=True&loc=Local")
  26. if err != nil {
  27. time.Sleep(5 * time.Second)
  28. continue
  29. }
  30. connected = true
  31. }
  32. Use(db)
  33. AutoMigrate()
  34. }
  35. func (t *testSuite) TestDB() {
  36. t.Not(t.Nil(DB()))
  37. }
  38. func (t *testSuite) TestGetActivityAll() {
  39. activity, err := GetActivityAll(map[string]string{"id": "1"})
  40. t.Nil(err)
  41. if !t.Failed() {
  42. t.Equal("Amilcare", activity.(*Activity).Teacher.Name)
  43. }
  44. }
  45. func (t *testSuite) TestGetActivityForUpdate() {
  46. data, err := GetActivityForUpdate(map[string]string{"id": "1"})
  47. t.Nil(err)
  48. if !t.Failed() {
  49. t.Equal("Amilcare", data.(ActivityForUpdate).Activity.Teacher.Name)
  50. t.Equal("1 A", data.(ActivityForUpdate).AllClasses[0].Name)
  51. t.Equal("ITALIANO", data.(ActivityForUpdate).AllSubjects[1].Name)
  52. t.Equal("Costanza", data.(ActivityForUpdate).AllTeachers[2].Name)
  53. }
  54. }
  55. func (t *testSuite) TestSaveActivity() {
  56. activity, err := GetActivity(map[string]string{"id": "1"})
  57. t.Nil(err)
  58. t.Equal("1 A MATEMATICA 2h", activity.(*Activity).Name)
  59. activity.(*Activity).SubjectID = 2
  60. _, err = SaveActivity(activity)
  61. t.Nil(err)
  62. if !t.Failed() {
  63. activity, _ = GetActivity(map[string]string{"id": "1"})
  64. t.Equal("Roberto", activity.(*Activity).Name)
  65. }
  66. }
  67. func (t *testSuite) TestGetTeacher() {
  68. teacher, err := GetTeacher(map[string]string{"id": "1"})
  69. t.Nil(err)
  70. if !t.Failed() {
  71. t.Equal("Amilcare", teacher.(*Teacher).Name)
  72. t.Equal("AGOSTINO", teacher.(*Teacher).Surname)
  73. }
  74. }
  75. func (t *testSuite) TestGetTeachers() {
  76. teachers, err := GetTeachers(map[string]string{})
  77. t.Nil(err)
  78. t.Equal(9, len(teachers.([]*Teacher)))
  79. teacher := teachers.([]*Teacher)[0]
  80. classes, err := teacher.GetClasses()
  81. t.Nil(err)
  82. t.Equal(1, len(classes))
  83. t.Equal(1, len(teacher.Classes))
  84. class := classes[0]
  85. t.Equal("1 A", class.Name)
  86. }
  87. func (t *testSuite) TestGetTeachersAll() {
  88. teachers, err := GetTeachersAll(map[string]string{})
  89. t.Nil(err)
  90. t.Equal(9, len(teachers.([]*Teacher)))
  91. t.Equal("1 A", teachers.([]*Teacher)[0].Classes[0].Name)
  92. t.Equal("MATEMATICA", teachers.([]*Teacher)[0].Subjects[0].Name)
  93. }
  94. func (t *testSuite) TestGetTeacherActivitiesByClass() {
  95. teacher, err := GetTeacher(map[string]string{"id": "1"})
  96. t.Nil(err)
  97. if !t.Failed() {
  98. _, err := teacher.(*Teacher).GetActivitiesByClass("1")
  99. t.Nil(err)
  100. if !t.Failed() {
  101. t.True(len(teacher.(*Teacher).Activities) > 0)
  102. }
  103. }
  104. }
  105. func (t *testSuite) TestGetClasses() {
  106. classes, err := GetClasses()
  107. t.Nil(err)
  108. t.Equal(1, len(classes))
  109. class := classes[0]
  110. teachers, err := class.GetTeachers()
  111. t.Nil(err)
  112. t.Equal(9, len(teachers))
  113. t.Equal(9, len(class.Teachers))
  114. teacher := teachers[0]
  115. t.Equal("AGOSTINO", teacher.Surname)
  116. classes, err = GetClassesAll()
  117. t.True(len(classes[0].Teachers) > 0)
  118. if !t.Failed() {
  119. t.Equal("AGOSTINO", classes[0].Teachers[0].Surname)
  120. }
  121. }
  122. func (t *testSuite) TestGetClass() {
  123. class, err := GetClass("1")
  124. t.Nil(err)
  125. if !t.Failed() {
  126. t.Equal("1 A", class.Name)
  127. // Test teachers
  128. t.True(len(class.Teachers) > 0)
  129. t.Equal("AGOSTINO", class.Teachers[0].Surname)
  130. t.Equal("PETRUZZELLI", class.Teachers[8].Surname)
  131. t.Equal("LUNGA", class.Coordinator.Surname)
  132. t.Equal("DONADONI", class.Minuter.Surname)
  133. // Test activities
  134. t.True(len(class.Activities) > 0)
  135. t.Equal("1 A MATEMATICA 2h", class.Activities[0].Name)
  136. t.Equal("AGOSTINO", class.Activities[0].Teacher.Surname)
  137. t.Equal("MATEMATICA", class.Activities[0].Subject.Name)
  138. t.Equal(2, class.Activities[0].Hours)
  139. }
  140. }
  141. func (t *testSuite) TestSaveTeacher() {
  142. teacher, err := GetTeacher(map[string]string{"id": "1"})
  143. t.Nil(err)
  144. teacher.(*Teacher).Name = "Roberto"
  145. _, err = SaveTeacher(teacher)
  146. t.Nil(err)
  147. if !t.Failed() {
  148. teacher, _ = GetTeacher(map[string]string{"id": "1"})
  149. t.Equal("Roberto", teacher.(*Teacher).Name)
  150. }
  151. }
  152. func (t *testSuite) TestCreateDeleteTeacher() {
  153. teacher := new(Teacher)
  154. teacher.Name = "Giovanni"
  155. teacher.Surname = "Giacobbe"
  156. _, err := CreateTeacher(teacher)
  157. t.Nil(err)
  158. if !t.Failed() {
  159. teacherFromDb, _ := GetTeacher(map[string]string{"id": "10"})
  160. t.Equal("Giovanni", teacherFromDb.(*Teacher).Name)
  161. err := DeleteTeacher(teacherFromDb.(*Teacher))
  162. t.Nil(err)
  163. teachers, _ := GetTeachers(map[string]string{})
  164. t.Equal(9, len(teachers.([]*Teacher)))
  165. }
  166. }