public void TransactionCannotBeUsedAfterBeingCommitted() { var control = PipelineTestHelper.TransactionControlMock(); var sut = new DeferredPipelineTransaction(control.Object); sut.Commit(); Assert.Throws <InvalidOperationException>(() => sut.Update(1.AsPipelineConstant(), () => true)); Assert.Throws <InvalidOperationException>(() => sut.Commit()); Assert.Throws <InvalidOperationException>(() => sut.Cancel()); }
public void ControlIsCalledOnCommitWithTheExpectedStage() { var value = PipelineTestHelper.Assignable(1); var control = PipelineTestHelper.TransactionControlMock(); var sut = new DeferredPipelineTransaction(control.Object) .Update(value, 2); control.Setup(mock => mock.Commit( It.IsAny <DeferredPipelineTransaction>(), It.IsAny <IEnumerable <DeferredTransactionPart> >())) .Callback <DeferredPipelineTransaction, IEnumerable <DeferredTransactionPart> >((a, b) => Assert.IsTrue(a == sut && b.Count() == 1 && b.First().Stage == value)); sut.Commit(); }
public void TransactionDoesNothingBeforeCommit() { var value = PipelineTestHelper.Assignable(1); var test = value.AttachTestStage(); var control = PipelineTestHelper.TransactionControlMock(); control.Setup(mock => mock.Commit(It.IsAny <DeferredPipelineTransaction>(), It.IsAny <IEnumerable <DeferredTransactionPart> >())) .Callback(new Action <DeferredPipelineTransaction, IEnumerable <DeferredTransactionPart> >((a, b) => { var c = new AggregatingTransactionControl(); c.Register(a); c.Commit(a, b); })); var sut = new DeferredPipelineTransaction(control.Object) .Update(value, 2); control.Verify(mock => mock.Commit(It.IsAny <DeferredPipelineTransaction>(), It.IsAny <IEnumerable <DeferredTransactionPart> >()), Times.Never); PipelineAssert.Value(value, 1); test.AssertNotInvalidatedNorRetrieved(); sut.Commit(); control.Verify(mock => mock.Commit(It.IsAny <DeferredPipelineTransaction>(), It.IsAny <IEnumerable <DeferredTransactionPart> >()), Times.Once); PipelineAssert.Value(value, 2); test.AssertInvalidations(1); }