4652a15bab
* cards apis wip * create card API * validate cards when creating * create card fixes * patch card wip * wip * unit test for createCard; CardPatch2BlockPatch * unit test for PatchCard * more APIs * unit tests for GetCardByID * register GetCard API * Set FOCALBOARD_UNIT_TESTING for integration tests * integration tests for CreateCard * more integration tests for CreateCard * integtration tests for PatchCard * fix integration tests for PatchCard * integration tests for GetCard * GetCards API wip * fix merge conflict * GetCards API and unit tests * fix linter issues * fix flaky unit test for mySQL * Update server/api/api.go Co-authored-by: Miguel de la Cruz <mgdelacroix@gmail.com> * Update server/api/api.go Co-authored-by: Miguel de la Cruz <mgdelacroix@gmail.com> * address review comments Co-authored-by: Mattermod <mattermod@users.noreply.github.com> Co-authored-by: Miguel de la Cruz <mgdelacroix@gmail.com>
84 lines
2.4 KiB
Go
84 lines
2.4 KiB
Go
package model
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"github.com/mattermost/focalboard/server/utils"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestBlock2Card(t *testing.T) {
|
|
blockID := utils.NewID(utils.IDTypeCard)
|
|
boardID := utils.NewID(utils.IDTypeBoard)
|
|
userID := utils.NewID(utils.IDTypeUser)
|
|
now := utils.GetMillis()
|
|
|
|
var fields map[string]any
|
|
err := json.Unmarshal([]byte(sampleBlockFieldsJSON), &fields)
|
|
require.NoError(t, err)
|
|
|
|
block := &Block{
|
|
ID: blockID,
|
|
ParentID: boardID,
|
|
CreatedBy: userID,
|
|
ModifiedBy: userID,
|
|
Schema: 1,
|
|
Type: TypeCard,
|
|
Title: "My card title",
|
|
Fields: fields,
|
|
CreateAt: now,
|
|
UpdateAt: now,
|
|
DeleteAt: 0,
|
|
BoardID: boardID,
|
|
}
|
|
|
|
t.Run("Good block", func(t *testing.T) {
|
|
card, err := Block2Card(block)
|
|
require.NoError(t, err)
|
|
|
|
assert.Equal(t, block.ID, card.ID)
|
|
assert.Equal(t, []string{"acdxa8r8aht85pyoeuj1ed7tu8w", "73urm1huoupd4idzkdq5yaeuyay", "ay6sogs9owtd9xbyn49qt3395ko"}, card.ContentOrder)
|
|
assert.EqualValues(t, fields["icon"], card.Icon)
|
|
assert.EqualValues(t, fields["isTemplate"], card.IsTemplate)
|
|
assert.EqualValues(t, fields["properties"], card.Properties)
|
|
})
|
|
|
|
t.Run("Not a card", func(t *testing.T) {
|
|
blockNotCard := &Block{}
|
|
|
|
card, err := Block2Card(blockNotCard)
|
|
require.Error(t, err)
|
|
require.Nil(t, card)
|
|
})
|
|
}
|
|
|
|
const sampleBlockFieldsJSON = `
|
|
{
|
|
"contentOrder":[
|
|
"acdxa8r8aht85pyoeuj1ed7tu8w",
|
|
"73urm1huoupd4idzkdq5yaeuyay",
|
|
"ay6sogs9owtd9xbyn49qt3395ko"
|
|
],
|
|
"icon":"🎨",
|
|
"isTemplate":false,
|
|
"properties":{
|
|
"aa7swu9zz3ofdkcna3h867cum4y":"212-444-1234",
|
|
"af6fcbb8-ca56-4b73-83eb-37437b9a667d":"77c539af-309c-4db1-8329-d20ef7e9eacd",
|
|
"aiwt9ibi8jjrf9hzi1xzk8no8mo":"foo",
|
|
"aj65h4s6ghr6wgh3bnhqbzzmiaa":"77",
|
|
"ajy6xbebzopojaenbnmfpgtdwso":"{\"from\":1660046400000}",
|
|
"amc8wnk1xqj54rymkoqffhtw7ie":"zhqsoeqs1pg9i8gk81k9ryy83h",
|
|
"aooz77t119y7xtfmoyeiy4up75c":"someone@example.com",
|
|
"auskzaoaccsn55icuwarf4o3tfe":"https://www.google.com",
|
|
"aydsk41h6cs1z7nmghaw16jqcia":[
|
|
"aw565znut6zphbxqhbwyawiuggy",
|
|
"aefd3pxciomrkur4rc6smg1usoc",
|
|
"a6c96kwrqaskbtochq9wunmzweh",
|
|
"atyexeuq993fwwb84bxoqixxqqr"
|
|
],
|
|
"d6b1249b-bc18-45fc-889e-bec48fce80ef":"9a090e33-b110-4268-8909-132c5002c90e",
|
|
"d9725d14-d5a8-48e5-8de1-6f8c004a9680":"3245a32d-f688-463b-87f4-8e7142c1b397"
|
|
}
|
|
}`
|