public void WishlistSearchRequest_Instantiates_Properly(string text, int token) { var a = new WishlistSearchRequest(text, token); Assert.Equal(text, a.SearchText); Assert.Equal(token, a.Token); }
public void WishlistSearchRequest_Constructs_The_Correct_Message(string text, int token) { var a = new WishlistSearchRequest(text, token); var msg = a.ToByteArray(); var reader = new MessageReader <MessageCode.Server>(msg); var code = reader.ReadCode(); Assert.Equal(MessageCode.Server.WishlistSearch, code); Assert.Equal(4 + 4 + 4 + 4 + text.Length, msg.Length); Assert.Equal(token, reader.ReadInteger()); Assert.Equal(text, reader.ReadString()); }
public async Task <ApiResponse <List <Guid> > > PostAsync(WishlistSearchRequest searchRequest) { Validator.For(searchRequest, "searchRequest").IsNotNull(); Validator.For(searchRequest.TimeInterval, "TimeInterval").InRange(0, 30); Validator.For(searchRequest.MaxDistance, "MaxDistance").InRange(0, 1); if (searchRequest.Location != null) { Validator.For(searchRequest.Location.Latitude, "Latitude").InRange(-90, 90); Validator.For(searchRequest.Location.Longitude, "Longitude").InRange(-180, 180); } string path = "/pii/wishlistsearch"; using (var response = await Client.PostAsJsonAsync(path, searchRequest).ConfigureAwait(false)) { return(await response.Content.ReadAsAsync <ApiResponse <List <Guid> > >().ConfigureAwait(false)); } }
public async Task SearchAsync_Sends_WishlistSearchRequest_Given_Wishlist_Scope(string searchText, int token) { var expected = new WishlistSearchRequest(searchText, token).ToByteArray(); using (var cts = new CancellationTokenSource(1000)) { var conn = new Mock <IMessageConnection>(); conn.Setup(m => m.WriteAsync(It.IsAny <byte[]>(), It.IsAny <CancellationToken?>())) .Callback(() => cts.Cancel()); using (var s = new SoulseekClient(serverConnection: conn.Object)) { s.SetProperty("State", SoulseekClientStates.Connected | SoulseekClientStates.LoggedIn); await Record.ExceptionAsync(() => s.SearchAsync(SearchQuery.FromText(searchText), SearchScope.Wishlist, token, cancellationToken: cts.Token)); } conn.Verify(m => m.WriteAsync(It.Is <byte[]>(msg => msg.Matches(expected)), It.IsAny <CancellationToken?>()), Times.Once); } }