|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- // Copyright 2017 Google LLC
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
-
- package firestore
-
- import (
- "testing"
-
- "github.com/golang/protobuf/proto"
-
- pb "google.golang.org/genproto/googleapis/firestore/v1beta1"
-
- "golang.org/x/net/context"
- )
-
- func TestDoc(t *testing.T) {
- coll := testClient.Collection("C")
- got := coll.Doc("d")
- want := &DocumentRef{
- Parent: coll,
- ID: "d",
- Path: "projects/projectID/databases/(default)/documents/C/d",
- }
- if !testEqual(got, want) {
- t.Errorf("got %+v, want %+v", got, want)
- }
- }
-
- func TestNewDoc(t *testing.T) {
- c := &Client{}
- coll := c.Collection("C")
- got := coll.NewDoc()
- if got.Parent != coll {
- t.Errorf("got %v, want %v", got.Parent, coll)
- }
- if len(got.ID) != 20 {
- t.Errorf("got %d-char ID, wanted 20", len(got.ID))
- }
-
- got2 := coll.NewDoc()
- if got.ID == got2.ID {
- t.Error("got same ID")
- }
- }
-
- func TestAdd(t *testing.T) {
- ctx := context.Background()
- c, srv := newMock(t)
- wantReq := commitRequestForSet()
- w := wantReq.Writes[0]
- w.CurrentDocument = &pb.Precondition{
- ConditionType: &pb.Precondition_Exists{false},
- }
- srv.addRPCAdjust(wantReq, commitResponseForSet, func(gotReq proto.Message) {
- // We can't know the doc ID before Add is called, so we take it from
- // the request.
- w.Operation.(*pb.Write_Update).Update.Name = gotReq.(*pb.CommitRequest).Writes[0].Operation.(*pb.Write_Update).Update.Name
- })
- _, wr, err := c.Collection("C").Add(ctx, testData)
- if err != nil {
- t.Fatal(err)
- }
- if !testEqual(wr, writeResultForSet) {
- t.Errorf("got %v, want %v", wr, writeResultForSet)
- }
- }
-
- func TestNilErrors(t *testing.T) {
- ctx := context.Background()
- c, _ := newMock(t)
- // Test that a nil CollectionRef results in a nil DocumentRef and errors
- // where possible.
- coll := c.Collection("a/b") // nil because "a/b" denotes a doc.
- if coll != nil {
- t.Fatal("collection not nil")
- }
- if got := coll.Doc("d"); got != nil {
- t.Fatalf("got %v, want nil", got)
- }
- if got := coll.NewDoc(); got != nil {
- t.Fatalf("got %v, want nil", got)
- }
- if _, _, err := coll.Add(ctx, testData); err != errNilDocRef {
- t.Fatalf("got <%v>, want <%v>", err, errNilDocRef)
- }
- }
|