Example #1
0
        public void AddGetRemoveAlertTest()
        {
            using (var ctx = TestCommon.CreateClientContext())
            {
                ctx.Web.EnsureProperties(w => w.CurrentUser.Id, w => w.CurrentUser.LoginName);
                var currentUser      = ctx.Web.CurrentUser;
                var randomizer       = new Random();
                var randomAlertTitle = randomizer.Next(int.MaxValue).ToString();
                var list             = ctx.Web.GetListByTitle("PnPTestList");
                list.EnsureProperties(l => l.Id);
                var  listId = list.Id;
                Guid alertId;

                using (var scope = new PSTestScope(true))
                {
                    var results = scope.ExecuteCommand("Add-PnPAlert",
                                                       new CommandParameter("List", listId),
                                                       new CommandParameter("Title", randomAlertTitle));
                    Assert.IsNotNull(results);
                    Assert.IsTrue(results.Count > 0);
                    Assert.IsTrue(results[0].BaseObject.GetType() == typeof(AlertCreationInformation));
                }

                using (var scope = new PSTestScope(true))
                {
                    var results = scope.ExecuteCommand("Get-PnPAlert",
                                                       new CommandParameter("List", listId),
                                                       new CommandParameter("Title", randomAlertTitle));
                    Assert.IsNotNull(results);
                    Assert.AreEqual(1, results.Count);
                    Assert.IsTrue(results[0].BaseObject.GetType() == typeof(Alert));
                    var alert = results[0].BaseObject as Alert;
                    Assert.AreEqual(randomAlertTitle, alert.Title);
                    alertId = alert.ID;
                }

                using (var scope = new PSTestScope(true))
                {
                    var results = scope.ExecuteCommand("Get-PnPAlert",
                                                       new CommandParameter("Title", randomAlertTitle));
                    Assert.IsNotNull(results);
                    Assert.AreEqual(1, results.Count);
                }

                using (var scope = new PSTestScope(true))
                {
                    var results = scope.ExecuteCommand("Get-PnPAlert",
                                                       new CommandParameter("List", listId));
                    Assert.IsNotNull(results);
                    Assert.AreEqual(1, results.Count);
                }

                using (var scope = new PSTestScope(true))
                {
                    var results = scope.ExecuteCommand("Remove-PnPAlert",
                                                       new CommandParameter("Identity", alertId),
                                                       new CommandParameter("Force"));
                }

                // check that the alert has been deleted
                ctx.Web.EnsureProperties(w => w.CurrentUser.Alerts);
                var newAlerts = currentUser.Alerts.Where(a => a.Title == randomAlertTitle);
                Assert.AreEqual(0, newAlerts.Count(), "Alert is still present");
            }
        }
Example #2
0
        public void AddAlert_WithNonDefaultProperties_Test()
        {
            using (var ctx = TestCommon.CreateClientContext())
            {
                ctx.Web.EnsureProperties(w => w.CurrentUser.Id, w => w.CurrentUser.LoginName);
                var currentUser = ctx.Web.CurrentUser;
                // generate random alert title
                var randomizer = new Random();
                var alertTitle = randomizer.Next(int.MaxValue).ToString();
                var list       = ctx.Web.GetListByTitle("PnPTestList");
                list.EnsureProperties(l => l.Id);
                var listId      = list.Id;
                var currentTime = DateTime.Now;
                // note: SharePoint rounds the milliseconds away, so use a time without milliseconds for testing
                var alertTime = new DateTime(currentTime.Year, currentTime.Month, currentTime.Day, currentTime.Hour, currentTime.Minute, currentTime.Minute);

                // Execute cmd-let
                using (var scope = new PSTestScope(true))
                {
                    var results = scope.ExecuteCommand("Add-PnPAlert",
                                                       new CommandParameter("List", "PnPTestList"),
                                                       new CommandParameter("Title", alertTitle),
                                                       new CommandParameter("DeliveryMethod", AlertDeliveryChannel.Email), // cannot use SmS without having Frequency set to "Immediate"
                                                       new CommandParameter("ChangeType", AlertEventType.DeleteObject),
                                                       new CommandParameter("Frequency", AlertFrequency.Weekly),
                                                       new CommandParameter("Time", alertTime),
                                                       new CommandParameter("Filter", AlertFilter.SomeoneElseChangesAnItem)
                                                       );
                    Assert.IsNotNull(results);
                    Assert.IsTrue(results.Count > 0);
                }

                // get actual alert and check properties
                ctx.Web.EnsureProperties(w => w.CurrentUser.Alerts);
                var newAlerts = currentUser.Alerts.Where(a => a.Title == alertTitle);
                Assert.AreEqual(1, newAlerts.Count(), "Unexpected number of created alerts");
                var newAlert = newAlerts.First();
                newAlert.EnsureProperty(a => a.AlertTime);
                newAlert.EnsureProperty(a => a.Properties);
                newAlert.User.EnsureProperties(u => u.LoginName);
                newAlert.List.EnsureProperties(l => l.Id);
                ctx.ExecuteQueryRetry();

                try
                {
                    Assert.AreEqual(AlertFrequency.Weekly, newAlert.AlertFrequency);
                    Assert.AreEqual(AlertDeliveryChannel.Email, newAlert.DeliveryChannels);
                    Assert.AreEqual(AlertEventType.DeleteObject, newAlert.EventType);
                    Assert.AreEqual(AlertStatus.On, newAlert.Status);
                    Assert.AreEqual(AlertType.List, newAlert.AlertType);
                    Assert.AreEqual(currentUser.LoginName, newAlert.User.LoginName);
                    Assert.AreEqual(listId, newAlert.List.Id);

                    Assert.AreEqual(alertTime, newAlert.AlertTime);
                    Assert.AreEqual(1, newAlert.Properties.Count, "Unexpected number of properties");
                    Assert.IsTrue(newAlert.Properties.ContainsKey("filterindex"));
                    Assert.AreEqual("1", newAlert.Properties["filterindex"]);
                }
                finally
                {
                    // delete alert
                    currentUser.Alerts.DeleteAlert(newAlert.ID);
                    currentUser.Update();
                    ctx.ExecuteQueryRetry();
                }
            }
        }