2017-01-30 09:21:49 -05: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"
"github.com/stretchr/testify/assert"
)
func TestCreateOrUpdateIssueNotifications ( t * testing . T ) {
assert . NoError ( t , PrepareTestDatabase ( ) )
issue := AssertExistsAndLoadBean ( t , & Issue { ID : 1 } ) . ( * Issue )
assert . NoError ( t , CreateOrUpdateIssueNotifications ( issue , 2 ) )
2017-09-16 02:18:25 +02:00
// Two watchers are inactive, thus only notification for user 10 is created
notf := AssertExistsAndLoadBean ( t , & Notification { UserID : 10 , IssueID : issue . ID } ) . ( * Notification )
2017-01-30 09:21:49 -05:00
assert . Equal ( t , NotificationStatusUnread , notf . Status )
2017-02-07 06:47:55 -05:00
CheckConsistencyFor ( t , & Issue { ID : issue . ID } )
2017-01-30 09:21:49 -05:00
}
func TestNotificationsForUser ( t * testing . T ) {
assert . NoError ( t , PrepareTestDatabase ( ) )
user := AssertExistsAndLoadBean ( t , & User { ID : 2 } ) . ( * User )
statuses := [ ] NotificationStatus { NotificationStatusRead , NotificationStatusUnread }
notfs , err := NotificationsForUser ( user , statuses , 1 , 10 )
assert . NoError ( t , err )
2017-08-28 11:17:45 +02:00
if assert . Len ( t , notfs , 1 ) {
assert . EqualValues ( t , 2 , notfs [ 0 ] . ID )
assert . EqualValues ( t , user . ID , notfs [ 0 ] . UserID )
}
2017-01-30 09:21:49 -05:00
}
func TestNotification_GetRepo ( t * testing . T ) {
assert . NoError ( t , PrepareTestDatabase ( ) )
notf := AssertExistsAndLoadBean ( t , & Notification { RepoID : 1 } ) . ( * Notification )
repo , err := notf . GetRepo ( )
assert . NoError ( t , err )
assert . Equal ( t , repo , notf . Repository )
assert . EqualValues ( t , notf . RepoID , repo . ID )
}
func TestNotification_GetIssue ( t * testing . T ) {
assert . NoError ( t , PrepareTestDatabase ( ) )
notf := AssertExistsAndLoadBean ( t , & Notification { RepoID : 1 } ) . ( * Notification )
issue , err := notf . GetIssue ( )
assert . NoError ( t , err )
assert . Equal ( t , issue , notf . Issue )
assert . EqualValues ( t , notf . IssueID , issue . ID )
}
func TestGetNotificationCount ( t * testing . T ) {
assert . NoError ( t , PrepareTestDatabase ( ) )
user := AssertExistsAndLoadBean ( t , & User { ID : 2 } ) . ( * User )
cnt , err := GetNotificationCount ( user , NotificationStatusUnread )
assert . NoError ( t , err )
assert . EqualValues ( t , 0 , cnt )
cnt , err = GetNotificationCount ( user , NotificationStatusRead )
assert . NoError ( t , err )
assert . EqualValues ( t , 1 , cnt )
}
func TestSetNotificationStatus ( t * testing . T ) {
assert . NoError ( t , PrepareTestDatabase ( ) )
user := AssertExistsAndLoadBean ( t , & User { ID : 2 } ) . ( * User )
notf := AssertExistsAndLoadBean ( t ,
& Notification { UserID : user . ID , Status : NotificationStatusRead } ) . ( * Notification )
assert . NoError ( t , SetNotificationStatus ( notf . ID , user , NotificationStatusPinned ) )
AssertExistsAndLoadBean ( t ,
& Notification { ID : notf . ID , Status : NotificationStatusPinned } )
assert . Error ( t , SetNotificationStatus ( 1 , user , NotificationStatusRead ) )
assert . Error ( t , SetNotificationStatus ( NonexistentID , user , NotificationStatusRead ) )
}