GetTotalTimePerActivity och ett halvt test för den
This commit is contained in:
parent
45761dadcb
commit
bef8a6af85
2 changed files with 50 additions and 24 deletions
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue