package apidAnalytics

import (
	"net/http"
	"net/url"
	"strings"

	. "github.com/onsi/ginkgo"
	. "github.com/onsi/gomega"
)

// BeforeSuite setup and AfterSuite cleanup is in apidAnalytics_suite_test.go
var _ = Describe("testing saveAnalyticsRecord() directly", func() {

	Context("valid scopeuuid", func() {

		It("should successfully return", func() {

			uri, err := url.Parse(testServer.URL)
			uri.Path = analyticsBasePath

			v := url.Values{}
			v.Add("bundle_scope_uuid", "testid")

			client := &http.Client{}
			req, err := http.NewRequest("POST", uri.String(), strings.NewReader(v.Encode()))
			res, err := client.Do(req)
			defer res.Body.Close()
			Expect(err).ShouldNot(HaveOccurred())
			Expect(res.StatusCode, http.StatusOK)
		})
	})

	Context("invalid scopeuuid", func() {

		It("should return bad request", func() {
			uri, err := url.Parse(testServer.URL)
			uri.Path = analyticsBasePath

			v := url.Values{}
			v.Add("bundle_scope_uuid", "wrongId")

			client := &http.Client{}
			req, err := http.NewRequest("POST", uri.String(), strings.NewReader(v.Encode()))
			res, err := client.Do(req)
			defer res.Body.Close()
			Expect(err).ShouldNot(HaveOccurred())
			Expect(res.StatusCode, http.StatusBadRequest)
		})
	})
})
