예제 #1
0
파일: apiai_test.go 프로젝트: apex/go-apex
func TestHandlerFunc_Handle(t *testing.T) {
	called := false

	fn := func(e *apiai.Event, c *apex.Context) (interface{}, error) {
		called = true

		assert.Equal(t, "9b49f2fb-fdd4-46f1-aa0d-7c4ed2caccdc", e.ID)
		assert.Equal(t, "7501656c-b86e-496f-ae03-c2c800b851ff", e.SessionID)
		assert.Equal(t, "2016-09-08T05:34:23.167Z", e.Timestamp)

		r := e.Result
		assert.Equal(t, "agent", r.Source)
		assert.Equal(t, "my name is Sam and I live in Paris", r.ResolvedQuery)
		assert.Equal(t, "", r.Action)
		assert.IsType(t, true, r.ActionIncomplete)
		assert.Equal(t, false, r.ActionIncomplete)

		assert.Equal(t, "Paris", r.Parameters["city"])
		assert.Equal(t, "Sam", r.Parameters["user_name"])

		ctx := r.Contexts
		assert.NotEmpty(t, ctx)

		grCtx := ctx[0]
		assert.NotEmpty(t, ctx[0])
		assert.Equal(t, "greetings", grCtx.Name)
		assert.IsType(t, 1, grCtx.Lifespan)
		assert.Equal(t, 5, grCtx.Lifespan)

		assert.Equal(t, "Paris", grCtx.Parameters["city"])
		assert.Equal(t, "Sam", grCtx.Parameters["user_name"])
		assert.Equal(t, "Paris", grCtx.Parameters["city.original"])
		assert.Equal(t, "Sam", grCtx.Parameters["user_name.original"])

		m := r.Metadata
		assert.Equal(t, "373a354b-c15a-4a60-ac9d-a9f2aee76cb4", m.IntentID)
		assert.Equal(t, "false", m.WebHookUsed)
		assert.Equal(t, "greetings", m.IntentName)

		f := r.Fulfillment
		assert.Equal(t, "Nice to meet you, Sam!", f.Speech)

		s := e.Status
		assert.IsType(t, 1, s.Code)
		assert.Equal(t, 200, s.Code)
		assert.Equal(t, "success", s.ErrorType)

		return nil, nil
	}

	_, err := apiai.HandlerFunc(fn).Handle(event, nil)
	assert.NoError(t, err)

	assert.True(t, called, "function never called")
}
예제 #2
0
파일: apiai_test.go 프로젝트: apex/go-apex
package apiai_test

import (
	"io/ioutil"
	"testing"

	"github.com/apex/go-apex"
	"github.com/apex/go-apex/apiai"
	"github.com/stretchr/testify/assert"
)

// HandlerFunc apex.Handler assertion.
var _ apex.Handler = apiai.HandlerFunc(func(event *apiai.Event, ctx *apex.Context) (interface{}, error) {
	return nil, nil
})

func fixture(path string) []byte {
	b, err := ioutil.ReadFile(path)
	if err != nil {
		panic(err)
	}

	return b
}

var event = []byte(`
{
  "id": "9b49f2fb-fdd4-46f1-aa0d-7c4ed2caccdc",
  "timestamp": "2016-09-08T05:34:23.167Z",
  "result": {
    "source": "agent",