GetProjectTimes och tester till det
This commit is contained in:
parent
03f6edd320
commit
e7acfb37b1
2 changed files with 105 additions and 39 deletions
|
@ -39,7 +39,9 @@ type Database interface {
|
||||||
SignWeeklyReport(reportId int, projectManagerId int) error
|
SignWeeklyReport(reportId int, projectManagerId int) error
|
||||||
IsSiteAdmin(username string) (bool, error)
|
IsSiteAdmin(username string) (bool, error)
|
||||||
IsProjectManager(username string, projectname string) (bool, error)
|
IsProjectManager(username string, projectname string) (bool, error)
|
||||||
GetTotalTimePerActivity(projectName string) (map[string]int, error)
|
GetProjectTimes(projectName string) (map[string]int, error)
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// This struct is a wrapper type that holds the database connection
|
// This struct is a wrapper type that holds the database connection
|
||||||
|
@ -491,36 +493,36 @@ func (d *Db) MigrateSampleData() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Db) GetTotalTimePerActivity(projectName string) (map[string]int, error) {
|
// GetProjectTimes retrieves a map with times per "Activity" for a given project
|
||||||
|
func (d *Db) GetProjectTimes(projectName string) (map[string]int, error) {
|
||||||
query := `
|
query := `
|
||||||
SELECT development_time, meeting_time, admin_time, own_work_time, study_time, testing_time
|
SELECT development_time, meeting_time, admin_time, own_work_time, study_time, testing_time
|
||||||
FROM weekly_reports
|
FROM weekly_reports
|
||||||
JOIN projects ON weekly_reports.project_id = projects.id
|
JOIN projects ON weekly_reports.project_id = projects.id
|
||||||
WHERE projects.name = ?
|
WHERE projects.name = ?
|
||||||
`
|
`
|
||||||
|
|
||||||
rows, err := d.DB.Query(query, projectName)
|
rows, err := d.DB.Query(query, projectName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
defer rows.Close()
|
defer rows.Close()
|
||||||
|
|
||||||
totalTime := make(map[string]int)
|
totalTime := make(map[string]int)
|
||||||
|
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
var developmentTime, meetingTime, adminTime, ownWorkTime, studyTime, testingTime int
|
var developmentTime, meetingTime, adminTime, ownWorkTime, studyTime, testingTime int
|
||||||
if err := rows.Scan(&developmentTime, &meetingTime, &adminTime, &ownWorkTime, &studyTime, &testingTime); err != nil {
|
if err := rows.Scan(&developmentTime, &meetingTime, &adminTime, &ownWorkTime, &studyTime, &testingTime); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
totalTime["development"] += developmentTime
|
totalTime["development"] += developmentTime
|
||||||
totalTime["meeting"] += meetingTime
|
totalTime["meeting"] += meetingTime
|
||||||
totalTime["admin"] += adminTime
|
totalTime["admin"] += adminTime
|
||||||
totalTime["own_work"] += ownWorkTime
|
totalTime["own_work"] += ownWorkTime
|
||||||
totalTime["study"] += studyTime
|
totalTime["study"] += studyTime
|
||||||
totalTime["testing"] += testingTime
|
totalTime["testing"] += testingTime
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := rows.Err(); err != nil {
|
if err := rows.Err(); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
|
@ -729,27 +729,91 @@ func TestIsProjectManager(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetTotalTimePerActivity(t *testing.T) {
|
|
||||||
// Initialize your test database connection
|
|
||||||
db, err := setupState()
|
|
||||||
if err != nil {
|
|
||||||
t.Error("setupState failed:", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Run the query to get total time per activity
|
func TestGetProjectTimes(t *testing.T) {
|
||||||
totalTime, err := db.GetTotalTimePerActivity("projecttest")
|
// Initialize
|
||||||
if err != nil {
|
db, err := setupState()
|
||||||
t.Error("GetTotalTimePerActivity failed:", err)
|
if err != nil {
|
||||||
}
|
t.Error("setupState failed:", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// Check if the totalTime map is not nil
|
// Create a user
|
||||||
if totalTime == nil {
|
user := "TeaUser"
|
||||||
t.Error("Expected non-nil totalTime map, got nil")
|
password := "Vanilla"
|
||||||
}
|
err = db.AddUser(user, password)
|
||||||
|
if err != nil {
|
||||||
|
t.Error("AddUser failed:", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// ska lägga till fler assertions
|
// Create a project
|
||||||
|
projectName := "ProjectVanilla"
|
||||||
|
projectDescription := "When tea tastes its best"
|
||||||
|
err = db.AddProject(projectName, projectDescription, user) // Fix the variable name here
|
||||||
|
if err != nil {
|
||||||
|
t.Error("AddProject failed:", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tests the func in db.go
|
||||||
|
totalTime, err := db.GetProjectTimes(projectName)
|
||||||
|
if err != nil {
|
||||||
|
t.Error("GetTotalTimePerActivity failed:", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if the totalTime map is not nil
|
||||||
|
if totalTime == nil {
|
||||||
|
t.Error("Expected non-nil totalTime map, got nil")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Define the expected valeus
|
||||||
|
expectedTotalTime := map[string]int{
|
||||||
|
"development": 0,
|
||||||
|
"meeting": 0,
|
||||||
|
"admin": 0,
|
||||||
|
"own_work": 0,
|
||||||
|
"study": 0,
|
||||||
|
"testing": 0,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Compare the expectedTotalTime with the totalTime retrieved from the database
|
||||||
|
for activity, expectedTime := range expectedTotalTime {
|
||||||
|
if totalTime[activity] != expectedTime {
|
||||||
|
t.Errorf("Expected %s time to be %d, got %d", activity, expectedTime, totalTime[activity])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Insert some data into the database for different activities
|
||||||
|
err = db.AddWeeklyReport(projectName, user, 1, 1, 3, 2, 1, 4, 5)
|
||||||
|
if err != nil {
|
||||||
|
t.Error("Failed to insert data into the database:", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
newTotalTime, err := db.GetProjectTimes(projectName)
|
||||||
|
if err != nil {
|
||||||
|
t.Error("GetTotalTimePerActivity failed:", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
newExpectedTotalTime := map[string]int{
|
||||||
|
"development": 1,
|
||||||
|
"meeting": 3,
|
||||||
|
"admin": 2,
|
||||||
|
"own_work": 1,
|
||||||
|
"study": 4,
|
||||||
|
"testing": 5,
|
||||||
|
}
|
||||||
|
|
||||||
|
for activity, newExpectedTime := range newExpectedTotalTime {
|
||||||
|
if newTotalTime[activity] != newExpectedTime {
|
||||||
|
t.Errorf("Expected %s time to be %d, got %d", activity, newExpectedTime, newTotalTime[activity])
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestEnsureManagerOfCreatedProject(t *testing.T) {
|
func TestEnsureManagerOfCreatedProject(t *testing.T) {
|
||||||
db, err := setupState()
|
db, err := setupState()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in a new issue