public void OpenWebViewCommandTests()
        {
            var reAgreeTermsOfServicePageViewModel = CreateViewModel();
            var updateInfo = new TermsUpdateInfoModel
            {
                TermsOfService = new TermsUpdateInfoModel.Detail {
                    Text = "利用規約テキスト", UpdateDateTimeJst = new DateTime(2020, 11, 01)
                },
                PrivacyPolicy = new TermsUpdateInfoModel.Detail {
                    Text = "プライバシーポリシーテキスト", UpdateDateTimeJst = new DateTime(2020, 11, 02)
                }
            };

            var param = ReAgreeTermsOfServicePage.BuildNavigationParams(updateInfo, Destination.HomePage);

            reAgreeTermsOfServicePageViewModel.Initialize(param);

            var               actualCalls      = 0;
            string            actualUri        = default;
            BrowserLaunchMode actualLaunchMode = default;

            reAgreeTermsOfServicePageViewModel.BrowserOpenAsync = (uri, launchMode) =>
            {
                actualCalls++;
                actualUri        = uri;
                actualLaunchMode = launchMode;
                return(Task.CompletedTask);
            };

            reAgreeTermsOfServicePageViewModel.OpenWebView.Execute(null);

            Assert.Equal(1, actualCalls);
            Assert.Equal(AppResources.UrlTermOfUse, actualUri);
            Assert.Equal(BrowserLaunchMode.SystemPreferred, actualLaunchMode);
        }
Пример #2
0
        public bool IsUpdated(TermsType termsType, TermsUpdateInfoModel termsUpdateInfo)
        {
            loggerService.StartMethod();

            TermsUpdateInfoModel.Detail info = termsType switch
            {
                TermsType.TermsOfService => termsUpdateInfo.TermsOfService,
                TermsType.PrivacyPolicy => termsUpdateInfo.PrivacyPolicy,
                _ => throw new NotSupportedException()
            };

            if (info == null)
            {
                loggerService.EndMethod();
                return(false);
            }

            var updateDatetime = info.UpdateDateTimeUtc;

            DateTime lastUpdateDate = userDataRepository.GetLastUpdateDate(termsType);

            loggerService.Info($"termsType: {termsType}, lastUpdateDate: {lastUpdateDate}, updateDatetimeUtc: {updateDatetime}");
            loggerService.EndMethod();

            return(lastUpdateDate < updateDatetime);
        }
    }
Пример #3
0
        public void OnClickReAgreeCommandTests_()
        {
            var reAgreeTermsOfServicePageViewModel = CreateViewModel();
            var updateInfo = new TermsUpdateInfoModel
            {
                TermsOfService = new TermsUpdateInfoModel.Detail {
                    Text = "利用規約テキスト", UpdateDateTime = new DateTime(2020, 11, 01)
                },
                PrivacyPolicy = new TermsUpdateInfoModel.Detail {
                    Text = "プライバシーポリシーテキスト", UpdateDateTime = new DateTime(2020, 11, 02)
                }
            };
            var param = new NavigationParameters
            {
                { "updateInfo", updateInfo }
            };

            reAgreeTermsOfServicePageViewModel.Initialize(param);

            mockTermsUpdateService.Setup(x => x.SaveLastUpdateDateAsync(TermsType.TermsOfService, updateInfo.TermsOfService.UpdateDateTime));
            mockTermsUpdateService.Setup(x => x.IsReAgree(TermsType.PrivacyPolicy, updateInfo)).Returns(false);
            reAgreeTermsOfServicePageViewModel.OnClickReAgreeCommand.Execute(null);

            mockNavigationService.Verify(x => x.NavigateAsync("/" + nameof(MenuPage) + "/" + nameof(NavigationPage) + "/" + nameof(HomePage)), Times.Once());
        }
        public void OpenWebViewCommandTests()
        {
            var reAgreePrivacyPolicyPageViewModel = CreateViewModel();

            var updateInfo = new TermsUpdateInfoModel
            {
                PrivacyPolicy = new TermsUpdateInfoModel.Detail {
                    Text = "test", UpdateDateTimeJst = DateTime.Now
                }
            };

            var param = ReAgreePrivacyPolicyPage.BuildNavigationParams(updateInfo.PrivacyPolicy, Destination.HomePage);

            reAgreePrivacyPolicyPageViewModel.Initialize(param);

            var               actualCalls      = 0;
            string            actualUri        = default;
            BrowserLaunchMode actualLaunchMode = default;

            reAgreePrivacyPolicyPageViewModel.BrowserOpenAsync = (uri, launchMode) =>
            {
                actualCalls++;
                actualUri        = uri;
                actualLaunchMode = launchMode;
                return(Task.CompletedTask);
            };

            reAgreePrivacyPolicyPageViewModel.OpenWebView.Execute(null);

            Assert.Equal(1, actualCalls);
            Assert.Equal(AppResources.UrlPrivacyPolicy, actualUri);
            Assert.Equal(BrowserLaunchMode.SystemPreferred, actualLaunchMode);
        }
