Add e2e test
diff --git a/core/kg/app/app.go b/core/kg/app/app.go
index 5d5527b..0c65fc8 100644
--- a/core/kg/app/app.go
+++ b/core/kg/app/app.go
@@ -1,18 +1,17 @@
package app
import (
- "github.com/giolekva/pcloud/core/kg/log"
"github.com/giolekva/pcloud/core/kg/store"
)
// App represents an application layer of the kg
type App struct {
store store.Store
- logger *log.Logger
+ logger logger
}
// NewApp creates new app
-func NewApp(store store.Store, logger *log.Logger) *App {
+func NewApp(store store.Store, logger logger) *App {
return &App{
store: store,
logger: logger,
diff --git a/core/kg/app/app_mock.go b/core/kg/app/app_mock.go
new file mode 100644
index 0000000..f85e754
--- /dev/null
+++ b/core/kg/app/app_mock.go
@@ -0,0 +1,18 @@
+package app
+
+import (
+ "github.com/giolekva/pcloud/core/kg/log"
+ "github.com/giolekva/pcloud/core/kg/store/memory"
+)
+
+type MockApp struct {
+ *App
+}
+
+// NewTestApp creates app for testing
+func NewTestApp() *MockApp {
+ memStore := memory.New()
+ logger := &log.NoOpLogger{}
+ a := NewApp(memStore, logger)
+ return &MockApp{a}
+}
diff --git a/core/kg/app/interfaces.go b/core/kg/app/interfaces.go
new file mode 100644
index 0000000..53cb1aa
--- /dev/null
+++ b/core/kg/app/interfaces.go
@@ -0,0 +1,10 @@
+package app
+
+import "github.com/giolekva/pcloud/core/kg/log"
+
+type logger interface {
+ Debug(message string, fields ...log.Field)
+ Info(message string, fields ...log.Field)
+ Warn(message string, fields ...log.Field)
+ Error(message string, fields ...log.Field)
+}
diff --git a/core/kg/app/user.go b/core/kg/app/user.go
new file mode 100644
index 0000000..07ff301
--- /dev/null
+++ b/core/kg/app/user.go
@@ -0,0 +1,15 @@
+package app
+
+import (
+ "github.com/giolekva/pcloud/core/kg/model"
+ "github.com/pkg/errors"
+)
+
+// GetUser returns user
+func (a *App) GetUser(userID string) (*model.User, error) {
+ user, err := a.store.User().Get(userID)
+ if err != nil {
+ return nil, errors.Wrap(err, "can't get user from store")
+ }
+ return user, nil
+}