1package authoring23import (4 "path/filepath"5 "strings"6 "testing"7)89func TestFeatureAdaptersRefuseSilentlyIncompleteResponses(t *testing.T) {10 project, err := LoadProject(filepath.Join("..", "..", "examples", "sample-region"+ProjectExtension))11 if err != nil {12 t.Fatal(err)13 }14 tests := []struct {15 adapter string16 body string17 mention string18 }{19 {20 adapter: "arcgis-feature-service",21 body: `{"type":"FeatureCollection","features":[],"exceededTransferLimit":true}`,22 mention: "transfer limit",23 },24 {25 adapter: "ogc-api-features",26 body: `{"type":"FeatureCollection","features":[],"numberReturned":0,"links":[{"rel":"next","href":"https://example.invalid/page/2"}]}`,27 mention: "next page",28 },29 {30 adapter: "ogc-api-features",31 body: `{"type":"FeatureCollection","features":[],"numberReturned":1}`,32 mention: "count differs",33 },34 {35 adapter: "ogc-api-features",36 body: `{"type":"FeatureCollection","features":[],"numberMatched":1,"numberReturned":0}`,37 mention: "incomplete",38 },39 }40 for _, test := range tests {41 t.Run(test.adapter+" "+test.mention, func(t *testing.T) {42 source := project.Sources[0]43 source.Adapter = test.adapter44 _, err := observe(project, 0, source, Capture{}, []byte(test.body))45 if err == nil || !strings.Contains(err.Error(), test.mention) {46 t.Fatalf("observe = %v, want %q", err, test.mention)47 }48 })49 }50}