2021-04-08 12:16:33 +02:00
|
|
|
package mocks
|
|
|
|
|
|
|
|
import (
|
2021-04-08 16:37:04 +02:00
|
|
|
"io/ioutil"
|
2021-04-08 12:16:33 +02:00
|
|
|
"net/http"
|
2021-04-09 21:00:54 +02:00
|
|
|
"strings"
|
|
|
|
"testing"
|
2021-04-08 12:16:33 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
// neat trick! https://medium.com/@matryer/meet-moq-easily-mock-interfaces-in-go-476444187d10
|
|
|
|
type RestClientMock struct {
|
2021-04-09 21:00:54 +02:00
|
|
|
GetFunc func(string) (*http.Response, error)
|
2021-04-08 12:16:33 +02:00
|
|
|
GetBodyFunc func(string) (string, error)
|
2021-04-09 21:00:54 +02:00
|
|
|
PostFunc func(string, string, string) error
|
2021-04-08 12:16:33 +02:00
|
|
|
}
|
|
|
|
|
2021-04-09 21:00:54 +02:00
|
|
|
// although these are still requied to match the rest.Client interface.
|
2021-04-08 12:16:33 +02:00
|
|
|
func (m *RestClientMock) Get(url string) (*http.Response, error) {
|
|
|
|
return m.GetFunc(url)
|
|
|
|
}
|
|
|
|
func (m *RestClientMock) GetBody(url string) (string, error) {
|
|
|
|
return m.GetBodyFunc(url)
|
|
|
|
}
|
|
|
|
|
2021-04-09 14:59:12 +02:00
|
|
|
func (m *RestClientMock) Post(url string, contentType string, body string) error {
|
|
|
|
return m.PostFunc(url, contentType, body)
|
|
|
|
}
|
|
|
|
|
2021-04-09 14:21:25 +02:00
|
|
|
func RelPathGetBodyFunc(t *testing.T, relPath string) func(string) (string, error) {
|
2021-04-09 10:12:14 +02:00
|
|
|
return func(url string) (string, error) {
|
|
|
|
// url: https://brainbaking.com/something-something.html
|
|
|
|
// want: ../../mocks/something-something.html
|
2021-04-09 14:21:25 +02:00
|
|
|
mockfile := relPath + strings.ReplaceAll(url, "https://brainbaking.com/", "")
|
2021-04-09 10:12:14 +02:00
|
|
|
html, err := ioutil.ReadFile(mockfile)
|
|
|
|
if err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
return string(html), nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-04-08 16:37:04 +02:00
|
|
|
func BodyFunc(t *testing.T, mockfile string) func(string) (string, error) {
|
|
|
|
html, err := ioutil.ReadFile(mockfile)
|
|
|
|
if err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
}
|
|
|
|
return func(url string) (string, error) {
|
|
|
|
return string(html), nil
|
|
|
|
}
|
|
|
|
}
|