Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The LUCI Authors. All rights reserved. | 1 // Copyright 2015 The LUCI Authors. All rights reserved. |
| 2 // Use of this source code is governed under the Apache License, Version 2.0 | 2 // Use of this source code is governed under the Apache License, Version 2.0 |
| 3 // that can be found in the LICENSE file. | 3 // that can be found in the LICENSE file. |
| 4 | 4 |
| 5 package memory | 5 package memory |
| 6 | 6 |
| 7 import ( | 7 import ( |
| 8 "errors" | 8 "errors" |
| 9 "fmt" | 9 "fmt" |
| 10 "testing" | 10 "testing" |
| (...skipping 713 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 724 m := Model{ID: 1} | 724 m := Model{ID: 1} |
| 725 So(ds.Put(c, &m), ShouldBeNil) | 725 So(ds.Put(c, &m), ShouldBeNil) |
| 726 | 726 |
| 727 // Reset to something non zero to ensure zero is fetched. | 727 // Reset to something non zero to ensure zero is fetched. |
| 728 m.Time = time.Now().UTC() | 728 m.Time = time.Now().UTC() |
| 729 So(ds.Get(c, &m), ShouldBeNil) | 729 So(ds.Get(c, &m), ShouldBeNil) |
| 730 So(m.Time.IsZero(), ShouldBeTrue) | 730 So(m.Time.IsZero(), ShouldBeTrue) |
| 731 }) | 731 }) |
| 732 } | 732 } |
| 733 | 733 |
| 734 // High level test for ancestor queries where the parent and child have | |
| 735 // identical fields. There was a bug where it would accidentally load the parent | |
| 736 // entity when attempt to query for the child. | |
| 737 func TestAncestorChildFieldQuery(t *testing.T) { | |
|
dnj
2016/11/20 16:44:25
Can this test be folded up into one of the "datast
| |
| 738 ctx := Use(context.Background()) | |
| 739 testable := ds.GetTestable(ctx) | |
| 740 testable.Consistent(true) | |
| 741 testable.AutoIndex(true) | |
| 742 | |
| 743 type Parent struct { | |
| 744 _ int64 `gae:"$id,1"` | |
| 745 Created time.Time | |
| 746 } | |
| 747 p := Parent{} | |
| 748 if err := ds.Put(ctx, &p); err != nil { | |
| 749 t.Fatal(err) | |
| 750 } | |
| 751 // If you comment out the .Order part below, the test succeeds | |
|
dnj
2016/11/20 16:44:25
This comment can be removed.
| |
| 752 q := ds.NewQuery("notParent").Ancestor(ds.KeyForObj(ctx, &p)).Order("-Cr eated") | |
| 753 if val, err := ds.Count(ctx, q); err != nil { | |
| 754 t.Fatal(err) | |
| 755 } else if val != 0 { | |
| 756 t.Fatalf("val: %d != 0", val) | |
| 757 } | |
| 758 } | |
| 759 | |
| 734 func TestNewDatastore(t *testing.T) { | 760 func TestNewDatastore(t *testing.T) { |
| 735 t.Parallel() | 761 t.Parallel() |
| 736 | 762 |
| 737 Convey("Can get and use a NewDatastore", t, func() { | 763 Convey("Can get and use a NewDatastore", t, func() { |
| 738 c := UseWithAppID(context.Background(), "dev~aid") | 764 c := UseWithAppID(context.Background(), "dev~aid") |
| 739 c = infoS.MustNamespace(c, "ns") | 765 c = infoS.MustNamespace(c, "ns") |
| 740 | 766 |
| 741 dsInst := NewDatastore(c, infoS.Raw(c)) | 767 dsInst := NewDatastore(c, infoS.Raw(c)) |
| 742 c = ds.SetRaw(c, dsInst) | 768 c = ds.SetRaw(c, dsInst) |
| 743 | 769 |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 808 // Add "foos" to a new namespace, then confirm that it g ets indexed. | 834 // Add "foos" to a new namespace, then confirm that it g ets indexed. |
| 809 So(ds.Put(infoS.MustNamespace(ctx, "qux"), foos), Should BeNil) | 835 So(ds.Put(infoS.MustNamespace(ctx, "qux"), foos), Should BeNil) |
| 810 ds.GetTestable(ctx).CatchupIndexes() | 836 ds.GetTestable(ctx).CatchupIndexes() |
| 811 | 837 |
| 812 results = nil | 838 results = nil |
| 813 So(ds.GetAll(infoS.MustNamespace(ctx, "qux"), q, &result s), ShouldBeNil) | 839 So(ds.GetAll(infoS.MustNamespace(ctx, "qux"), q, &result s), ShouldBeNil) |
| 814 So(len(results), ShouldEqual, 2) | 840 So(len(results), ShouldEqual, 2) |
| 815 }) | 841 }) |
| 816 }) | 842 }) |
| 817 } | 843 } |
| OLD | NEW |