public async Task ViewModelInitializationSendsChangeTabMessageTest()
        {
            bool messageReceived = false;
            var  mainViewModel   = new MainViewModel();
            var  tabParam        = new TabParameter {
                TabIndex = 2
            };

            Xamarin.Forms.MessagingCenter.Subscribe <MainViewModel, int>(this, MessageKeys.ChangeTab, (sender, arg) =>
            {
                messageReceived = true;
            });
            await mainViewModel.InitializeAsync(tabParam);

            Assert.True(messageReceived);
        }
        private async void LookupBikeInfo()
        {
            if (IsBusy)
            {
                return;
            }

            IsBusy = true;

            string uuid  = Preferences.Get("UUID", "");
            string user  = Preferences.Get("Email", "");
            string token = Preferences.Get("Token", "");



            if (user != "" && token == "")
            {
                user = "";
            }
            bool isMyBike = false;

            if (uuid != "")
            {
                try
                {
                    UIDInfo result = await DataStore.GetInfo(user, token, uuid);

                    if (result.FrameNumber == null)
                    {
                        await DialogService.Show("UUID unknown", $"The scanned UUID {uuid} is unknown", "Ok");

                        Status = (int)FrameNumberStatusType.UIDNotRegistered;
                        Preferences.Set("UUID", "");
                        UUID           = uuid;
                        Brand          = "";
                        Model          = "";
                        ProductionYear = "";
                    }
                    else
                    {
                        if (result.Owner != null && token != "" && user != "")
                        {
                            if (string.Equals(result.Owner.Email, user, StringComparison.InvariantCultureIgnoreCase))
                            {
                                isMyBike = true;
                            }
                        }

                        Brand = result.FrameNumber.Manufacturer;
                        string model = result.FrameNumber.Model + " ";
                        if (result.FrameNumber.Frame != "")
                        {
                            model += result.FrameNumber.Frame;
                        }

                        Model  = model;
                        UUID   = result.FrameNumber.UID;
                        Status = result.FrameNumberStatus.Status;

                        Preferences.Set("BrandModel", Brand + " " + Model);

                        Stolen = (Status == (int)FrameNumberStatusValue.Stolen);

                        Registered = isMyBike && (Status != (int)FrameNumberStatusValue.Unregistered && Status != (int)FrameNumberStatusValue.Unknown);

                        Preferences.Set("RegisteredToBike", Registered ? "1" : "0");
                        NotRegistered = !Registered;

                        // Make sure we show 'stolen'
                        if (Stolen)
                        {
                            NotRegistered = false;
                        }


                        FrameNumberStatus = result.FrameNumberStatus;
                        ProductionYear    = result.FrameNumber.ProductionDate.Year > 0 ? result.FrameNumber.ProductionDate.Year.ToString() : "";

                        if (result.FrameNumberExtras != null)
                        {
                            FrameNumberExtras = result.FrameNumberExtras;
                        }

                        /* string extras = "";
                         * if (result.FrameNumberExtras != null)
                         * {
                         *   foreach (FrameNumberExtra ext in result.FrameNumberExtras)
                         *   {
                         *       if (extras != "")
                         *           extras += ", ";
                         *       string thisExtra = "";
                         *       if (ext.ExtraBrand != "")
                         *           thisExtra += " ";
                         *       if (ext.ExtraModel != "")
                         *           thisExtra = ext.ExtraModel + " ";
                         *       if (ext.ExtraType != "")
                         *           thisExtra = ext.ExtraType;
                         *       extras += thisExtra.Trim();
                         *   }
                         *   Extras = extras;
                         * }*/

                        DocumentCount = result.FrameNumberDocuments != null ? result.FrameNumberDocuments.Count : 0;
                        Documents     = result.FrameNumberDocuments ?? new List <FrameNumberDocument>();
                        MessageCount  = result.NumberOfMessages;

                        var messageViewModel = ViewModelLocator.Resolve <MessagesViewModel>();

                        if (messageViewModel != null)
                        {
                            MessagingCenter.Send(messageViewModel, MessageKeys.UpdateMessageCount, MessageCount);
                        }



                        if (NotRegistered)
                        {
                            ImagePath = Constants.DefaultProfileImage;
                        }
                        else if (result.ProfileImage != "")
                        {
                            ImagePath = result.ProfileImage;
                            Preferences.Set("ProfileImage", ImagePath);
                        }
                    }
                    IsBusy = false;
                }
                catch (Exception e)
                {
                    AnalyticsService.TrackError(e, new Dictionary <string, string>
                    {
                        { "Method", "BikeDetailViewModel.LookupBikeInfo" }
                    });
                }
            }
            else
            {
                if (hasShowWarning == false)
                {
                    await DialogService.Show("No scans", "No bike has been scanned. Please scan a bike..", "Ok");
                }
                hasShowWarning = true;
                Status         = (int)FrameNumberStatusType.UIDNotRegistered;
                UUID           = uuid;
                Brand          = "";
                Model          = "";

                TabParameter tabParameter = new TabParameter()
                {
                    TabIndex = 1
                };
                await NavigationService.NavigateToAsync <MainViewModel>(tabParameter);
            }
            IsBusy = false;
        }