feat: require hospital code and add company APIs
This commit is contained in:
@@ -12,28 +12,25 @@ import (
|
||||
)
|
||||
|
||||
type fakeDatabaseResolver struct {
|
||||
defaultCode string
|
||||
resolvedCode string
|
||||
err error
|
||||
}
|
||||
|
||||
func (f *fakeDatabaseResolver) DefaultCode() string { return f.defaultCode }
|
||||
func (f *fakeDatabaseResolver) Resolve(_ context.Context, code string) (repository.MySQLLayananRepository, error) {
|
||||
f.resolvedCode = code
|
||||
return repository.MySQLLayananRepository{}, f.err
|
||||
}
|
||||
|
||||
func TestSelectDatabasePriorityAndDefault(t *testing.T) {
|
||||
func TestSelectDatabasePriority(t *testing.T) {
|
||||
tests := []struct {
|
||||
name, target, header, want string
|
||||
}{
|
||||
{name: "header", target: "/resource?kode_rs=QUERY", header: " rs_header ", want: "RS_HEADER"},
|
||||
{name: "query", target: "/resource?kode_rs=rs_query", want: "RS_QUERY"},
|
||||
{name: "default", target: "/resource", want: "AWALBROS_DEV"},
|
||||
}
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
resolver := &fakeDatabaseResolver{defaultCode: "AWALBROS_DEV"}
|
||||
resolver := &fakeDatabaseResolver{}
|
||||
next := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
if _, ok := selectedRepository(r.Context()); !ok {
|
||||
t.Fatal("selected repository missing from context")
|
||||
@@ -54,8 +51,23 @@ func TestSelectDatabasePriorityAndDefault(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestSelectDatabaseRequiresRSCode(t *testing.T) {
|
||||
resolver := &fakeDatabaseResolver{}
|
||||
request := httptest.NewRequest(http.MethodGet, "/resource", nil)
|
||||
recorder := httptest.NewRecorder()
|
||||
SelectDatabase(resolver, http.HandlerFunc(func(http.ResponseWriter, *http.Request) {
|
||||
t.Fatal("next handler should not be called")
|
||||
})).ServeHTTP(recorder, request)
|
||||
if recorder.Code != http.StatusUnprocessableEntity {
|
||||
t.Fatalf("status = %d, body=%s", recorder.Code, recorder.Body.String())
|
||||
}
|
||||
if resolver.resolvedCode != "" {
|
||||
t.Fatalf("resolver called with %q", resolver.resolvedCode)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSelectDatabaseUnknownCode(t *testing.T) {
|
||||
resolver := &fakeDatabaseResolver{defaultCode: "DEFAULT", err: databaseconfig.ErrSettingNotFound}
|
||||
resolver := &fakeDatabaseResolver{err: databaseconfig.ErrSettingNotFound}
|
||||
request := httptest.NewRequest(http.MethodGet, "/resource?kode_rs=unknown", nil)
|
||||
recorder := httptest.NewRecorder()
|
||||
SelectDatabase(resolver, http.HandlerFunc(func(http.ResponseWriter, *http.Request) {
|
||||
|
||||
Reference in New Issue
Block a user