public async void Init_ExceptionThrown_ReportsError()
        {
            DataClient.GetDataBody = delegate { throw new Exception(); };
            string errorMessage = null;

            Messenger.Subscribe <ErrorMessage>(msg => errorMessage = msg.Message);

            var viewModel = new SponsorViewModel(Messenger, CodeCampService, WebBrowserTask);

            await viewModel.Init(new SponsorViewModel.NavigationParameters(42));

            Assert.NotNull(errorMessage);
            Assert.False(viewModel.IsLoading);
            Assert.Null(viewModel.Sponsor);
        }
        public async void ViewWebsiteCommand_Executed_GoesToSponsorWebsite()
        {
            var sponsor = new Sponsor {
                Id = 42, Website = "http://codecampnyc.org"
            };
            var data = new CampData {
                Sponsors = new List <Sponsor> {
                    sponsor
                }
            };

            DataClient.GetDataBody = () => Task.FromResult(data);
            var viewModel = new SponsorViewModel(Messenger, CodeCampService, WebBrowserTask);
            await viewModel.Init(new SponsorViewModel.NavigationParameters(sponsor.Id));

            viewModel.ViewWebsiteCommand.Execute(null);

            Assert.AreEqual(1, WebBrowserTask.UrlRequests.Count);
            Assert.AreEqual(sponsor.Website, WebBrowserTask.UrlRequests.First());
        }
        public async void Init_DataLoadsSuccessfully_LoadsSponsor()
        {
            var sponsor = new Sponsor {
                Id = 42
            };
            var data = new CampData {
                Sponsors = new List <Sponsor> {
                    sponsor
                }
            };

            DataClient.GetDataBody = () => Task.FromResult(data);
            var viewModel = new SponsorViewModel(Messenger, CodeCampService, WebBrowserTask);

            Assert.True(viewModel.IsLoading);

            await viewModel.Init(new SponsorViewModel.NavigationParameters(sponsor.Id));

            Assert.False(viewModel.IsLoading);
            Assert.AreEqual(sponsor, viewModel.Sponsor);
        }
 protected async override void OnAppearing()
 {
     base.OnAppearing();
     await model.Init();
 }