// Package that contains all api routes of this microservice
package http

import (
	"net/http"
	"testing"

	"github.com/genofire/hs_master-kss-monolith/lib/database"
	"github.com/genofire/hs_master-kss-monolith/models"
	"github.com/genofire/hs_master-kss-monolith/test"
)

// Function to test status()
func TestStatus(t *testing.T) {
	assertion, router := test.Init(t)

	BindAPI(router)
	session := test.NewSession(router)

	database.Write.Create(&models.Good{
		ProductID: 3,
		Position:  "regal 1",
	})
	database.Write.Create(&models.Good{
		ProductID: 3,
		Position:  "regal 2",
	})
	database.Write.Create(&models.Good{
		ProductID: 1,
		Position:  "regal 10",
	})

	r, w := session.JSONRequest("GET", "/api/status", nil)
	result := r.(map[string]interface{})
	assertion.Equal(http.StatusOK, w.StatusCode)
	assertion.Equal("running", result["status"])

	db := result["database"].(map[string]interface{})
	assertion.Equal(true, db["read"])
	assertion.Equal(true, db["write"])

	good := result["good"].(map[string]interface{})
	assertion.Equal(float64(3), good["count"])
	assertion.Equal(float64(1.5), good["avg"])

	test.Close()
}
