diff --git a/Makefile b/Makefile index 8f9ee7c..7c655d0 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,7 @@ PROJECT_NUMBER=$(shell gcloud projects list --filter="project_id:$(PROJECT_ID)" FUNC_NAME=fetch ENTRY_POINT=Fetch TOPIC_NAME=$(FUNC_NAME)-topic -BUCKET_NAME=$(PROJECT_ID)-fetch +BUCKET_NAME=$(PROJECT_ID)-data-fetch # VERSION=$(shell git rev-parse --short HEAD) VERSION=$(shell git describe --abbrev=0 --tags) diff --git a/fetch_test.go b/fetch_test.go index bacc865..aed205d 100644 --- a/fetch_test.go +++ b/fetch_test.go @@ -14,53 +14,70 @@ import ( ) func TestRun(t *testing.T) { - test := NewTestFetch() - test.setup(t) - objPath := "api.github.com/users/github" - ctx := context.Background() - client, _ := storage.NewClient(ctx) + test := NewTestFetch(t) - // Get generation before send pubsub message. - var preGeneration int64 - rc, err := client.Bucket(os.Getenv("BUCKET_NAME")).Object(objPath).NewReader(ctx) - defer rc.Close() // nolint - if err == nil { - preGeneration = rc.Attrs.Generation - } + t.Run("single url", func(t *testing.T) { + objPath := "api.github.com/users/github" + pubsubData := "https://" + objPath + ctx := context.Background() - // Send pubsub message - if err := fetch.Run(ctx, test.event); err != nil { - assert.Fail(t, err.Error()) - } + // Send pubsub message1 + if err := fetch.Run(ctx, test.event(pubsubData)); err != nil { + assert.Fail(t, err.Error()) + } + reader1 := test.getObject(ctx, objPath) - // Get generation after send pubsub message. - rc2, err := client.Bucket(os.Getenv("BUCKET_NAME")).Object(objPath).NewReader(ctx) - defer rc.Close() // nolint - if err != nil { - assert.Fail(t, err.Error()) - } + // Send pubsub message2 + if err := fetch.Run(ctx, test.event(pubsubData)); err != nil { + assert.Fail(t, err.Error()) + } + reader2 := test.getObject(ctx, objPath) + + // Get generation after send pubsub message. + assert.NotEqual(t, reader1.Attrs.Generation, reader2.Attrs.Generation) + }) - assert.NotEqual(t, preGeneration, rc2.Attrs.Generation) + t.Run("multi url", func(t *testing.T) { + t.Skip() + // if got := add(tt.args.a, tt.args.b); got != tt.want { + // t.Errorf("add() = %v, want %v", got, tt.want) + // } + }) } type TestFetch struct { - event event.Event + t *testing.T } -func NewTestFetch() *TestFetch { - return &TestFetch{} +func NewTestFetch(t *testing.T) *TestFetch { + return &TestFetch{t} } -func (f *TestFetch) setup(t *testing.T) { +func (f *TestFetch) getObject(ctx context.Context, objPath string) *storage.Reader { + client, _ := storage.NewClient(ctx) + reader, err := client.Bucket(os.Getenv("BUCKET_NAME")).Object(objPath).NewReader(ctx) + defer func(rc *storage.Reader) { + err := rc.Close() + if err != nil { + assert.Fail(f.t, err.Error()) + } + }(reader) + if err != nil { + assert.Fail(f.t, err.Error()) + } + return reader +} + +func (f *TestFetch) event(data string) event.Event { msg := pubsub.MessagePublishedData{ Message: &pubsub.Message{ - Data: []byte("https://api.github.com/users/github"), + Data: []byte(data), }, } - - f.event = event.New() - f.event.SetDataContentType("application/json") - if err := f.event.SetData(f.event.DataContentType(), msg); err != nil { - assert.Fail(t, err.Error()) + e := event.New() + e.SetDataContentType("application/json") + if err := e.SetData(e.DataContentType(), msg); err != nil { + assert.Fail(f.t, err.Error()) } + return e }