Пример #5
0
        public override void Initialize(INavigationParameters parameters)
        {
            loggerService.StartMethod();

            base.Initialize(parameters);
            UpdateInfo     = (TermsUpdateInfoModel)parameters["updateInfo"];
            UpdateDateTime = UpdateInfo.TermsOfService.UpdateDateTime;
            UpdateText     = UpdateInfo.TermsOfService.Text;

            loggerService.EndMethod();
        }
Пример #6
0
 public async Task Prepare()
 {
     _loggerService.StartMethod();
     try
     {
         _termsUpdateInfoModel = await _termsUpdateService.GetTermsUpdateInfo();
     }
     finally
     {
         _loggerService.EndMethod();
     }
 }
        public override void Initialize(INavigationParameters parameters)
        {
            _loggerService.StartMethod();

            base.Initialize(parameters);
            UpdateInfo        = (TermsUpdateInfoModel)parameters[ReAgreeTermsOfServicePage.UpdateInfoKey];
            UpdateDateTimeUtc = UpdateInfo.TermsOfService.UpdateDateTimeUtc;
            UpdateText        = UpdateInfo.TermsOfService.Text;

            _navigationParameters = parameters;

            _loggerService.EndMethod();
        }
Пример #8
0
        public static INavigationParameters BuildNavigationParams(
            TermsUpdateInfoModel updateInfo,
            Destination destination,
            INavigationParameters?baseParam = null
            )
        {
            var param = new NavigationParameters();

            param.CopyFrom(baseParam);

            param.Add(UpdateInfoKey, updateInfo);
            param.Add(DestinationKey, destination);

            return(param);
        }
        public void InitializeTests()
        {
            var reAgreePrivacyPolicyPageViewModel = CreateViewModel();

            var updateInfo = new TermsUpdateInfoModel
            {
                PrivacyPolicy = new TermsUpdateInfoModel.Detail {
                    Text = "test", UpdateDateTimeJst = new DateTime(2020, 11, 02)
                }
            };

            var param = ReAgreePrivacyPolicyPage.BuildNavigationParams(updateInfo.PrivacyPolicy, Destination.HomePage);

            reAgreePrivacyPolicyPageViewModel.Initialize(param);

            Assert.Equal(updateInfo.PrivacyPolicy.Text, reAgreePrivacyPolicyPageViewModel.UpdateText);
        }
        public void InitializeTests()
        {
            var reAgreeTermsOfServicePageViewModel = CreateViewModel();
            var updateInfo = new TermsUpdateInfoModel
            {
                TermsOfService = new TermsUpdateInfoModel.Detail {
                    Text = "利用規約テキスト", UpdateDateTimeJst = new DateTime(2020, 11, 01)
                },
                PrivacyPolicy = new TermsUpdateInfoModel.Detail {
                    Text = "プライバシーポリシーテキスト", UpdateDateTimeJst = new DateTime(2020, 11, 02)
                }
            };

            var param = ReAgreeTermsOfServicePage.BuildNavigationParams(updateInfo, Destination.HomePage);

            reAgreeTermsOfServicePageViewModel.Initialize(param);

            Assert.Equal(updateInfo.TermsOfService.Text, reAgreeTermsOfServicePageViewModel.UpdateText);
        }
        public void OnClickReAgreeCommandTests()
        {
            var reAgreePrivacyPolicyPageViewModel = CreateViewModel();
            var updateInfo = new TermsUpdateInfoModel
            {
                PrivacyPolicy = new TermsUpdateInfoModel.Detail {
                    Text = "test", UpdateDateTimeJst = DateTime.Now
                }
            };

            var param = ReAgreePrivacyPolicyPage.BuildNavigationParams(updateInfo.PrivacyPolicy, Destination.HomePage);

            reAgreePrivacyPolicyPageViewModel.Initialize(param);

            mockUserDataRepository.Setup(x => x.SaveLastUpdateDate(TermsType.PrivacyPolicy, updateInfo.PrivacyPolicy.UpdateDateTimeUtc));
            reAgreePrivacyPolicyPageViewModel.OnClickReAgreeCommand.Execute(null);

            mockNavigationService.Verify(x => x.NavigateAsync(Destination.HomePage.ToPath(), param), Times.Once());
        }
