public void EntityClearSubjectsWhenDeleted() { EAVModelLibrary.ModelEntity anEntity = new EAVModelLibrary.ModelEntity() { EntityID = rng.Next() }; Assert.AreEqual(EAV.Model.ObjectState.New, anEntity.ObjectState, "Object state should be 'New' on creation."); EAVModelLibrary.ModelSubject value = new EAVModelLibrary.ModelSubject() { SubjectID = rng.Next() }; anEntity.Subjects.Add(value); Assert.IsTrue(anEntity.Subjects.Contains(value), "Property 'Subjects' was not updated properly."); Assert.AreEqual(anEntity, value.Entity, "Property 'Entity' was not set properly."); Assert.AreEqual(anEntity.EntityID, value.EntityID, "Property 'EntityID' was not reported properly."); Assert.AreEqual(EAV.Model.ObjectState.New, anEntity.ObjectState, "Object state should remain 'New' when property set."); anEntity.MarkUnmodified(); value.MarkUnmodified(); Assert.AreEqual(EAV.Model.ObjectState.Unmodified, anEntity.ObjectState, "Object state failed to transition to 'Unmodified'."); Assert.AreEqual(EAV.Model.ObjectState.Unmodified, value.ObjectState, "Object state failed to transition to 'Unmodified'."); anEntity.MarkDeleted(); Assert.AreEqual(EAV.Model.ObjectState.Deleted, anEntity.ObjectState, "Object state failed to transition to 'Deleted'."); Assert.AreEqual(EAV.Model.ObjectState.Deleted, value.ObjectState, "Object state failed to transition to 'Deleted'."); anEntity.Subjects.Clear(); }
public void EntityClearSubjectsWhenNew() { EAVModelLibrary.ModelEntity anEntity = new EAVModelLibrary.ModelEntity() { EntityID = rng.Next() }; Assert.AreEqual(EAV.Model.ObjectState.New, anEntity.ObjectState, "Object state should be 'New' on creation."); EAVModelLibrary.ModelSubject value = new EAVModelLibrary.ModelSubject() { SubjectID = rng.Next() }; anEntity.Subjects.Add(value); value = new EAVModelLibrary.ModelSubject() { SubjectID = rng.Next() }; anEntity.Subjects.Add(value); Assert.IsTrue(anEntity.Subjects.Contains(value), "Property 'Subjects' was not updated properly."); Assert.AreEqual(anEntity, value.Entity, "Property 'Entity' was not set properly."); Assert.AreEqual(anEntity.EntityID, value.EntityID, "Property 'EntityID' was not reported properly."); Assert.AreEqual(EAV.Model.ObjectState.New, anEntity.ObjectState, "Object state should remain 'New' when property set."); anEntity.Subjects.Clear(); Assert.IsFalse(anEntity.Subjects.Contains(value), "Property 'Subjects' was not updated properly."); Assert.IsNull(value.Entity, "Property 'Entity' was not set properly."); Assert.IsNull(value.EntityID, "Property 'EntityID' was not reported properly."); Assert.AreEqual(EAV.Model.ObjectState.New, anEntity.ObjectState, "Object state should remain 'New' when property set."); }
public void SaveSubject(EAV.Model.IModelSubject subject) { HttpResponseMessage response; if (subject.ObjectState == EAV.Model.ObjectState.New) { response = client.PostAsJsonAsync <EAV.Store.IStoreSubject>(String.Format("api/metadata/subjects"), subject).Result; if (response.IsSuccessStatusCode) { EAVModelLibrary.ModelSubject newSubject = response.Content.ReadAsAsync <EAVModelLibrary.ModelSubject>().Result; subject.SubjectID = newSubject.SubjectID; subject.MarkUnmodified(); } else { throw (new ApplicationException("Attempt to create subject failed.")); } } else if (subject.ObjectState == EAV.Model.ObjectState.Modified) { response = client.PatchAsJsonAsync <EAV.Store.IStoreSubject>("api/metadata/subjects", subject).Result; if (response.IsSuccessStatusCode) { subject.MarkUnmodified(); } else { throw (new ApplicationException("Attempt to update subject failed.")); } } if (subject.ObjectState == EAV.Model.ObjectState.Deleted) { response = client.DeleteAsync(String.Format("api/metadata/subjects/{0}", subject.SubjectID.GetValueOrDefault())).Result; if (response.IsSuccessStatusCode) { } else { throw (new ApplicationException("Attempt to delete subject failed.")); } } }