private static byte GetFlagsValue(SubdocLookupFlags flags) { if (flags.HasFlag(SubdocLookupFlags.AccessDeleted) && !flags.HasFlag(SubdocLookupFlags.XattrPath)) { flags |= SubdocLookupFlags.XattrPath; } return((byte)flags); }
/// <summary> /// Checks for the existence of a given N1QL path. /// </summary> /// <param name="path">The path.</param> /// <param name="flags">The Subdoc flags.</param> /// <returns> /// A <see cref="T:Couchbase.Core.ILookupInBuilder`1" /> implementation reference for chaining operations. /// </returns> public ILookupInBuilder <TDocument> Exists(string path, SubdocLookupFlags flags) { _commands.Enqueue(new OperationSpec { Path = path, OpCode = OperationCode.SubExist, Flags = GetFlagsValue(flags) }); return(this); }
public void Exists_For_Xattr_Sets_Correct_Flag(SubdocLookupFlags flags, byte expected) { var mockResult = new Mock <IDocumentFragment <dynamic> >(); var mockedInvoker = new Mock <ISubdocInvoker>(); mockedInvoker.Setup(x => x.Invoke(It.IsAny <LookupInBuilder <dynamic> >())) .Returns(mockResult.Object); var lookupBuilder = new LookupInBuilder <dynamic>(mockedInvoker.Object, () => new DefaultSerializer(), "mykey"); var result = lookupBuilder.Exists("path", flags) .Execute(); Assert.AreSame(mockResult.Object, result); mockedInvoker.Verify( invoker => invoker.Invoke(It.Is <LookupInBuilder <dynamic> >( builder => builder.FirstSpec().OpCode == OperationCode.SubExist && builder.FirstSpec().Path == "path" && builder.FirstSpec().Flags == expected) ), Times.Once ); }