Пример #12
0
        public void IsReAgreeTest_NotSaveLastUpdateDateTime(TermsType termsType, string key)
        {
            var info = new TermsUpdateInfoModel
            {
                TermsOfService = new TermsUpdateInfoModel.Detail {
                    UpdateDateTime = DateTime.Now
                },
                PrivacyPolicy = new TermsUpdateInfoModel.Detail {
                    UpdateDateTime = DateTime.Now
                }
            };

            var termsUpdateService = CreateService();

            mockPreferencesService.Setup(x => x.ContainsKey(key)).Returns(false);
            var result = termsUpdateService.IsReAgree(termsType, info);

            Assert.True(result);
        }
Пример #13
0
        public void IsReAgreeTest_NoNeedReAgree(TermsType termsType, string key)
        {
            var info = new TermsUpdateInfoModel
            {
                TermsOfService = new TermsUpdateInfoModel.Detail {
                    UpdateDateTime = new DateTime(2020, 11, 2)
                },
                PrivacyPolicy = new TermsUpdateInfoModel.Detail {
                    UpdateDateTime = new DateTime(2020, 11, 2)
                }
            };

            var termsUpdateService = CreateService();

            mockPreferencesService.Setup(x => x.ContainsKey(key)).Returns(true);
            mockPreferencesService.Setup(x => x.GetValue(key, new DateTime())).Returns(new DateTime(2020, 11, 3));
            var result = termsUpdateService.IsReAgree(termsType, info);

            Assert.False(result);
        }
Пример #14
0
        public void IsReAgreeTest_RequiredReAgree(TermsType termsType, string key)
        {
            var info = new TermsUpdateInfoModel
            {
                TermsOfService = new TermsUpdateInfoModel.Detail {
                    UpdateDateTime = new DateTime(2020, 11, 2)
                },
                PrivacyPolicy = new TermsUpdateInfoModel.Detail {
                    UpdateDateTime = new DateTime(2020, 11, 2)
                }
            };

            var termsUpdateService = CreateService();

            mockApplicationPropertyService.Setup(x => x.ContainsKey(key)).Returns(true);
            mockApplicationPropertyService.Setup(x => x.GetProperties(key)).Returns(new DateTime(2020, 11, 1));
            var result = termsUpdateService.IsReAgree(termsType, info);

            Assert.True(result);
        }
