GetTotalTimePerActivity och ett halvt test för den

This commit is contained in:
Melker 2024-03-20 17:40:10 +01:00
parent 45761dadcb
commit bef8a6af85
2 changed files with 50 additions and 24 deletions

View file

@ -39,6 +39,9 @@ type Database interface {
SignWeeklyReport(reportId int, projectManagerId int) error
IsSiteAdmin(username string) (bool, error)
IsProjectManager(username string, projectname string) (bool, error)
GetTotalTimePerActivity(projectName string) (map[string]int, error)
}
// This struct is a wrapper type that holds the database connection
@ -519,3 +522,41 @@ func (d *Db) MigrateSampleData() error {
return nil
}
func (d *Db) GetTotalTimePerActivity(projectName string) (map[string]int, error) {
query := `
SELECT development_time, meeting_time, admin_time, own_work_time, study_time, testing_time
FROM weekly_reports
JOIN projects ON weekly_reports.project_id = projects.id
WHERE projects.name = ?
`
rows, err := d.DB.Query(query, projectName)
if err != nil {
return nil, err
}
defer rows.Close()
totalTime := make(map[string]int)
for rows.Next() {
var developmentTime, meetingTime, adminTime, ownWorkTime, studyTime, testingTime int
if err := rows.Scan(&developmentTime, &meetingTime, &adminTime, &ownWorkTime, &studyTime, &testingTime); err != nil {
return nil, err
}
totalTime["development"] += developmentTime
totalTime["meeting"] += meetingTime
totalTime["admin"] += adminTime
totalTime["own_work"] += ownWorkTime
totalTime["study"] += studyTime
totalTime["testing"] += testingTime
}
if err := rows.Err(); err != nil {
return nil, err
}
return totalTime, nil
}

View file

@ -676,38 +676,23 @@ func TestIsProjectManager(t *testing.T) {
}
}
func TestChangeUserName(t *testing.T) {
func TestGetTotalTimePerActivity(t *testing.T) {
// Initialize your test database connection
db, err := setupState()
if err != nil {
t.Error("setupState failed:", err)
}
// Add a user
err = db.AddUser("testuser", "password")
// Run the query to get total time per activity
totalTime, err := db.GetTotalTimePerActivity("projecttest")
if err != nil {
t.Error("AddUser failed:", err)
t.Error("GetTotalTimePerActivity failed:", err)
}
// Change the user's name
err = db.ChangeUserName("testuser", "newname")
if err != nil {
t.Error("ChangeUserName failed:", err)
// Check if the totalTime map is not nil
if totalTime == nil {
t.Error("Expected non-nil totalTime map, got nil")
}
// Retrieve the user's ID
userID, err := db.GetUserId("newname")
if err != nil {
t.Error("GetUserId failed:", err)
}
// Ensure the user's ID matches the expected value
if userID != 1 {
t.Errorf("Expected user ID to be 1, got %d", userID)
}
// Attempt to retrieve the user by the old name
_, err = db.GetUserId("testuser")
if err == nil {
t.Error("Expected GetUserId to fail for the old name, but it didn't")
}
// ska lägga till fler assertions
}