package domain type MockShortRepo map[ShortURL]TargetURL func (sr MockShortRepo) GetTarget(su ShortURL) (tu TargetURL, err error) { tu, ok := sr[su] if !ok { err = MakeError(ShortNotFound, "") } return } type MockTargetRepo struct { Data map[TargetURL]ShortURL create bool } func (tr MockTargetRepo) GetShort(tu TargetURL) (su ShortURL, isNew bool, err error) { su, ok := tr.Data[tu] if ok { return } if tr.create { su = ShortURL{URL: tu.URL, target: tu} tr.Data[tu] = su isNew = true } else { err = MakeError(ShortNotCreated, "") } return } func MakeMockTargetRepo(create bool) MockTargetRepo { r := MockTargetRepo{ Data: make(map[TargetURL]ShortURL), create: create, } return r }