修改页面
This commit is contained in:
@@ -0,0 +1,122 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/inchstep/server/internal/models"
|
||||
"github.com/stretchr/testify/suite"
|
||||
)
|
||||
|
||||
type CheckInServiceTestSuite struct {
|
||||
ServiceTestSuite
|
||||
}
|
||||
|
||||
func TestCheckInServiceSuite(t *testing.T) {
|
||||
suite.Run(t, new(CheckInServiceTestSuite))
|
||||
}
|
||||
|
||||
func (s *CheckInServiceTestSuite) setupUser() string {
|
||||
user, err := s.svc.RegisterByPhone("13800138100")
|
||||
s.Require().NoError(err)
|
||||
return user.ID
|
||||
}
|
||||
|
||||
func (s *CheckInServiceTestSuite) TestCreateItem() {
|
||||
userID := s.setupUser()
|
||||
|
||||
item := &models.CheckInItem{
|
||||
Name: "每日阅读",
|
||||
Category: models.CategoryStudy,
|
||||
CycleType: models.CycleDaily,
|
||||
Privacy: models.PrivacyFriendsOnly,
|
||||
DailyGoal: strPtr("读30页"),
|
||||
}
|
||||
err := s.svcCk.CreateItem(userID, item)
|
||||
s.Require().NoError(err)
|
||||
s.NotEmpty(item.ID)
|
||||
s.Equal(models.StatusActive, item.Status)
|
||||
}
|
||||
|
||||
func (s *CheckInServiceTestSuite) TestGetUserItems() {
|
||||
userID := s.setupUser()
|
||||
|
||||
item1 := &models.CheckInItem{Name: "跑步", Category: models.CategoryHealth, CycleType: models.CycleDaily, Privacy: models.PrivacyFriendsOnly}
|
||||
item2 := &models.CheckInItem{Name: "冥想", Category: models.CategoryHabit, CycleType: models.CycleDaily, Privacy: models.PrivacyFriendsOnly}
|
||||
s.Require().NoError(s.svcCk.CreateItem(userID, item1))
|
||||
s.Require().NoError(s.svcCk.CreateItem(userID, item2))
|
||||
|
||||
items, err := s.svcCk.GetUserItems(userID)
|
||||
s.Require().NoError(err)
|
||||
s.Len(items, 2)
|
||||
}
|
||||
|
||||
func (s *CheckInServiceTestSuite) TestGetItemByID() {
|
||||
userID := s.setupUser()
|
||||
|
||||
item := &models.CheckInItem{Name: "写作", Category: models.CategoryHobby, CycleType: models.CycleDaily, Privacy: models.PrivacyPublic}
|
||||
s.Require().NoError(s.svcCk.CreateItem(userID, item))
|
||||
|
||||
found, err := s.svcCk.GetItemByID(item.ID, userID)
|
||||
s.Require().NoError(err)
|
||||
s.Equal("写作", found.Name)
|
||||
}
|
||||
|
||||
func (s *CheckInServiceTestSuite) TestGetItemByID_WrongUser() {
|
||||
userID1 := s.setupUser()
|
||||
userID2, _ := s.svc.RegisterByPhone("13800138101")
|
||||
s.Require().NotNil(userID2)
|
||||
|
||||
item := &models.CheckInItem{Name: "日记", Category: models.CategoryHabit, CycleType: models.CycleDaily, Privacy: models.PrivacyPrivate}
|
||||
s.Require().NoError(s.svcCk.CreateItem(userID1, item))
|
||||
|
||||
_, err := s.svcCk.GetItemByID(item.ID, userID2.ID)
|
||||
s.Error(err) // should fail - wrong user
|
||||
}
|
||||
|
||||
func (s *CheckInServiceTestSuite) TestPauseAndResumeItem() {
|
||||
userID := s.setupUser()
|
||||
|
||||
item := &models.CheckInItem{Name: "瑜伽", Category: models.CategoryHealth, CycleType: models.CycleDaily, Privacy: models.PrivacyPrivate}
|
||||
s.Require().NoError(s.svcCk.CreateItem(userID, item))
|
||||
|
||||
err := s.svcCk.PauseItem(item.ID, userID)
|
||||
s.Require().NoError(err)
|
||||
|
||||
paused, err := s.svcCk.GetItemByID(item.ID, userID)
|
||||
s.Require().NoError(err)
|
||||
s.Equal(models.StatusPaused, paused.Status)
|
||||
|
||||
err = s.svcCk.ResumeItem(item.ID, userID)
|
||||
s.Require().NoError(err)
|
||||
|
||||
resumed, err := s.svcCk.GetItemByID(item.ID, userID)
|
||||
s.Require().NoError(err)
|
||||
s.Equal(models.StatusActive, resumed.Status)
|
||||
}
|
||||
|
||||
func (s *CheckInServiceTestSuite) TestCreateRecord() {
|
||||
userID := s.setupUser()
|
||||
|
||||
item := &models.CheckInItem{Name: "背单词", Category: models.CategoryStudy, CycleType: models.CycleDaily, Privacy: models.PrivacyPrivate}
|
||||
s.Require().NoError(s.svcCk.CreateItem(userID, item))
|
||||
|
||||
record, err := s.svcCk.CreateRecord(userID, item.ID, time.Now(), strPtr("背了50个"), nil)
|
||||
s.Require().NoError(err)
|
||||
s.NotEmpty(record.ID)
|
||||
s.Equal(models.RecordNormal, record.Status)
|
||||
}
|
||||
|
||||
func (s *CheckInServiceTestSuite) TestCreateRecord_DuplicateDate() {
|
||||
userID := s.setupUser()
|
||||
|
||||
item := &models.CheckInItem{Name: "喝水", Category: models.CategoryHealth, CycleType: models.CycleDaily, Privacy: models.PrivacyPrivate}
|
||||
s.Require().NoError(s.svcCk.CreateItem(userID, item))
|
||||
|
||||
_, err := s.svcCk.CreateRecord(userID, item.ID, time.Now(), nil, nil)
|
||||
s.Require().NoError(err)
|
||||
|
||||
_, err = s.svcCk.CreateRecord(userID, item.ID, time.Now(), nil, nil)
|
||||
s.Error(err)
|
||||
s.Contains(err.Error(), "已打卡")
|
||||
}
|
||||
Reference in New Issue
Block a user