bovender framework
C# framework that implements MVVM and more
ReleaseInfoViewModelTest.cs
1 /* ReleaseInfoViewModelTest.cs
2  * part of Bovender framework
3  *
4  * Copyright 2014-2018 Daniel Kraus
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18 using System;
19 using NUnit.Framework;
20 using Bovender.Versioning;
21 using System.Threading;
22 
23 namespace Bovender.UnitTests.Versioning
24 {
25  [TestFixture]
27  {
28  [SetUp]
29  public void Setup()
30  {
31  SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());
32  Logging.LogFile.Default.EnableDebugLogging();
33  }
34 
35  [Test]
36  public void FetchReleaseInfo()
37  {
38  string raw = "2.0.0\r\nhttp://release.exe\r\nabcdef1234567890\r\nSummary";
40  ReleaseInfoViewModel rvm = new ReleaseInfoViewModel(ri, new SemanticVersion("1.0.0"));
41  bool updateAvailableMessageSent = false;
42  bool updateNotAvailableMessageSent = false;
43  bool failureMessageSent = false;
44  bool busy = true;
45  rvm.UpdateAvailableMessage.Sent += (sender, args) =>
46  {
47  updateAvailableMessageSent = true;
48  };
49  rvm.NoUpdateAvailableMessage.Sent += (sender, args) =>
50  {
51  updateNotAvailableMessageSent = true;
52  };
53  rvm.ExceptionMessage.Sent += (sender, args) =>
54  {
55  failureMessageSent = true;
56  };
57  rvm.ProcessFinishedMessage.Sent += (sender, args) =>
58  {
59  busy = false;
60  };
61  rvm.CheckForUpdateCommand.Execute(null);
62  while (busy) ;
63  Assert.IsTrue(updateAvailableMessageSent, "UpdateAvailableMessage was not sent");
64  Assert.IsFalse(updateNotAvailableMessageSent, "NoUpdateAvailableMessage was sent?!");
65  Assert.IsFalse(failureMessageSent, "FailureMessage");
66  }
67 
68  [Test]
69  public void FetchReleaseInfoNotNewer()
70  {
71  string raw = "2.0.0\r\nhttp://release.exe\r\nabcdef1234567890\r\nSummary";
73  ReleaseInfoViewModel rvm = new ReleaseInfoViewModel(ri, new SemanticVersion("2.0.0"));
74  bool updateAvailableMessageSent = false;
75  bool updateNotAvailableMessageSent = false;
76  bool failureMessageSent = false;
77  bool busy = true;
78  rvm.UpdateAvailableMessage.Sent += (sender, args) =>
79  {
80  updateAvailableMessageSent = true;
81  };
82  rvm.NoUpdateAvailableMessage.Sent += (sender, args) =>
83  {
84  updateNotAvailableMessageSent = true;
85  };
86  rvm.ExceptionMessage.Sent += (sender, args) =>
87  {
88  failureMessageSent = true;
89  };
90  rvm.ProcessFinishedMessage.Sent += (sender, args) =>
91  {
92  busy = false;
93  };
94  rvm.CheckForUpdateCommand.Execute(null);
95  while (busy) ;
96  Assert.IsFalse(updateAvailableMessageSent);
97  Assert.IsTrue(updateNotAvailableMessageSent);
98  Assert.IsFalse(failureMessageSent, "FailureMessage");
99  }
100 
101  [Test]
102  public void FetchInvalidReleaseInfo()
103  {
104  string raw = "2.0.0";
106  ReleaseInfoViewModel rvm = new ReleaseInfoViewModel(ri, new SemanticVersion("1.0.0"));
107  bool updateAvailableMessageSent = false;
108  bool updateNotAvailableMessageSent = false;
109  bool failureMessageSent = false;
110  bool busy = true;
111  rvm.UpdateAvailableMessage.Sent += (sender, args) =>
112  {
113  updateAvailableMessageSent = true;
114  };
115  rvm.NoUpdateAvailableMessage.Sent += (sender, args) =>
116  {
117  updateNotAvailableMessageSent = true;
118  };
119  rvm.ExceptionMessage.Sent += (sender, args) =>
120  {
121  failureMessageSent = true;
122  };
123  rvm.ProcessFinishedMessage.Sent += (sender, args) =>
124  {
125  busy = false;
126  };
127  rvm.CheckForUpdateCommand.Execute(null);
128  while (busy) ;
129  Assert.IsFalse(updateAvailableMessageSent, "UpdateAvailableMessage");
130  Assert.IsFalse(updateNotAvailableMessageSent, "NoUpdateAvailableMessage");
131  Assert.IsTrue(failureMessageSent, "FailureMessage");
132  }
133  }
134 }
Message< ProcessMessageContent > ProcessFinishedMessage
Message that signals when the process succeeded.
EventHandler< MessageArgs< T > > Sent
Consumers of the view model subscribe to this event if they want to listen for the message...
Definition: Message.cs:39
A view model for the IReleaseInfo interface; i.e.
Class that handles semantic versioning.