public async Task ShouldNotifyThatErrorCountUpdated()
        {
            var changeCount = 0;

            _viewModel.PropertyChanged += (_, args) => changeCount += args.PropertyName == "ErrorCount" ? 1 : 0;

            _viewModel.NextCommand.Execute(null);
            await _httpClient.WhenAllRequestsFinishIgnoreExceptions();

            await Eventually.Should(() =>
            {
                changeCount.Should().Be(1);
            });
        }
            public void TestSample()
            {
                var serviceProvider = CreateServiceProvider();
                var appViewModel    = new AppViewModel(serviceProvider);

                MainPageViewModel viewModel = null;
                var action = Execute.OnUIThread(() =>
                {
                    viewModel = new MainPageViewModel(serviceProvider, appViewModel);
                });

                Eventually.ShouldBecomeTrue(() => viewModel != null, DefaultTimeout);

                Eventually.ShouldBecomeTrue(() => viewModel.ConnectionInfo != null, DefaultTimeout);
                viewModel.ConnectionInfoTaskStatus.ShouldEqual(TaskStatus.RanToCompletion);
                viewModel.ConnectionInfo.Address.ToString().ShouldEqual("22.33.44.55");
                viewModel.ConnectionInfo.Network.ToString().ShouldEqual("22.33.44.0/24");

                Eventually.ShouldBecomeTrue(() => viewModel.DhcpInfo != null, DefaultTimeout);
                viewModel.DhcpInfoTaskStatus.ShouldEqual(TaskStatus.RanToCompletion);
                viewModel.DhcpInfo.GatewayAddress.ToString().ShouldEqual("100.101.102.103");
                viewModel.DhcpInfo.DnsServerAddress.ToString().ShouldEqual("200.201.202.203");
                viewModel.DhcpInfo.DomainName.ShouldEqual("my-domain-name");

                Eventually.ShouldBecomeTrue(() => viewModel.ExternalAddress != null, DefaultTimeout);
                viewModel.ExternalAddressTaskStatus.ShouldEqual(TaskStatus.RanToCompletion);
                viewModel.ExternalAddress.ToString().ShouldEqual("50.51.52.53");

                Eventually.ShouldBecomeTrue(() => viewModel.ScanCommand.CanExecute(null), DefaultTimeout);
                Eventually.ShouldBecomeFalse(() => viewModel.CancelScanCommand.CanExecute(null), DefaultTimeout);
                Eventually.ShouldBecomeTrue(() => viewModel.ShowServicesCommand.CanExecute(null), DefaultTimeout);

                viewModel.AvailableServices.ShouldBeEmpty();
                viewModel.ProgressPercent.ShouldEqual(0.0d);
                viewModel.Status.ShouldEqual(String.Empty);

                viewModel.CustomSelectionCommands.Count.ShouldEqual(1);
                viewModel.CustomSelectionCommands.First().Label.ShouldEqual("select whole network");

                viewModel.StartAddressValue.ShouldEqual(IPAddress.Parse("22.33.44.01").Value);
                viewModel.IsStartAddressValid.ShouldBeTrue();
                viewModel.EndAddressValue.ShouldEqual(IPAddress.Parse("22.33.44.254").Value);
                viewModel.IsEndAddressValid.ShouldBeTrue();
            }
        private void describe_Start()
        {
            context["when event has been added to EventStore"] = () =>
            {
                before = () =>
                {
                    var someEvent = new DummyEvent();
                    var eventData = _serializer.ToEventData(someEvent);
                    _connection.AppendToStreamAsync("dummy", ExpectedVersion.Any, eventData).Wait();

                    _subscription = _sut.Start(_connection);
                };

                after = () => _subscription?.Stop();

                it["eventually calls event handler"] =
                    () => Eventually.IsTrue(() => _eventHandler.WasCalledWithDummyEvent);
            };
        }
        private void describe_application()
        {
            context["when two user registration processes have been started for users with same emails"] = () =>
            {
                var userId1 = new Guid();
                var userId2 = new Guid();

                before = () =>
                {
                    var userRegistrationForm = UserRegistrationFormMother.JohnDow();

                    userId1 = _commandService
                              .StartRegistrationAsync(userRegistrationForm)
                              .Result;

                    userId2 = _commandService
                              .StartRegistrationAsync(userRegistrationForm)
                              .Result;
                };

                it["eventually returns succeeded result for one user and failed result for another user"] = () =>
                {
                    Eventually.IsTrue(() =>
                    {
                        var queryResults = new[]
                        {
                            _queryService.GetAsync(userId1).Result,
                            _queryService.GetAsync(userId2).Result
                        };

                        return
                        (queryResults.Contains(Option.Some(UserRegstrationProcessQueryResult.Succeeded)) &&
                         queryResults.Contains(Option.Some(UserRegstrationProcessQueryResult.Failed)));
                    });
                };
            };
        }