public void ImportNew () { RunAsync (async delegate { var projectData = await DataStore.PutAsync (new ProjectData () { RemoteId = 1, ModifiedAt = new DateTime (2014, 1, 2), }); var userData = await DataStore.PutAsync (new UserData () { RemoteId = 2, ModifiedAt = new DateTime (2014, 1, 3), }); var projectUserJson = new ProjectUserJson () { Id = 2, ProjectId = 1, UserId = 2, ModifiedAt = new DateTime (2014, 1, 3), }; var projectUserData = await DataStore.ExecuteInTransactionAsync (ctx => converter.Import (ctx, projectUserJson)); Assert.AreNotEqual (Guid.Empty, projectUserData.Id); Assert.AreEqual (2, projectUserData.RemoteId); Assert.AreEqual (new DateTime (2014, 1, 3), projectUserData.ModifiedAt); Assert.AreEqual (projectData.Id, projectUserData.ProjectId); Assert.AreEqual (userData.Id, projectUserData.UserId); Assert.IsFalse (projectUserData.IsDirty); Assert.IsFalse (projectUserData.RemoteRejected); Assert.IsNull (projectUserData.DeletedAt); }); }
public void ImportPastDeleted () { RunAsync (async delegate { var projectData = await DataStore.PutAsync (new ProjectData () { RemoteId = 1, ModifiedAt = new DateTime (2014, 1, 2), }); var userData = await DataStore.PutAsync (new UserData () { RemoteId = 2, ModifiedAt = new DateTime (2014, 1, 3), }); var projectUserData = await DataStore.PutAsync (new ProjectUserData () { RemoteId = 2, ProjectId = projectData.Id, UserId = userData.Id, ModifiedAt = new DateTime (2014, 1, 3), }); var projectUserJson = new ProjectUserJson () { Id = 2, DeletedAt = new DateTime (2014, 1, 2), }; var ret = await DataStore.ExecuteInTransactionAsync (ctx => converter.Import (ctx, projectUserJson)); Assert.IsNull (ret); var rows = await DataStore.Table<ProjectUserData> ().Where (m => m.Id == projectUserData.Id).ToListAsync (); Assert.That (rows, Has.Exactly (0).Count); }); }
public void ImportUpdatedKeepDirtyLocal () { RunAsync (async delegate { var projectData = await DataStore.PutAsync (new ProjectData () { RemoteId = 1, ModifiedAt = new DateTime (2014, 1, 2), }); var userData = await DataStore.PutAsync (new UserData () { RemoteId = 2, ModifiedAt = new DateTime (2014, 1, 3), }); var projectUserData = await DataStore.PutAsync (new ProjectUserData () { RemoteId = 2, ProjectId = Guid.Empty, UserId = Guid.Empty, ModifiedAt = new DateTime (2014, 1, 2, 10, 0, 0, DateTimeKind.Utc), IsDirty = true, }); var projectUserJson = new ProjectUserJson () { Id = 2, ProjectId = 1, UserId = 2, ModifiedAt = new DateTime (2014, 1, 2, 10, 0, 0, DateTimeKind.Utc).ToLocalTime (), }; projectUserData = await DataStore.ExecuteInTransactionAsync (ctx => converter.Import (ctx, projectUserJson)); Assert.AreEqual (Guid.Empty, projectUserData.ProjectId); Assert.AreEqual (new DateTime (2014, 1, 2, 10, 0, 0, DateTimeKind.Utc), projectUserData.ModifiedAt); }); }
public void ImportMissingProjectAndUser () { RunAsync (async delegate { var projectUserJson = new ProjectUserJson () { Id = 2, ProjectId = 1, UserId = 2, ModifiedAt = new DateTime (2014, 1, 3), }; var projectUserData = await DataStore.ExecuteInTransactionAsync (ctx => converter.Import (ctx, projectUserJson)); Assert.AreNotEqual (Guid.Empty, projectUserData.ProjectId); Assert.AreNotEqual (Guid.Empty, projectUserData.UserId); var projectRows = await DataStore.Table<ProjectData> ().Where (m => m.Id == projectUserData.ProjectId).ToListAsync (); var projectData = projectRows.FirstOrDefault (); Assert.IsNotNull (projectData); Assert.IsNotNull (projectData.RemoteId); Assert.AreEqual (DateTime.MinValue, projectData.ModifiedAt); var userRows = await DataStore.Table<UserData> ().Where (m => m.Id == projectUserData.UserId).ToListAsync (); var userData = userRows.FirstOrDefault (); Assert.IsNotNull (userData); Assert.IsNotNull (userData.RemoteId); Assert.AreEqual (DateTime.MinValue, userData.ModifiedAt); }); }
public void ImportUpdated () { RunAsync (async delegate { var projectData = await DataStore.PutAsync (new ProjectData () { RemoteId = 1, ModifiedAt = new DateTime (2014, 1, 2), }); var userData = await DataStore.PutAsync (new UserData () { RemoteId = 2, ModifiedAt = new DateTime (2014, 1, 3), }); var projectUserData = await DataStore.PutAsync (new ProjectUserData () { RemoteId = 2, ProjectId = Guid.Empty, UserId = Guid.Empty, ModifiedAt = new DateTime (2014, 1, 2, 10, 0, 0, DateTimeKind.Utc), }); var projectUserJson = new ProjectUserJson () { Id = 2, ProjectId = 1, UserId = 2, ModifiedAt = new DateTime (2014, 1, 2, 10, 1, 0, DateTimeKind.Utc).ToLocalTime (), // JSON deserialized to local }; projectUserData = await DataStore.ExecuteInTransactionAsync (ctx => converter.Import (ctx, projectUserJson)); Assert.AreNotEqual (Guid.Empty, projectUserData.Id); Assert.AreEqual (2, projectUserData.RemoteId); Assert.AreEqual (new DateTime (2014, 1, 2, 10, 1, 0, DateTimeKind.Utc), projectUserData.ModifiedAt); Assert.AreEqual (projectData.Id, projectUserData.ProjectId); Assert.AreEqual (userData.Id, projectUserData.UserId); Assert.IsFalse (projectUserData.IsDirty); Assert.IsFalse (projectUserData.RemoteRejected); Assert.IsNull (projectUserData.DeletedAt); }); // Warn the user that the test result might be invalid if (TimeZone.CurrentTimeZone.GetUtcOffset (DateTime.Now).TotalMinutes >= 0) { Assert.Inconclusive ("The test machine timezone should be set to GTM-1 or less to test datetime comparison."); } }