From 9261f95e2e2d4cbe631b8dfe3b3759803a046679 Mon Sep 17 00:00:00 2001 From: regiluze Date: Sun, 2 Sep 2018 01:51:41 +0200 Subject: [PATCH] Add find Request by path and method --- service.go | 12 +++++++++++- service_test.go | 45 +++++++++++++++++++++++++++++++++------------ 2 files changed, 44 insertions(+), 13 deletions(-) diff --git a/service.go b/service.go index 6694d27..10e2870 100644 --- a/service.go +++ b/service.go @@ -12,6 +12,8 @@ func NewRequest(path string, method string, data map[string]string) Request { return request } +type compationFunc func(Request) bool + type Request struct { Path string Method string @@ -33,9 +35,17 @@ func (requestHub *RequestHub) Reset() { } func (requestHub RequestHub) Find_by_path(path string) []Request { + return requestHub.find_by(func(request Request) bool { return request.Path == path }) +} + +func (requestHub RequestHub) Find_by_path_and_method(path string, method string) []Request { + return requestHub.find_by(func(request Request) bool { return request.Path == path && request.Method == method }) +} + +func (requestHub RequestHub) find_by(compFunc compationFunc) []Request { matchRequests := requestHub.Requests[:0] for _, request := range requestHub.Requests { - if request.Path == path { + if compFunc(request) { matchRequests = append(matchRequests, request) } } diff --git a/service_test.go b/service_test.go index d4a6b81..a55a86d 100644 --- a/service_test.go +++ b/service_test.go @@ -44,20 +44,41 @@ var _ = Describe("Third party API double service specs", func() { Expect(requestHub.Requests).To(BeEmpty()) }) }) - Context("when finding the request by path", func() { - It("returns a slice of match requests", func() { - data := map[string]string{ - "data": "foo", - } - request1 := NewRequest("path1", "method", data) - request2 := NewRequest("path2", "method", data) - requestHub.Requests = append(requestHub.Requests, request1) - requestHub.Requests = append(requestHub.Requests, request2) + Context("when finding the request", func() { + Context("by path", func() { + It("returns a slice of requests with specific path", func() { + data := map[string]string{ + "data": "foo", + } + request1 := NewRequest("path1", "method", data) + request2 := NewRequest("path2", "method", data) + requestHub.Requests = append(requestHub.Requests, request1) + requestHub.Requests = append(requestHub.Requests, request2) + + requests := requestHub.Find_by_path("path1") + + Expect(requests).NotTo(BeEmpty()) + Expect(requests[0].Path).To(Equal("path1")) + }) + }) + Context("by path and method", func() { + It("returns a slice of requests with specific path and method", func() { + data := map[string]string{ + "data": "foo", + } + request1 := NewRequest("path1", "method", data) + request2 := NewRequest("path2", "method1", data) + request3 := NewRequest("path2", "method2", data) + requestHub.Requests = append(requestHub.Requests, request1) + requestHub.Requests = append(requestHub.Requests, request2) + requestHub.Requests = append(requestHub.Requests, request3) - requests := requestHub.Find_by_path("path1") + requests := requestHub.Find_by_path_and_method("path2", "method2") - Expect(requests).NotTo(BeEmpty()) - Expect(requests[0].Path).To(Equal("path1")) + Expect(requests).NotTo(BeEmpty()) + Expect(requests[0].Path).To(Equal("path2")) + Expect(requests[0].Method).To(Equal("method2")) + }) }) }) })