This commit is contained in:
Alexander Chocron 2017-11-07 13:11:51 -08:00
Родитель cc290ca5f9
Коммит aec104fe07
9 изменённых файлов: 139 добавлений и 104 удалений

Просмотреть файл

@ -23,7 +23,7 @@ namespace Microsoft.AppCenter.Test.Windows.Ingestion.Models
var mockDevice = new Mock<Device>(); var mockDevice = new Mock<Device>();
PageLog emptyLog = new PageLog(); PageLog emptyLog = new PageLog();
PageLog log = new PageLog(Timestamp, mockDevice.Object, Name); PageLog log = new PageLog(mockDevice.Object, Name, Timestamp);
Assert.IsNotNull(emptyLog); Assert.IsNotNull(emptyLog);
Assert.IsNotNull(log); Assert.IsNotNull(log);
@ -40,7 +40,7 @@ namespace Microsoft.AppCenter.Test.Windows.Ingestion.Models
const string NullName = null; const string NullName = null;
var mockDevice = new Mock<Device>(); var mockDevice = new Mock<Device>();
PageLog log = new PageLog(Timestamp, mockDevice.Object, NullName); PageLog log = new PageLog(mockDevice.Object, NullName, Timestamp);
Assert.ThrowsException<ValidationException>(() => log.Validate()); Assert.ThrowsException<ValidationException>(() => log.Validate());
} }
} }

Просмотреть файл

@ -21,7 +21,7 @@ namespace Microsoft.AppCenter.Test.Windows.Ingestion.Models
var mockDevice = new Mock<Device>(); var mockDevice = new Mock<Device>();
StartSessionLog emptyLog = new StartSessionLog(); StartSessionLog emptyLog = new StartSessionLog();
StartSessionLog log = new StartSessionLog(Timestamp, mockDevice.Object); StartSessionLog log = new StartSessionLog(mockDevice.Object, Timestamp);
Assert.IsNotNull(emptyLog); Assert.IsNotNull(emptyLog);
Assert.IsNotNull(log); Assert.IsNotNull(log);

Просмотреть файл

@ -515,7 +515,7 @@ namespace Microsoft.AppCenter.Test
var properties = new CustomProperties(); var properties = new CustomProperties();
properties.Set("test", "test"); properties.Set("test", "test");
AppCenter.SetCustomProperties(properties); AppCenter.SetCustomProperties(properties);
channelUnitMock.Verify(channel => channel.EnqueueAsync(It.Is<CustomPropertiesLog>(log => channelUnitMock.Verify(channel => channel.EnqueueAsync(It.Is<CustomPropertyLog>(log =>
log.Properties == properties.Properties)), Times.Once()); log.Properties == properties.Properties)), Times.Once());
} }
} }

Просмотреть файл

