2017-04-20 05:31:31 +03:00
// Copyright 2017 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package models
import (
"testing"
2021-09-19 14:49:59 +03:00
"code.gitea.io/gitea/models/db"
2021-11-09 22:57:58 +03:00
"code.gitea.io/gitea/models/unit"
2017-04-20 05:31:31 +03:00
"github.com/stretchr/testify/assert"
)
func TestIncreaseDownloadCount ( t * testing . T ) {
2021-09-19 14:49:59 +03:00
assert . NoError ( t , db . PrepareTestDatabase ( ) )
2017-04-20 05:31:31 +03:00
2017-04-30 09:30:12 +03:00
attachment , err := GetAttachmentByUUID ( "a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11" )
2017-04-20 05:31:31 +03:00
assert . NoError ( t , err )
assert . Equal ( t , int64 ( 0 ) , attachment . DownloadCount )
// increase download count
err = attachment . IncreaseDownloadCount ( )
assert . NoError ( t , err )
2017-04-30 09:30:12 +03:00
attachment , err = GetAttachmentByUUID ( "a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11" )
2017-04-20 05:31:31 +03:00
assert . NoError ( t , err )
assert . Equal ( t , int64 ( 1 ) , attachment . DownloadCount )
}
func TestGetByCommentOrIssueID ( t * testing . T ) {
2021-09-19 14:49:59 +03:00
assert . NoError ( t , db . PrepareTestDatabase ( ) )
2017-04-20 05:31:31 +03:00
// count of attachments from issue ID
attachments , err := GetAttachmentsByIssueID ( 1 )
assert . NoError ( t , err )
2021-06-07 08:27:09 +03:00
assert . Len ( t , attachments , 1 )
2017-04-20 05:31:31 +03:00
attachments , err = GetAttachmentsByCommentID ( 1 )
assert . NoError ( t , err )
2021-06-07 08:27:09 +03:00
assert . Len ( t , attachments , 2 )
2017-04-20 05:31:31 +03:00
}
func TestDeleteAttachments ( t * testing . T ) {
2021-09-19 14:49:59 +03:00
assert . NoError ( t , db . PrepareTestDatabase ( ) )
2017-04-20 05:31:31 +03:00
count , err := DeleteAttachmentsByIssue ( 4 , false )
assert . NoError ( t , err )
2020-01-05 02:20:08 +03:00
assert . Equal ( t , 2 , count )
2017-04-20 05:31:31 +03:00
count , err = DeleteAttachmentsByComment ( 2 , false )
assert . NoError ( t , err )
assert . Equal ( t , 2 , count )
err = DeleteAttachment ( & Attachment { ID : 8 } , false )
assert . NoError ( t , err )
2017-04-30 09:30:12 +03:00
attachment , err := GetAttachmentByUUID ( "a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a18" )
2017-04-20 05:31:31 +03:00
assert . Error ( t , err )
assert . True ( t , IsErrAttachmentNotExist ( err ) )
assert . Nil ( t , attachment )
}
2018-03-06 04:22:16 +03:00
func TestGetAttachmentByID ( t * testing . T ) {
2021-09-19 14:49:59 +03:00
assert . NoError ( t , db . PrepareTestDatabase ( ) )
2018-03-06 04:22:16 +03:00
attach , err := GetAttachmentByID ( 1 )
assert . NoError ( t , err )
assert . Equal ( t , "a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11" , attach . UUID )
}
func TestAttachment_DownloadURL ( t * testing . T ) {
attach := & Attachment {
UUID : "a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11" ,
ID : 1 ,
}
assert . Equal ( t , "https://try.gitea.io/attachments/a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11" , attach . DownloadURL ( ) )
}
func TestUpdateAttachment ( t * testing . T ) {
2021-09-19 14:49:59 +03:00
assert . NoError ( t , db . PrepareTestDatabase ( ) )
2018-03-06 04:22:16 +03:00
attach , err := GetAttachmentByID ( 1 )
assert . NoError ( t , err )
assert . Equal ( t , "a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11" , attach . UUID )
attach . Name = "new_name"
assert . NoError ( t , UpdateAttachment ( attach ) )
2021-09-19 14:49:59 +03:00
db . AssertExistsAndLoadBean ( t , & Attachment { Name : "new_name" } )
2018-03-06 04:22:16 +03:00
}
2019-12-11 03:01:52 +03:00
func TestGetAttachmentsByUUIDs ( t * testing . T ) {
2021-09-19 14:49:59 +03:00
assert . NoError ( t , db . PrepareTestDatabase ( ) )
2019-12-11 03:01:52 +03:00
2021-09-23 18:45:36 +03:00
attachList , err := GetAttachmentsByUUIDs ( db . DefaultContext , [ ] string { "a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11" , "a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a17" , "not-existing-uuid" } )
2019-12-11 03:01:52 +03:00
assert . NoError ( t , err )
2021-06-07 08:27:09 +03:00
assert . Len ( t , attachList , 2 )
2019-12-11 03:01:52 +03:00
assert . Equal ( t , "a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11" , attachList [ 0 ] . UUID )
assert . Equal ( t , "a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a17" , attachList [ 1 ] . UUID )
assert . Equal ( t , int64 ( 1 ) , attachList [ 0 ] . IssueID )
assert . Equal ( t , int64 ( 5 ) , attachList [ 1 ] . IssueID )
}
2020-01-05 02:20:08 +03:00
func TestLinkedRepository ( t * testing . T ) {
2021-09-19 14:49:59 +03:00
assert . NoError ( t , db . PrepareTestDatabase ( ) )
2020-01-05 02:20:08 +03:00
testCases := [ ] struct {
name string
attachID int64
expectedRepo * Repository
2021-11-09 22:57:58 +03:00
expectedUnitType unit . Type
2020-01-05 02:20:08 +03:00
} {
2021-11-09 22:57:58 +03:00
{ "LinkedIssue" , 1 , & Repository { ID : 1 } , unit . TypeIssues } ,
{ "LinkedComment" , 3 , & Repository { ID : 1 } , unit . TypePullRequests } ,
{ "LinkedRelease" , 9 , & Repository { ID : 1 } , unit . TypeReleases } ,
2020-01-05 02:20:08 +03:00
{ "Notlinked" , 10 , nil , - 1 } ,
}
for _ , tc := range testCases {
t . Run ( tc . name , func ( t * testing . T ) {
attach , err := GetAttachmentByID ( tc . attachID )
assert . NoError ( t , err )
repo , unitType , err := attach . LinkedRepository ( )
assert . NoError ( t , err )
if tc . expectedRepo != nil {
assert . Equal ( t , tc . expectedRepo . ID , repo . ID )
}
assert . Equal ( t , tc . expectedUnitType , unitType )
} )
}
}