chore: update book enabled status wiring

This commit is contained in:
2026-04-27 11:41:35 +08:00
parent 93bde0a6b6
commit 67c33d06be
25 changed files with 336 additions and 122 deletions

View File

@@ -13,12 +13,12 @@ import (
type BookAuthorApi struct{}
func (a *BookAuthorApi) CreateBookAuthor(c *gin.Context) {
var item book.BookAuthor
if err := c.ShouldBindJSON(&item); err != nil {
var req bookReq.CreateBookAuthorReq
if err := c.ShouldBindJSON(&req); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
if err := bookAuthorService.CreateBookAuthor(item); err != nil {
if err := bookAuthorService.CreateBookAuthor(req.ToModel()); err != nil {
global.GVA_LOG.Error("创建失败!", zap.Error(err))
response.FailWithMessage("创建失败", c)
return

View File

@@ -13,12 +13,12 @@ import (
type BookChapterApi struct{}
func (a *BookChapterApi) CreateBookChapter(c *gin.Context) {
var item book.BookChapter
if err := c.ShouldBindJSON(&item); err != nil {
var req bookReq.CreateBookChapterReq
if err := c.ShouldBindJSON(&req); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
if err := bookChapterService.CreateBookChapter(item); err != nil {
if err := bookChapterService.CreateBookChapter(req.ToModel()); err != nil {
global.GVA_LOG.Error("创建失败!", zap.Error(err))
response.FailWithMessage("创建失败", c)
return

View File

@@ -13,12 +13,12 @@ import (
type BookSeriesApi struct{}
func (a *BookSeriesApi) CreateBookSeries(c *gin.Context) {
var item book.BookSeries
if err := c.ShouldBindJSON(&item); err != nil {
var req bookReq.CreateBookSeriesReq
if err := c.ShouldBindJSON(&req); err != nil {
response.FailWithMessage(err.Error(), c)
return
}
if err := bookSeriesService.CreateBookSeries(item); err != nil {
if err := bookSeriesService.CreateBookSeries(req.ToModel()); err != nil {
global.GVA_LOG.Error("创建失败!", zap.Error(err))
response.FailWithMessage("创建失败", c)
return

View File

@@ -0,0 +1,76 @@
package book
import (
"bytes"
"net/http"
"net/http/httptest"
"testing"
"github.com/flipped-aurora/gin-vue-admin/server/global"
"github.com/flipped-aurora/gin-vue-admin/server/model/book"
"github.com/gin-gonic/gin"
"github.com/glebarez/sqlite"
"github.com/stretchr/testify/require"
"gorm.io/gorm"
)
func setupIsEnabledCreateAPITestDB(t *testing.T) {
t.Helper()
db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
require.NoError(t, err)
require.NoError(t, db.AutoMigrate(&book.BookAuthor{}, &book.BookSeries{}, &book.BookChapter{}))
global.GVA_DB = db
t.Cleanup(func() {
global.GVA_DB = nil
})
}
func postJSON(t *testing.T, body string, handler gin.HandlerFunc) {
t.Helper()
gin.SetMode(gin.TestMode)
w := httptest.NewRecorder()
ctx, _ := gin.CreateTestContext(w)
ctx.Request = httptest.NewRequest(http.MethodPost, "/book/create", bytes.NewBufferString(body))
ctx.Request.Header.Set("Content-Type", "application/json")
handler(ctx)
require.Equal(t, http.StatusOK, w.Code)
}
func TestCreateAPIDefaultsIsEnabledTrueAndPersistsExplicitFalse(t *testing.T) {
setupIsEnabledCreateAPITestDB(t)
postJSON(t, `{"name":"默认启用作者"}`, (&BookAuthorApi{}).CreateBookAuthor)
postJSON(t, `{"name":"显式禁用作者","isEnabled":false}`, (&BookAuthorApi{}).CreateBookAuthor)
postJSON(t, `{"name":"默认启用系列"}`, (&BookSeriesApi{}).CreateBookSeries)
postJSON(t, `{"name":"显式禁用系列","isEnabled":false}`, (&BookSeriesApi{}).CreateBookSeries)
postJSON(t, `{"bookId":1,"title":"默认启用章节","chapterNo":1,"contentFileUrl":"chapters/default.txt"}`, (&BookChapterApi{}).CreateBookChapter)
postJSON(t, `{"bookId":1,"title":"显式禁用章节","chapterNo":2,"contentFileUrl":"chapters/disabled.txt","isEnabled":false}`, (&BookChapterApi{}).CreateBookChapter)
var defaultAuthor book.BookAuthor
require.NoError(t, global.GVA_DB.Where("name = ?", "默认启用作者").First(&defaultAuthor).Error)
require.True(t, defaultAuthor.IsEnabled)
var disabledAuthor book.BookAuthor
require.NoError(t, global.GVA_DB.Where("name = ?", "显式禁用作者").First(&disabledAuthor).Error)
require.False(t, disabledAuthor.IsEnabled)
var defaultSeries book.BookSeries
require.NoError(t, global.GVA_DB.Where("name = ?", "默认启用系列").First(&defaultSeries).Error)
require.True(t, defaultSeries.IsEnabled)
var disabledSeries book.BookSeries
require.NoError(t, global.GVA_DB.Where("name = ?", "显式禁用系列").First(&disabledSeries).Error)
require.False(t, disabledSeries.IsEnabled)
var defaultChapter book.BookChapter
require.NoError(t, global.GVA_DB.Where("title = ?", "默认启用章节").First(&defaultChapter).Error)
require.True(t, defaultChapter.IsEnabled)
var disabledChapter book.BookChapter
require.NoError(t, global.GVA_DB.Where("title = ?", "显式禁用章节").First(&disabledChapter).Error)
require.False(t, disabledChapter.IsEnabled)
}