@ -1,5 +1,8 @@
using System; using System;
using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Linq;
using Microsoft.AppCenter.Ingestion.Models;
using System.Collections.Generic;
namespace Microsoft.AppCenter.Test.Windows namespace Microsoft.AppCenter.Test.Windows
{ {
@ -144,7 +147,7 @@ namespace Microsoft.AppCenter.Test.Windows
var normalValue = "test"; var normalValue = "test";
properties.Set(key, normalValue); properties.Set(key, normalValue);
Assert.AreEqual(1, properties.Properties.Count); Assert.AreEqual(1, properties.Properties.Count);
Assert.AreEqual(normalValue, properties.Properties[key]); FindProperty(properties.Properties, key, normalValue);
} }
/// <summary> /// <summary>
@ -161,7 +164,7 @@ namespace Microsoft.AppCenter.Test.Windows
var normalValue = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); var normalValue = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
properties.Set(key, normalValue); properties.Set(key, normalValue);
Assert.AreEqual(1, properties.Properties.Count); Assert.AreEqual(1, properties.Properties.Count);
Assert.AreEqual(normalValue, properties.Properties[key]); FindProperty(properties.Properties, key, normalValue);
} }
/// <summary> /// <summary>
@ -185,15 +188,15 @@ namespace Microsoft.AppCenter.Test.Windows
properties.Set("t4", value4); properties.Set("t4", value4);
properties.Set("t5", value5); properties.Set("t5", value5);
Assert.AreEqual(5, properties.Properties.Count); Assert.AreEqual(5, properties.Properties.Count);
Assert.AreEqual(value1, properties.Properties["t1"]); FindProperty(properties.Properties, "t1", value1);
Assert.AreEqual(value2, properties.Properties["t2"]); FindProperty(properties.Properties, "t2", value2);
Assert.AreEqual(value3, properties.Properties["t3"]); FindProperty(properties.Properties, "t3", value3);
Assert.AreEqual(value4, properties.Properties["t4"]); FindProperty(properties.Properties, "t4", value4);
Assert.AreEqual(value5, properties.Properties["t5"]); FindProperty(properties.Properties, "t5", value5);
} }
/// <summary> /// <summary>
/// Verify that bool setting correct. /// Verify that bool setting correc
/// </summary> /// </summary>
[TestMethod] [TestMethod]
public void TestSetBool() public void TestSetBool()
@ -206,7 +209,7 @@ namespace Microsoft.AppCenter.Test.Windows
var normalValue = false; var normalValue = false;
properties.Set(key, normalValue); properties.Set(key, normalValue);
Assert.AreEqual(1, properties.Properties.Count); Assert.AreEqual(1, properties.Properties.Count);
Assert.AreEqual(normalValue, properties.Properties[key]); FindProperty(properties.Properties, key, normalValue);
} }
/// <summary> /// <summary>
@ -220,7 +223,22 @@ namespace Microsoft.AppCenter.Test.Windows
Assert.AreEqual(0, properties.Properties.Count); Assert.AreEqual(0, properties.Properties.Count);
properties.Clear(key); properties.Clear(key);
Assert.AreEqual(1, properties.Properties.Count); Assert.AreEqual(1, properties.Properties.Count);
Assert.IsNull(properties.Properties[key]); FindProperty(properties.Properties, key, null);
}
private static void FindProperty(IList<CustomProperty> properties, string key, object value)
{
CustomProperty compareProperty = null;
foreach (var elt in properties)
{
if (elt.Name == key)
{
compareProperty = elt;
break;
}
}
Assert.IsNotNull(compareProperty);
Assert.AreEqual(value, compareProperty.GetValue());
} }
} }
} }

Просмотреть файл

