[Test] public void TestFederationPropagationOfContentBaseFederationUpdates() { AbsoluteTopicName tn = new AbsoluteTopicName("EventTest", _base.Namespace); _base.WriteTopic(tn.LocalName, @"Stay1: hello Stay2: foo Go1: foo Go2: foo Change1: blag Change2: blag "); FederationUpdate expected = new FederationUpdate(); expected.RecordPropertyChange(tn, "_ModificationTime", FederationUpdate.PropertyChangeType.PropertyUpdate); expected.RecordPropertyChange(tn, "_Body", FederationUpdate.PropertyChangeType.PropertyUpdate); expected.RecordPropertyChange(tn, "Go1", FederationUpdate.PropertyChangeType.PropertyRemove); expected.RecordPropertyChange(tn, "Go2", FederationUpdate.PropertyChangeType.PropertyRemove); expected.RecordPropertyChange(tn, "Change1", FederationUpdate.PropertyChangeType.PropertyUpdate); expected.RecordPropertyChange(tn, "Change2", FederationUpdate.PropertyChangeType.PropertyUpdate); StartMonitoringFederationEvents(); _base.WriteTopic(tn.LocalName, @"Stay1: hello Stay2: foo Change1: new value Change2: new value "); StopMonitoringFederationEvents(); ContentBaseTests.CompareFederationUpdates(expected, _Events, false, true); }
public static void CompareFederationUpdates(FederationUpdate expected, IList events, bool considerTopicChanges, bool considerPropertyChanges) { Assert.IsTrue(events.Count > 0, "Did not get any federation update events"); FederationUpdate got = null; for (int i = 0; i < events.Count; i++) { if (i == 0) got = (FederationUpdate)(events[i]); else got.AddUpdatesFrom((FederationUpdate)(events[i])); } Assert.AreEqual(expected.FederationPropertiesChanged, got.FederationPropertiesChanged, "FederationPropertiesChanged doesn't match"); Assert.AreEqual(expected.NamespaceListChanged, got.NamespaceListChanged, "NamespaceListChanged doesn't match"); if (considerTopicChanges) { // OK, look to see if/where got and expected topics are different; assert that they're the same foreach (AbsoluteTopicName t in expected.CreatedTopics) Assert.IsTrue(got.CreatedTopics.Contains(t), "Missing created topic (" + t.FullnameWithVersion + ") from fired event(s)"); Assert.AreEqual(expected.CreatedTopics.Count, got.CreatedTopics.Count, "Non-matching number of created topics"); foreach (AbsoluteTopicName t in expected.UpdatedTopics) Assert.IsTrue(got.UpdatedTopics.Contains(t), "Missing updated topic (" + t.FullnameWithVersion + ") from fired event(s)"); Assert.AreEqual(expected.UpdatedTopics.Count, got.UpdatedTopics.Count, "Non-matching number of updated topics"); foreach (AbsoluteTopicName t in expected.DeletedTopics) Assert.IsTrue(got.DeletedTopics.Contains(t),"Missing deleted topic (" + t.FullnameWithVersion + ") from fired event(s)"); Assert.AreEqual(expected.DeletedTopics.Count, got.DeletedTopics.Count,"Non-matching number of deleted topics"); } if (considerPropertyChanges) { // Start by looking through the topics to be sure it's the expected set foreach (AbsoluteTopicName t in expected.AllTopicsWithChangedProperties) Assert.IsTrue(got.AllTopicsWithChangedProperties.Contains(t), "Missing topic with property update(s) (" + t.FullnameWithVersion + ")"); Assert.AreEqual(expected.AllTopicsWithChangedProperties.Count, got.AllTopicsWithChangedProperties.Count, "Non-matching number of topics with property updates"); // OK, we have the right topics; let's check each one for the right set of properties and the right kind of changes foreach (AbsoluteTopicName t in expected.AllTopicsWithChangedProperties) { // check added properties for the topic ComparePropertyUpdatesForVerb(t, expected.AddedPropertiesForTopic(t), got.AddedPropertiesForTopic(t), "added"); ComparePropertyUpdatesForVerb(t, expected.ChangedPropertiesForTopic(t), got.ChangedPropertiesForTopic(t), "changed"); ComparePropertyUpdatesForVerb(t, expected.RemovedPropertiesForTopic(t), got.RemovedPropertiesForTopic(t), "removed"); } } }
public void TestTopicUpdateWhenAuthorChanges() { AbsoluteTopicName tn = new AbsoluteTopicName("AuthorEventTest", _base.Namespace); FederationUpdate expected = new FederationUpdate(); expected.RecordPropertyChange(tn, "_LastModifiedBy", FederationUpdate.PropertyChangeType.PropertyUpdate); expected.RecordPropertyChange(tn, "_Body", FederationUpdate.PropertyChangeType.PropertyUpdate); expected.RecordPropertyChange(tn, "_ModificationTime", FederationUpdate.PropertyChangeType.PropertyUpdate); WriteTestTopicAndNewVersion(_base, tn.Name, "this is the original text", "pre modern man"); StartMonitoringEvents(_base); AbsoluteTopicName versioned = WriteTestTopicAndNewVersion(_base, tn.Name, "this is a change", "post modern man"); StopMonitoringEvents(_base); expected.RecordPropertyChange(versioned, "_LastModifiedBy", FederationUpdate.PropertyChangeType.PropertyAdd); expected.RecordPropertyChange(versioned, "_Body", FederationUpdate.PropertyChangeType.PropertyAdd); expected.RecordPropertyChange(versioned, "_ModificationTime", FederationUpdate.PropertyChangeType.PropertyAdd); expected.RecordPropertyChange(versioned, "_TopicName", FederationUpdate.PropertyChangeType.PropertyAdd); expected.RecordPropertyChange(versioned, "_TopicFullName", FederationUpdate.PropertyChangeType.PropertyAdd); expected.RecordPropertyChange(versioned, "_CreationTime", FederationUpdate.PropertyChangeType.PropertyAdd); CompareFederationUpdates(expected, _Events, false, true); }
public void TestTopicUpdateEvent() { AbsoluteTopicName tn = new AbsoluteTopicName("EventTest", _base.Namespace); FederationUpdate expected = new FederationUpdate(); expected.RecordUpdatedTopic(tn); _base.WriteTopic(tn.LocalName, "hello"); StartMonitoringEvents(_base); _base.WriteTopic(tn.LocalName, "second should be an update"); StopMonitoringEvents(_base); CompareFederationUpdates(expected, _Events, true, false); }
public void TestTopicRenameEventWithReferenceUpdating() { AbsoluteTopicName tn = new AbsoluteTopicName("EventTest", _base.Namespace); _base.WriteTopic(tn.LocalName, "hello"); AbsoluteTopicName tn2 = new AbsoluteTopicName("EventTest2", _base.Namespace); _base.WriteTopic(tn2.LocalName, "hello and reference to EventTest"); AbsoluteTopicName tn3 = new AbsoluteTopicName("EventTest3", _base.Namespace); _base.WriteTopic(tn3.LocalName, "hello and reference to EventTest"); AbsoluteTopicName newName = new AbsoluteTopicName("EventTestAfter", _base.Namespace); FederationUpdate expected = new FederationUpdate(); expected.RecordDeletedTopic(tn); expected.RecordCreatedTopic(newName); expected.RecordUpdatedTopic(tn2); expected.RecordUpdatedTopic(tn3); StartMonitoringEvents(_base); _base.RenameTopic(tn.LocalName, newName.Name, true); StopMonitoringEvents(_base); CompareFederationUpdates(expected, _Events, true, false); }
public void TestTopicPropertyCreateEvent() { AbsoluteTopicName tn = new AbsoluteTopicName("EventTest", _base.Namespace); FederationUpdate expected = new FederationUpdate(); expected.RecordPropertyChange(tn, "Prop1", FederationUpdate.PropertyChangeType.PropertyAdd); expected.RecordPropertyChange(tn, "Prop2", FederationUpdate.PropertyChangeType.PropertyAdd); expected.RecordPropertyChange(tn, "Prop3", FederationUpdate.PropertyChangeType.PropertyAdd); expected.RecordPropertyChange(tn, "_Body", FederationUpdate.PropertyChangeType.PropertyAdd); expected.RecordPropertyChange(tn, "_TopicName", FederationUpdate.PropertyChangeType.PropertyAdd); expected.RecordPropertyChange(tn, "_TopicFullName", FederationUpdate.PropertyChangeType.PropertyAdd); expected.RecordPropertyChange(tn, "_LastModifiedBy", FederationUpdate.PropertyChangeType.PropertyAdd); expected.RecordPropertyChange(tn, "_CreationTime", FederationUpdate.PropertyChangeType.PropertyAdd); expected.RecordPropertyChange(tn, "_ModificationTime", FederationUpdate.PropertyChangeType.PropertyAdd); StartMonitoringEvents(_base); _base.WriteTopic(tn.LocalName, @"Prop1: hello Prop2: goobye Prop3: yellow submarine "); StopMonitoringEvents(_base); CompareFederationUpdates(expected, _Events, false, true); }
public void TestTopicPropertyBodyPropertyDoesNotChangeIfBodyNotChanged() { AbsoluteTopicName tn = new AbsoluteTopicName("EventTest", _base.Namespace); string body = @"Prop1: hello Prop2: goobye Prop3: yellow submarine "; _base.WriteTopic(tn.LocalName, body); FederationUpdate expected = new FederationUpdate(); expected.RecordPropertyChange(tn, "_ModificationTime", FederationUpdate.PropertyChangeType.PropertyUpdate); StartMonitoringEvents(_base); _base.WriteTopic(tn.LocalName, body); StopMonitoringEvents(_base); CompareFederationUpdates(expected, _Events, false, true); }
public void TestTopicDeleteEventsForNamespaceDelete() { ContentBase cb = CreateStore("FlexWiki.Delete"); AbsoluteTopicName tn1 = new AbsoluteTopicName("EventTest1", cb.Namespace); cb.WriteTopicAndNewVersion(tn1.LocalName, "topic 1"); AbsoluteTopicName tn2 = new AbsoluteTopicName("EventTest2", cb.Namespace); cb.WriteTopicAndNewVersion(tn2.LocalName, "topic 2"); AbsoluteTopicName tn3 = new AbsoluteTopicName("EventTest3", cb.Namespace); cb.WriteTopicAndNewVersion(tn3.LocalName, "topic 3"); FederationUpdate expected = new FederationUpdate(); expected.RecordDeletedTopic(tn1); expected.RecordDeletedTopic(tn2); expected.RecordDeletedTopic(tn3); StartMonitoringEvents(cb); cb.Delete(); StopMonitoringEvents(cb); CompareFederationUpdates(expected, _Events, true, false); }
public void TestTopicCreateEventWhenCreatingWithNewVersion() { AbsoluteTopicName tnWithoutVersion = new AbsoluteTopicName("EventTest", _base.Namespace); AbsoluteTopicName tnWithVersion = new AbsoluteTopicName(tnWithoutVersion.Name, tnWithoutVersion.Namespace); tnWithVersion.Version = "1.2.3.4.5.6"; FederationUpdate expected = new FederationUpdate(); expected.RecordCreatedTopic(tnWithVersion); expected.RecordCreatedTopic(tnWithoutVersion); StartMonitoringEvents(_base); _base.WriteTopicAndNewVersion(tnWithVersion.LocalName, "hello"); StopMonitoringEvents(_base); CompareFederationUpdates(expected, _Events, true, false); }
[Test] public void TestFederationPropertiesChangedEventForAbout() { FederationUpdate expected = new FederationUpdate(); expected.FederationPropertiesChanged = true; StartMonitoringFederationEvents(); TheFederation.AboutWikiString = "Boo"; StopMonitoringFederationEvents(); ContentBaseTests.CompareFederationUpdates(expected, _Events, false, false); }