예제 #1
0
        public async Task TestAppVariablesWithoutAsyncStorage()
        {
            // Arrange
            var settingsMock = new Mock <ISettingsProvider>();

            var appVariables = new TestAppVariables(settingsMock.Object, null);

            // Act
            var emptyData = appVariables.TestData.Value;

            appVariables.TestData.Value = new TestData {
                Hello = "Test"
            };
            var readData = appVariables.TestData.Value;

            await Assert.ThrowsAsync <InvalidOperationException>(async() =>
                                                                 await appVariables.TestData2.GetAsync());

            await Assert.ThrowsAsync <InvalidOperationException>(async() =>
                                                                 await appVariables.TestData2.SetAsync(new TestData {
                Hello = "Test"
            }));

            var emptyAsyncData = appVariables.TestData2.Value;

            // Assert
            Assert.Null(emptyData);
            Assert.NotNull(readData);
            settingsMock.Verify(
                provider => provider.SetString(It.Is <string>(s => s == "test.json"), It.IsAny <string>()));
            settingsMock.Verify(
                provider => provider.GetString(It.Is <string>(s => s == "test.json")));

            Assert.Null(emptyAsyncData);
        }
예제 #2
0
        public async Task TestAppVariablesSavingAndLoading()
        {
            // Arrange
            var settingsMock    = new Mock <ISettingsProvider>();
            var filestorageMock = new Mock <IFileStorageProvider>();

            var dataCache    = new DataCache(filestorageMock.Object);
            var appVariables = new TestAppVariables(settingsMock.Object, dataCache);

            // Act
            var emptyData = appVariables.TestData.Value;

            appVariables.TestData.Value = new TestData {
                Hello = "Test"
            };
            var readData = appVariables.TestData.Value;

            var emptyAsyncData = await appVariables.TestData2.GetAsync();

            await appVariables.TestData2.SetAsync(new TestData { Hello = "Test" });

            var readAsyncData = await appVariables.TestData2.GetAsync();

            // Assert
            Assert.Null(emptyData);
            Assert.NotNull(readData);
            settingsMock.Verify(
                provider => provider.SetString(It.Is <string>(s => s == "test.json"), It.IsAny <string>()));
            settingsMock.Verify(
                provider => provider.GetString(It.Is <string>(s => s == "test.json")));

            Assert.Null(emptyAsyncData);
            Assert.NotNull(readAsyncData);
            filestorageMock.Verify(
                provider => provider.WriteText(It.Is <string>(s => s == "test.json"), It.IsAny <string>()), Times.Never);
            filestorageMock.Verify(
                provider => provider.ReadTextAsync(It.Is <string>(s => s == "test.json")), Times.Never);
        }
예제 #3
0
        public async Task TestAppVariablesExpiredData()
        {
            // Arrange
            var settingsMock    = new Mock <ISettingsProvider>();
            var filestorageMock = new Mock <IFileStorageProvider>();

            var dataCache    = new DataCache(filestorageMock.Object);
            var appVariables = new TestAppVariables(settingsMock.Object, dataCache);

            var savedJson = string.Empty;

            filestorageMock.Setup(provider => provider.WriteTextAsync(It.IsAny <string>(), It.IsAny <string>()))
            .Callback <string, string>((s, s1) => savedJson = s1);
            filestorageMock.Setup(provider => provider.ReadTextAsync(It.IsAny <string>()))
            .Returns(() => Task.FromResult(savedJson));

            // Act
            try
            {
                await appVariables.TestData.SetAsync(new TestData());
            }
            catch (Exception)
            {
                //async mock exception
            }

            var readDataBeforeExpiration = await appVariables.TestData.GetAsync();

            await Task.Delay(1100);

            var readDataAfterExpiration = await appVariables.TestData.GetAsync();

            // Assert
            Assert.NotNull(readDataBeforeExpiration);
            Assert.Null(readDataAfterExpiration);
        }