public void DestroyStatus_Throws_On_Null_ID() { string id = string.Empty; var authMock = new Mock<ITwitterAuthorizer>(); var execMock = new Mock<ITwitterExecute>(); execMock.SetupGet(exec => exec.AuthorizedClient).Returns(authMock.Object); execMock.Setup(exec => exec.PostToTwitter( It.IsAny<string>(), It.IsAny<Dictionary<string, string>>(), It.IsAny<Func<string, Status>>())) .Returns(SingleStatusResponse); var ctx = new TwitterContext(authMock.Object, execMock.Object, "", ""); var ex = Assert.Throws<ArgumentException>(() => ctx.DestroyStatus(id)); Assert.Equal("id", ex.ParamName); }
/// <summary> /// shows how to delete a status /// </summary> /// <param name="twitterCtx">TwitterContext</param> private static void DestroyStatusDemo(TwitterContext twitterCtx) { var status = twitterCtx.DestroyStatus("280433519057068033"); Console.WriteLine( "(" + status.StatusID + ")" + "[" + status.User.ID + "]" + status.User.Name + ", " + status.Text + ", " + status.CreatedAt); }
public void DestroyStatus_Sets_ID() { const string Id = "184835136037191681"; string expectedStatusID = "184835136037191681"; var authMock = new Mock<ITwitterAuthorizer>(); var execMock = new Mock<ITwitterExecute>(); execMock.SetupGet(exec => exec.AuthorizedClient).Returns(authMock.Object); execMock.Setup(exec => exec.PostToTwitter( It.IsAny<string>(), It.IsAny<Dictionary<string, string>>(), It.IsAny<Func<string, Status>>())) .Returns(SingleStatusResponse); var ctx = new TwitterContext(authMock.Object, execMock.Object, "", ""); Status actual = ctx.DestroyStatus(Id); Assert.Equal(expectedStatusID, actual.StatusID); }
//We start multiple actions in parallel to delete tweets void EraseTweetsAction(TwitterContext ctx, CancellationToken cancelToken) { int nextTweetID = getNextTweetIDSync(); #if DEBUG Random rnd = new Random(); #endif //Are we done? while (nextTweetID != Int32.MinValue) { //We can't cancel here, we have already fetched a new ID and if we cancel here it will never be deteled Tweet tweet = tweets[nextTweetID]; //Clear Tweets logic here try { #if DEBUG Thread.Sleep(sleepFakeWaitMilliseconds); if (rnd.Next() % 3 == 0) // Simulate error { throw new ArgumentNullException(); } else { throw new Exception("Sorry, that page does not exist"); } #else Status ret = ctx.DestroyStatus(tweet.ID); #endif tweet.Status = STATUS_DELETED; } catch (Exception ex) { if (ex.Message.Contains("Sorry, that page does not exist")) tweet.Status = STATUS_NOT_FOUND; else if (ex.Message.Contains("You may not delete another user's status")) tweet.Status = STATUS_NOT_ALLOWED; else { tweet.Status = STATUS_ERROR; var tmp = new tweetTJson() { created_at = tweet.Date.ToString("yyyy-MM-dd H:m:s zzz"), id_str = tweet.ID, text = tweet.Text }; lock (_lockerNotDeletedTweetsLst) { notDeletedTweets.Add(tmp); } } } onDeletingTweetUIUpdate(tweet); //We cancel once a tweet is completely handeled, we make sure not to request for a new one if (cancelToken.IsCancellationRequested) return; nextTweetID = getNextTweetIDSync(); } }