@ -45,8 +45,8 @@ namespace Microsoft.AppCenter.Test.Windows.Ingestion.Models
{ {
new StringProperty("t1", "test"), new StringProperty("t1", "test"),
new DateTimeProperty("t2", new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc)), new DateTimeProperty("t2", new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc)),
new NumberProperty("t3", 1), new NumberProperty("t3", (long)1),
new NumberProperty("t4", 0.1f), new NumberProperty("t4", 0.1),
new BooleanProperty("t5", false), new BooleanProperty("t5", false),
new ClearProperty("t6") new ClearProperty("t6")
}, },
@ -64,26 +64,10 @@ namespace Microsoft.AppCenter.Test.Windows.Ingestion.Models
{ {
var retrievedProperty = GetPropertyWithName(retrievedLog.Properties, addedProperty.Name); var retrievedProperty = GetPropertyWithName(retrievedLog.Properties, addedProperty.Name);
Assert.IsNotNull(retrievedProperty); Assert.IsNotNull(retrievedProperty);
Assert.IsTrue(EqualityComparer<object>.Default.Equals(addedProperty.GetValue(), retrievedProperty.GetValue())); Assert.AreEqual(addedProperty.GetValue(), retrievedProperty.GetValue());
} }
} }
/// <summary>
/// Validate that log is not valid with nullable 'Properties'
/// </summary>
[TestMethod]
public void ValidateStartServiceLog()
{
var log = new CustomPropertyLog
{
Properties = null,
Device = new DeviceInformationHelper().GetDeviceInformationAsync().RunNotAsync(),
Timestamp = DateTime.Now
};
Assert.ThrowsException<ValidationException>((Action)log.Validate);
}
private static CustomProperty GetPropertyWithName(IList<CustomProperty> properties, string name) private static CustomProperty GetPropertyWithName(IList<CustomProperty> properties, string name)
{ {
foreach (var property in properties) foreach (var property in properties)

Просмотреть файл

@ -28,8 +28,20 @@ namespace Microsoft.AppCenter.Test.Ingestion.Models
{ {
const string deafultString = default(string); const string deafultString = default(string);
var emptyDevice = new Device(); var emptyDevice = new Device();
var device = new Device(SdkName, SdkVersion, Model, OemName, OsName, OsVersion, Locale, TimeZoneOffset, ScreenSize, AppVersion, AppBuild); var device = new Device
{
SdkName = SdkName,
SdkVersion = SdkVersion,
OsName = OsName,
OsVersion = OsVersion,
Locale = Locale,
TimeZoneOffset = TimeZoneOffset,
AppVersion = AppVersion,
AppBuild = AppBuild,
Model = Model,
ScreenSize = ScreenSize,
OemName = OemName
};
Assert.IsNotNull(emptyDevice); Assert.IsNotNull(emptyDevice);
Assert.IsNotNull(device); Assert.IsNotNull(device);
@ -63,8 +75,20 @@ namespace Microsoft.AppCenter.Test.Ingestion.Models
[TestMethod] [TestMethod]
public void TestValidateSuccessfullWhenAllFieldsArePresent() public void TestValidateSuccessfullWhenAllFieldsArePresent()
{ {
var device = new Device(SdkName, SdkVersion, Model, OemName, OsName, OsVersion, Locale, TimeZoneOffset, ScreenSize, AppVersion, AppBuild); var device = new Device
{
SdkName = SdkName,
SdkVersion = SdkVersion,
OsName = OsName,
OsVersion = OsVersion,
Locale = Locale,
TimeZoneOffset = TimeZoneOffset,
AppVersion = AppVersion,
AppBuild = AppBuild,
Model = Model,
ScreenSize = ScreenSize,
OemName = OemName
};
device.Validate(); device.Validate();
} }
@ -74,8 +98,7 @@ namespace Microsoft.AppCenter.Test.Ingestion.Models
[TestMethod] [TestMethod]
public void TestValidateThrowsExceptionWhenSdkNameIsNull() public void TestValidateThrowsExceptionWhenSdkNameIsNull()
{ {
const string nullSdkName = null; var device = new Device(null, SdkVersion, OsName, OsVersion, Locale, TimeZoneOffset, AppVersion, AppBuild, null, null, Model);
var device = new Device(nullSdkName, SdkVersion, Model, OemName, OsName, OsVersion, Locale, TimeZoneOffset, ScreenSize, AppVersion, AppBuild);
Assert.ThrowsException<ValidationException>(() => device.Validate()); Assert.ThrowsException<ValidationException>(() => device.Validate());
} }
@ -85,30 +108,20 @@ namespace Microsoft.AppCenter.Test.Ingestion.Models
[TestMethod] [TestMethod]
public void TestValidateThrowsExceptionWhenSdkVersionIsNull() public void TestValidateThrowsExceptionWhenSdkVersionIsNull()
{ {
const string nullSdkVersion = null; var device = new Device
var device = new Device(SdkName, nullSdkVersion, Model, OemName, OsName, OsVersion, Locale, TimeZoneOffset, ScreenSize, AppVersion, AppBuild); {
Assert.ThrowsException<ValidationException>(() => device.Validate()); SdkName = SdkName,
} SdkVersion = null,
OsName = OsName,
/// <summary> OsVersion = OsVersion,
/// Verify that Validate method throws ValidationException when model == null. Locale = Locale,
/// </summary> TimeZoneOffset = TimeZoneOffset,
[TestMethod] AppVersion = AppVersion,
public void TestValidateThrowsExceptionWhenModelIsNull() AppBuild = AppBuild,
{ Model = Model,
const string nullModel = null; ScreenSize = ScreenSize,
var device = new Device(SdkName, SdkVersion, nullModel, OemName, OsName, OsVersion, Locale, TimeZoneOffset, ScreenSize, AppVersion, AppBuild); OemName = OemName
Assert.ThrowsException<ValidationException>(() => device.Validate()); };
}
/// <summary>
/// Verify that Validate method throws ValidationException when oemName == null.
/// </summary>
[TestMethod]
public void TestValidateThrowsExceptionWhenOemNameIsNull()
{
const string nullOemName = null;
var device = new Device(SdkName, SdkVersion, Model, nullOemName, OsName, OsVersion, Locale, TimeZoneOffset, ScreenSize, AppVersion, AppBuild);
Assert.ThrowsException<ValidationException>(() => device.Validate()); Assert.ThrowsException<ValidationException>(() => device.Validate());
} }
@ -118,8 +131,7 @@ namespace Microsoft.AppCenter.Test.Ingestion.Models
[TestMethod] [TestMethod]
public void TestValidateThrowsExceptionWhenOsNameIsNull() public void TestValidateThrowsExceptionWhenOsNameIsNull()
{ {
const string nullOsName = null; var device = new Device(SdkName, SdkVersion, null, OsVersion, Locale, TimeZoneOffset, AppVersion, AppBuild, null, null, Model, OemName);
var device = new Device(SdkName, SdkVersion, Model, OemName, nullOsName, OsVersion, Locale, TimeZoneOffset, ScreenSize, AppVersion, AppBuild);
Assert.ThrowsException<ValidationException>(() => device.Validate()); Assert.ThrowsException<ValidationException>(() => device.Validate());
} }
@ -129,8 +141,20 @@ namespace Microsoft.AppCenter.Test.Ingestion.Models
[TestMethod] [TestMethod]
public void TestValidateThrowsExceptionWhenOsVersionIsNull() public void TestValidateThrowsExceptionWhenOsVersionIsNull()
{ {
const string nullOsVersion = null; var device = new Device
var device = new Device(SdkName, SdkVersion, Model, OemName, OsName, nullOsVersion, Locale, TimeZoneOffset, ScreenSize, AppVersion, AppBuild); {
SdkName = SdkName,
SdkVersion = SdkVersion,
OsName = OsName,
OsVersion = null,
Locale = Locale,
TimeZoneOffset = TimeZoneOffset,
AppVersion = AppVersion,
AppBuild = AppBuild,
Model = Model,
ScreenSize = ScreenSize,
OemName = OemName
};
Assert.ThrowsException<ValidationException>(() => device.Validate()); Assert.ThrowsException<ValidationException>(() => device.Validate());
} }
@ -140,19 +164,20 @@ namespace Microsoft.AppCenter.Test.Ingestion.Models
[TestMethod] [TestMethod]
public void TestValidateThrowsExceptionWhenLocaleIsNull() public void TestValidateThrowsExceptionWhenLocaleIsNull()
{ {
const string nullLocale = null; var device = new Device
var device = new Device(SdkName, SdkVersion, Model, OemName, OsName, OsVersion, nullLocale, TimeZoneOffset, ScreenSize, AppVersion, AppBuild); {
Assert.ThrowsException<ValidationException>(() => device.Validate()); SdkName = SdkName,
} SdkVersion = SdkVersion,
OsName = OsName,
/// <summary> OsVersion = OsVersion,
/// Verify that Validate method throws ValidationException when screenSize == null. Locale = null,
/// </summary> TimeZoneOffset = TimeZoneOffset,
[TestMethod] AppVersion = AppVersion,
public void TestValidateThrowsExceptionWhenScreenSizeIsNull() AppBuild = AppBuild,
{ Model = Model,
const string nullScreenSize = null; ScreenSize = ScreenSize,
var device = new Device(SdkName, SdkVersion, Model, OemName, OsName, OsVersion, Locale, TimeZoneOffset, nullScreenSize, AppVersion, AppBuild); OemName = OemName
};
Assert.ThrowsException<ValidationException>(() => device.Validate()); Assert.ThrowsException<ValidationException>(() => device.Validate());
} }
@ -162,8 +187,20 @@ namespace Microsoft.AppCenter.Test.Ingestion.Models
[TestMethod] [TestMethod]
public void TestValidateThrowsExceptionWhenAppVersionIsNull() public void TestValidateThrowsExceptionWhenAppVersionIsNull()
{ {
const string nullAppVersion = null; var device = new Device
var device = new Device(SdkName, SdkVersion, Model, OemName, OsName, OsVersion, Locale, TimeZoneOffset, ScreenSize, nullAppVersion, AppBuild); {
SdkName = SdkName,
SdkVersion = SdkVersion,
OsName = OsName,
OsVersion = OsVersion,
Locale = Locale,
TimeZoneOffset = TimeZoneOffset,
AppVersion = null,
AppBuild = AppBuild,
Model = Model,
ScreenSize = ScreenSize,
OemName = OemName
};
Assert.ThrowsException<ValidationException>(() => device.Validate()); Assert.ThrowsException<ValidationException>(() => device.Validate());
} }
@ -173,8 +210,20 @@ namespace Microsoft.AppCenter.Test.Ingestion.Models
[TestMethod] [TestMethod]
public void TestValidateThrowsExceptionWhenAppBuildnIsNull() public void TestValidateThrowsExceptionWhenAppBuildnIsNull()
{ {
const string nullAppBuild = null; var device = new Device
var device = new Device(SdkName, SdkVersion, Model, OemName, OsName, OsVersion, Locale, TimeZoneOffset, ScreenSize, AppVersion, nullAppBuild); {
SdkName = SdkName,
SdkVersion = SdkVersion,
OsName = OsName,
OsVersion = OsVersion,
Locale = Locale,
TimeZoneOffset = TimeZoneOffset,
AppVersion = AppVersion,
AppBuild = null,
Model = Model,
ScreenSize = ScreenSize,
OemName = OemName
};
Assert.ThrowsException<ValidationException>(() => device.Validate()); Assert.ThrowsException<ValidationException>(() => device.Validate());
} }
} }

Просмотреть файл

@ -35,6 +35,6 @@ namespace Microsoft.AppCenter.Test.Windows.Ingestion.Models
{ {
public TestLogWithProperties() { } public TestLogWithProperties() { }
public TestLogWithProperties(DateTime? timestamp, Device device, Guid? sid = default(Guid?), IDictionary<string, string> properties = default(IDictionary<string, string>)) public TestLogWithProperties(DateTime? timestamp, Device device, Guid? sid = default(Guid?), IDictionary<string, string> properties = default(IDictionary<string, string>))
: base(timestamp, device, sid, properties) { } : base(device, timestamp, sid, properties) { }
} }
} }

