package middleware

import (
	"github.com/UpmeshLTD/urus-aio/infrastructure/logging/mocks"
	"github.com/UpmeshLTD/urus-aio/infrastructure/testing"
	"net/http"
	"net/http/httptest"

	"github.com/gin-gonic/gin"
	. "github.com/onsi/ginkgo/v2"
	. "github.com/onsi/gomega"
	"github.com/stretchr/testify/mock"
)

var _ = Describe("RequestLogging", func() {
	It("should log request", func() {
		w := httptest.NewRecorder()
		router := gin.Default()

		logged := false
		logger := &mocks.Logger{}

		logger.On("Infow", testing.MockAnythingSlice(17)...).Run(func(args mock.Arguments) {
			logged = true
		})
		router.Use(RequestLogging(logger))

		req, _ := http.NewRequest("GET", "/some-endpoint", nil)
		router.ServeHTTP(w, req)

		Expect(logged).Should(BeTrue())
	})
})