Пример #15
0
        public void IsUpdatedTest_RequiredReAgree(TermsType termsType, string key)
        {
            var info = new TermsUpdateInfoModel
            {
                TermsOfService = new TermsUpdateInfoModel.Detail {
                    UpdateDateTimeJst = new DateTime(2020, 11, 2)
                },
                PrivacyPolicy = new TermsUpdateInfoModel.Detail {
                    UpdateDateTimeJst = new DateTime(2020, 11, 2)
                }
            };

            var termsUpdateService = CreateService();

            mockPreferencesService.Setup(x => x.ContainsKey(key)).Returns(true);
            mockUserDataRepository.Setup(x => x.GetLastUpdateDate(termsType)).Returns(new DateTime(2020, 11, 1));
            var result = termsUpdateService.IsUpdated(termsType, info);

            Assert.True(result);
        }
Пример #16
0
        public bool IsReAgree(TermsType privacyType, TermsUpdateInfoModel termsUpdateInfo)
        {
            loggerService.StartMethod();

            TermsUpdateInfoModel.Detail info = null;
            string key = null;

            switch (privacyType)
            {
            case TermsType.TermsOfService:
                info = termsUpdateInfo.TermsOfService;
                key  = TermsOfServiceLastUpdateDateKey;
                break;

            case TermsType.PrivacyPolicy:
                info = termsUpdateInfo.PrivacyPolicy;
                key  = PrivacyPolicyLastUpdateDateKey;
                break;
            }

            if (info == null)
            {
                loggerService.EndMethod();
                return(false);
            }

            var lastUpdateDate = new DateTime();

            if (applicationPropertyService.ContainsKey(key))
            {
                lastUpdateDate = (DateTime)applicationPropertyService.GetProperties(key);
            }

            loggerService.Info($"privacyType: {privacyType}, lastUpdateDate: {lastUpdateDate}, info.UpdateDateTime: {info.UpdateDateTime}");
            loggerService.EndMethod();

            return(lastUpdateDate < info.UpdateDateTime);
        }
Пример #17
0
        public bool IsReAgree(TermsType termsType, TermsUpdateInfoModel termsUpdateInfo)
        {
            loggerService.StartMethod();

            TermsUpdateInfoModel.Detail info = null;
            string key = null;

            switch (termsType)
            {
            case TermsType.TermsOfService:
                info = termsUpdateInfo.TermsOfService;
                key  = PreferenceKey.TermsOfServiceLastUpdateDateTime;
                break;

            case TermsType.PrivacyPolicy:
                info = termsUpdateInfo.PrivacyPolicy;
                key  = PreferenceKey.PrivacyPolicyLastUpdateDateTime;
                break;
            }

            if (info == null)
            {
                loggerService.EndMethod();
                return(false);
            }

            var lastUpdateDate = new DateTime();

            if (preferencesService.ContainsKey(key))
            {
                lastUpdateDate = preferencesService.GetValue(key, lastUpdateDate);
            }

            loggerService.Info($"termsType: {termsType}, lastUpdateDate: {lastUpdateDate}, info.UpdateDateTime: {info.UpdateDateTime}");
            loggerService.EndMethod();

            return(lastUpdateDate < info.UpdateDateTime);
        }
        public void OnClickReAgreeCommandWithDestinationTest()
        {
            var reAgreeTermsOfServicePageViewModel = CreateViewModel();
            var updateInfo = new TermsUpdateInfoModel
            {
                TermsOfService = new TermsUpdateInfoModel.Detail {
                    Text = "利用規約テキスト", UpdateDateTimeJst = new DateTime(2020, 11, 01)
                },
                PrivacyPolicy = new TermsUpdateInfoModel.Detail {
                    Text = "プライバシーポリシーテキスト", UpdateDateTimeJst = new DateTime(2020, 11, 02)
                }
            };

            var param = ReAgreeTermsOfServicePage.BuildNavigationParams(updateInfo, Destination.NotifyOtherPage);

            reAgreeTermsOfServicePageViewModel.Initialize(param);

            mockUserDataRepository.Setup(x => x.SaveLastUpdateDate(TermsType.TermsOfService, updateInfo.TermsOfService.UpdateDateTimeUtc));
            mockTermsUpdateService.Setup(x => x.IsUpdated(TermsType.PrivacyPolicy, updateInfo)).Returns(false);
            reAgreeTermsOfServicePageViewModel.OnClickReAgreeCommand.Execute(null);

            mockNavigationService.Verify(x => x.NavigateAsync(Destination.NotifyOtherPage.ToPath(), param), Times.Once());
        }
