From 49f03c0a3c6fc01328d5035efa421b5ef7768f93 Mon Sep 17 00:00:00 2001
From: Lorenz Stechauner <lorenz.stechauner@necronda.net>
Date: Tue, 23 Jul 2024 10:15:17 +0200
Subject: [PATCH] CheckComboBox: Fix SelectedItems property

---
 Elwig/Controls/CheckComboBox.cs  |  3 ++-
 Elwig/Windows/MailWindow.xaml    |  1 +
 Elwig/Windows/MailWindow.xaml.cs |  6 +++---
 Tests/E2ETests/MainWindowTest.cs | 11 +++++++++++
 4 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/Elwig/Controls/CheckComboBox.cs b/Elwig/Controls/CheckComboBox.cs
index a66864f..fe94f66 100644
--- a/Elwig/Controls/CheckComboBox.cs
+++ b/Elwig/Controls/CheckComboBox.cs
@@ -8,7 +8,7 @@ using System.Windows.Controls;
 namespace Elwig.Controls {
     public class CheckComboBox : ListBox {
 
-        public new static readonly DependencyProperty SelectedItemsProperty = DependencyProperty.Register(nameof(SelectedItems), typeof(IList), typeof(CheckComboBox), new FrameworkPropertyMetadata(new ObservableCollection<object>(), FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, OnSelectedItemsChangedCallback));
+        public new static readonly DependencyProperty SelectedItemsProperty = DependencyProperty.Register(nameof(SelectedItems), typeof(IList), typeof(CheckComboBox), new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, OnSelectedItemsChangedCallback));
         public new IList SelectedItems {
             get => (IList)GetValue(SelectedItemsProperty);
             set => SetValue(SelectedItemsProperty, value);
@@ -72,6 +72,7 @@ namespace Elwig.Controls {
 
         public CheckComboBox() {
             SelectionMode = SelectionMode.Multiple;
+            SelectedItems = new ObservableCollection<object>();
         }
 
         public override void OnApplyTemplate() {
diff --git a/Elwig/Windows/MailWindow.xaml b/Elwig/Windows/MailWindow.xaml
index a00e448..ca68832 100644
--- a/Elwig/Windows/MailWindow.xaml
+++ b/Elwig/Windows/MailWindow.xaml
@@ -1,5 +1,6 @@
 <local:ContextWindow
         x:Class="Elwig.Windows.MailWindow"
+        AutomationProperties.AutomationId="MailWindow"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
diff --git a/Elwig/Windows/MailWindow.xaml.cs b/Elwig/Windows/MailWindow.xaml.cs
index f0ae31a..18c893d 100644
--- a/Elwig/Windows/MailWindow.xaml.cs
+++ b/Elwig/Windows/MailWindow.xaml.cs
@@ -139,7 +139,7 @@ namespace Elwig.Windows {
             AvaiableDocumentsList.ItemsSource = l;
 
             ControlUtils.RenewItemsSource(MemberBranchInput, await ctx.Branches
-                .Where(b => b.Members.Any())
+                .Where(b => b.Members.Count != 0)
                 .OrderBy(b => b.Name)
                 .ToListAsync(), MemberInput_SelectionChanged);
             if (MemberBranchInput.SelectedItems.Count == 0) {
@@ -148,7 +148,7 @@ namespace Elwig.Windows {
                 MemberBranchInput.SelectionChanged += MemberInput_SelectionChanged;
             }
             ControlUtils.RenewItemsSource(MemberKgInput, await ctx.Katastralgemeinden
-                .Where(k => k.WbKg!.Members.Any())
+                .Where(k => k.WbKg!.Members.Count != 0)
                 .OrderBy(k => k.Name)
                 .ToListAsync(), MemberInput_SelectionChanged);
             if (MemberKgInput.SelectedItems.Count == 0) {
@@ -561,7 +561,7 @@ namespace Elwig.Windows {
             double totalNum = printNum + emailNum;
 
             var email = memberDocs
-                .Where(d => d.Docs.Count > 0 && d.Member.EmailAddresses.Any() && (emailMode == 2 || (emailMode == 1 && d.Member.ContactViaEmail)))
+                .Where(d => d.Docs.Count > 0 && d.Member.EmailAddresses.Count > 0 && (emailMode == 2 || (emailMode == 1 && d.Member.ContactViaEmail)))
                 .ToDictionary(d => d.Member, m => {
                     var docs = m.Docs.Select(d => d.Doc).ToList();
                     foreach (var doc in docs) {
diff --git a/Tests/E2ETests/MainWindowTest.cs b/Tests/E2ETests/MainWindowTest.cs
index 677e5ec..1fd2dd6 100644
--- a/Tests/E2ETests/MainWindowTest.cs
+++ b/Tests/E2ETests/MainWindowTest.cs
@@ -46,5 +46,16 @@
                 window.Close();
             });
         }
+
+        [Test]
+        public void Test_Open_MailWindow() {
+            Assert.DoesNotThrow(() => {
+                Session.App.FindElement(By.Name("Rundschreiben")).Click();
+                Thread.Sleep(Utils.WINDOW_OPEN_SLEEP);
+                var window = Session.CreateWindowDriver("MailWindow");
+                Assert.That(window.Title, Is.EqualTo($"Rundschreiben - Lese {Elwig.Helpers.Utils.Today.Year} - Elwig"));
+                window.Close();
+            });
+        }
     }
 }