aboutsummaryrefslogtreecommitdiff
path: root/pkg/navitia_api_client
diff options
context:
space:
mode:
authorJulien Dessaux2021-05-04 15:50:49 +0200
committerJulien Dessaux2021-05-04 15:50:49 +0200
commitbb5b7dd3f5490c97e23c392a240face4f911e190 (patch)
treebff4c78d4b7ec758fb0cd2b3901cbb893c343e8a /pkg/navitia_api_client
parentCleaned the navitia - webui calls (diff)
downloadtrains-bb5b7dd3f5490c97e23c392a240face4f911e190.tar.gz
trains-bb5b7dd3f5490c97e23c392a240face4f911e190.tar.bz2
trains-bb5b7dd3f5490c97e23c392a240face4f911e190.zip
Reworked the navitia_api_client to be mockable
Diffstat (limited to '')
-rw-r--r--pkg/navitia_api_client/client.go12
-rw-r--r--pkg/navitia_api_client/client_test.go15
-rw-r--r--pkg/navitia_api_client/departures.go2
3 files changed, 13 insertions, 16 deletions
diff --git a/pkg/navitia_api_client/client.go b/pkg/navitia_api_client/client.go
index aef8d0e..71b82fe 100644
--- a/pkg/navitia_api_client/client.go
+++ b/pkg/navitia_api_client/client.go
@@ -5,9 +5,15 @@ import (
"net/http"
"sync"
"time"
+
+ "git.adyxax.org/adyxax/trains/pkg/model"
)
-type Client struct {
+type Client interface {
+ GetDepartures(trainStop string) (departures []model.Departure, err error)
+}
+
+type NavitiaClient struct {
baseURL string
httpClient *http.Client
@@ -20,8 +26,8 @@ type cachedResult struct {
result interface{}
}
-func NewClient(token string) *Client {
- return &Client{
+func NewClient(token string) Client {
+ return &NavitiaClient{
baseURL: fmt.Sprintf("https://%s@api.sncf.com/v1", token),
httpClient: &http.Client{
Timeout: time.Minute,
diff --git a/pkg/navitia_api_client/client_test.go b/pkg/navitia_api_client/client_test.go
index df23790..009712d 100644
--- a/pkg/navitia_api_client/client_test.go
+++ b/pkg/navitia_api_client/client_test.go
@@ -9,15 +9,15 @@ import (
)
// package utilities
-func newTestClient(ts *httptest.Server) *Client {
- return &Client{
+func newTestClient(ts *httptest.Server) *NavitiaClient {
+ return &NavitiaClient{
baseURL: fmt.Sprintf(ts.URL),
httpClient: ts.Client(),
cache: make(map[string]cachedResult),
}
}
-func newTestClientFromFilename(t *testing.T, filename string) (*Client, *httptest.Server) {
+func newTestClientFromFilename(t *testing.T, filename string) (*NavitiaClient, *httptest.Server) {
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
page, err := ioutil.ReadFile(filename)
if err != nil {
@@ -27,12 +27,3 @@ func newTestClientFromFilename(t *testing.T, filename string) (*Client, *httptes
}))
return newTestClient(ts), ts
}
-
-// tests
-func TestNewClient(t *testing.T) {
- client := NewClient("test")
- want := "https://test@api.sncf.com/v1"
- if client.baseURL != want {
- t.Fatal("Invalid new client")
- }
-}
diff --git a/pkg/navitia_api_client/departures.go b/pkg/navitia_api_client/departures.go
index 3b7053d..7447cdc 100644
--- a/pkg/navitia_api_client/departures.go
+++ b/pkg/navitia_api_client/departures.go
@@ -45,7 +45,7 @@ type DeparturesResponse struct {
} `json:"context"`
}
-func (c *Client) GetDepartures(trainStop string) (departures []model.Departure, err error) {
+func (c *NavitiaClient) GetDepartures(trainStop string) (departures []model.Departure, err error) {
request := fmt.Sprintf("%s/coverage/sncf/stop_areas/%s/departures", c.baseURL, trainStop)
start := time.Now()
c.mutex.Lock()