public void TestAssetDeleteRetry() { var data = new AssetData { Name = "testData" }; var fakeException = new WebException("test", WebExceptionStatus.ConnectionClosed); var dataContextMock = TestMediaServicesClassFactory.CreateSaveChangesMock(fakeException, 2, data); dataContextMock.Setup((ctxt) => ctxt.AttachTo("Assets", data)); dataContextMock.Setup((ctxt) => ctxt.DeleteObject(data)); _mediaContext.MediaServicesClassFactory = new TestMediaServicesClassFactory(dataContextMock.Object); data.SetMediaContext(_mediaContext); data.Delete(); dataContextMock.Verify((ctxt) => ctxt.SaveChangesAsync(data), Times.Exactly(2)); }
public void TestAssetDeleteRetry() { var dataContextMock = new Mock<IMediaDataServiceContext>(); int exceptionCount = 2; var asset = new AssetData { Name = "testData" }; var fakeResponse = new TestMediaDataServiceResponse { AsyncState = asset }; var fakeException = new WebException("test", WebExceptionStatus.ConnectionClosed); dataContextMock.Setup((ctxt) => ctxt.AttachTo("Assets", asset)); dataContextMock.Setup((ctxt) => ctxt.DeleteObject(asset)); dataContextMock.Setup((ctxt) => ctxt .SaveChangesAsync(asset)) .Returns(() => Task.Factory.StartNew<IMediaDataServiceResponse>(() => { if (--exceptionCount > 0) throw fakeException; return fakeResponse; })); _mediaContext.MediaServicesClassFactory = new TestMediaServicesClassFactory(dataContextMock.Object); asset.SetMediaContext(_mediaContext); asset.Delete(); Assert.AreEqual(0, exceptionCount); }