Пример #19
0
        public void OpenWebViewCommandTests()
        {
            var reAgreeTermsOfServicePageViewModel = CreateViewModel();
            var updateInfo = new TermsUpdateInfoModel
            {
                TermsOfService = new TermsUpdateInfoModel.Detail {
                    Text = "利用規約テキスト", UpdateDateTime = new DateTime(2020, 11, 01)
                },
                PrivacyPolicy = new TermsUpdateInfoModel.Detail {
                    Text = "プライバシーポリシーテキスト", UpdateDateTime = new DateTime(2020, 11, 02)
                }
            };
            var param = new NavigationParameters
            {
                { "updateInfo", updateInfo }
            };

            reAgreeTermsOfServicePageViewModel.Initialize(param);

            var               actualCalls      = 0;
            string            actualUri        = default;
            BrowserLaunchMode actualLaunchMode = default;

            reAgreeTermsOfServicePageViewModel.BrowserOpenAsync = (uri, launchMode) =>
            {
                actualCalls++;
                actualUri        = uri;
                actualLaunchMode = launchMode;
                return(Task.CompletedTask);
            };

            reAgreeTermsOfServicePageViewModel.OpenWebView.Execute(null);

            Assert.Equal(1, actualCalls);
            Assert.Equal("https://www.mhlw.go.jp/cocoa/kiyaku_english.html", actualUri);
            Assert.Equal(BrowserLaunchMode.SystemPreferred, actualLaunchMode);
        }
        public void OnClickReAgreeCommandTests_NavigateReAgreePrivacyPolicyPageViewModel()
        {
            var reAgreeTermsOfServicePageViewModel = CreateViewModel();
            var updateInfo = new TermsUpdateInfoModel
            {
                TermsOfService = new TermsUpdateInfoModel.Detail {
                    Text = "利用規約テキスト", UpdateDateTimeJst = new DateTime(2020, 11, 01)
                },
                PrivacyPolicy = new TermsUpdateInfoModel.Detail {
                    Text = "プライバシーポリシーテキスト", UpdateDateTimeJst = new DateTime(2020, 11, 02)
                }
            };

            var param = ReAgreeTermsOfServicePage.BuildNavigationParams(updateInfo, Destination.HomePage);

            reAgreeTermsOfServicePageViewModel.Initialize(param);

            mockUserDataRepository.Setup(x => x.SaveLastUpdateDate(TermsType.TermsOfService, updateInfo.TermsOfService.UpdateDateTimeUtc));
            mockTermsUpdateService.Setup(x => x.IsUpdated(TermsType.PrivacyPolicy, updateInfo)).Returns(true);
            reAgreeTermsOfServicePageViewModel.OnClickReAgreeCommand.Execute(null);

            param.Add("updatePrivacyPolicyInfo", updateInfo.PrivacyPolicy);
            mockNavigationService.Verify(x => x.NavigateAsync(nameof(ReAgreePrivacyPolicyPage), It.IsAny <NavigationParameters>()), Times.Once());
        }
Пример #21
0
        public bool IsUpdated(TermsType termsType, TermsUpdateInfoModel termsUpdateInfo)
        {
            bool result = false;

            switch (termsType)
            {
            case TermsType.TermsOfService:
                if (_termsOfServiceUpdated)
                {
                    _termsOfServiceUpdated = false;
                    result = true;
                }
                break;

            case TermsType.PrivacyPolicy:
                if (_privacyPolicyUpdated)
                {
                    _privacyPolicyUpdated = false;
                    result = true;
                }
                break;
            }
            return(result);
        }