Example #1
0
        public void should_send_notifications_before_and_after_the_task_is_executed()
        {
            // Arrange
            var task = SimpleTask.New<ExecuteSimpleTask>();

            var taskWithAttributes = new MockSimpleTaskWithAttributes();
            task.In.SimpleTask = taskWithAttributes;

            var mockInvocation = new Mock<IInvocation>();
            mockInvocation.Setup(invocation => invocation.Proceed()).Callback(taskWithAttributes.Execute);
            task.In.Invocation = mockInvocation.Object;

            // Act
            task.Execute();

            // Assert
            VerifyFiveCallbacks(taskWithAttributes);
        }
Example #2
0
        static void VerifyFiveCallbacks(MockSimpleTaskWithAttributes simpleTaskWithAttributes)
        {
            Assert.That(simpleTaskWithAttributes.CallbackQueue.Count, Is.EqualTo(5));

            // Note: Attributes on a class are not returned in any order and therefore the it can not be assumed that the
            // first attribute will receive the first callback.
            if (simpleTaskWithAttributes.CallbackQueue.Peek().Contains("First"))
            {
                Assert.That(simpleTaskWithAttributes.CallbackQueue.Dequeue(), Is.EqualTo("First.Before"));
                Assert.That(simpleTaskWithAttributes.CallbackQueue.Dequeue(), Is.EqualTo("Second.Before"));
                Assert.That(simpleTaskWithAttributes.CallbackQueue.Dequeue(), Is.EqualTo("Execute"));
                Assert.That(simpleTaskWithAttributes.CallbackQueue.Dequeue(), Is.EqualTo("Second.After"));
                Assert.That(simpleTaskWithAttributes.CallbackQueue.Dequeue(), Is.EqualTo("First.After"));
            }
            else
            {
                Assert.That(simpleTaskWithAttributes.CallbackQueue.Dequeue(), Is.EqualTo("Second.Before"));
                Assert.That(simpleTaskWithAttributes.CallbackQueue.Dequeue(), Is.EqualTo("First.Before"));
                Assert.That(simpleTaskWithAttributes.CallbackQueue.Dequeue(), Is.EqualTo("Execute"));
                Assert.That(simpleTaskWithAttributes.CallbackQueue.Dequeue(), Is.EqualTo("First.After"));
                Assert.That(simpleTaskWithAttributes.CallbackQueue.Dequeue(), Is.EqualTo("Second.After"));
            }
        }