Просмотреть файл

@ -38,8 +38,8 @@ namespace Microsoft.AppCenter.Test.Windows.Ingestion.Models
public void CheckInitialValuesWithServices() public void CheckInitialValuesWithServices()
{ {
var servicesNames = new List<string> { "Service0", "Service1", "Service2" }; var servicesNames = new List<string> { "Service0", "Service1", "Service2" };
var log = new StartServiceLog(null, null, servicesNames); var log = new StartServiceLog();
log.Services = servicesNames;
Assert.IsNotNull(log.Services); Assert.IsNotNull(log.Services);
foreach (var serviceName in log.Services) foreach (var serviceName in log.Services)
{ {
@ -73,21 +73,5 @@ namespace Microsoft.AppCenter.Test.Windows.Ingestion.Models
Assert.IsTrue(retrievedLog.Services.Contains(serviceName)); Assert.IsTrue(retrievedLog.Services.Contains(serviceName));
} }
} }
/// <summary>
/// Validate that log is not valid with nullable 'Services'
/// </summary>
[TestMethod]
public void ValidateStartServiceLog()
{
var log = new StartServiceLog
{
Services = null,
Device = new DeviceInformationHelper().GetDeviceInformationAsync().RunNotAsync(),
Timestamp = DateTime.Now
};
Assert.ThrowsException<ValidationException>((Action)log.Validate);
}
} }
} }

Просмотреть файл

@ -9,6 +9,6 @@ namespace Microsoft.AppCenter.Test.Windows.Ingestion.Models
{ {
public TestLog() {} public TestLog() {}
public TestLog(DateTime? timestamp, Device device, System.Guid? sid = default(System.Guid?)) public TestLog(DateTime? timestamp, Device device, System.Guid? sid = default(System.Guid?))
: base(timestamp, device, sid){ } : base(device, timestamp, sid) { }
} }
} }