~ubuntu-branches/debian/sid/nunit/sid

« back to all changes in this revision

Viewing changes to src/ProjectEditor/tests/Presenters/MainPresenterTests.cs

  • Committer: Package Import Robot
  • Author(s): Jo Shields
  • Date: 2014-09-16 13:43:36 UTC
  • mfrom: (1.1.5)
  • Revision ID: package-import@ubuntu.com-20140916134336-kjxz48tty6lx2ja5
Tags: 2.6.3+dfsg-1
* [c7bd1b5] Imported Upstream version 2.6.3+dfsg
* [bcb4bf8] Move nunit-console-runner to GAC-installed libnunit2.6, 
  don't treat it as a private lib. This lib is signed, and treated 
  as a GAC lib by consumers such as MonoDevelop.
* [7f08e99] Bump version to 2.6.3 as required
* [84535eb] Refreshed patches
* [8479f61] Split package up into per-assembly packages. This makes 
  ABI tracking easier in the future, as we can meaningfully have GAC 
  policy for cases where ABI isn't truly bumped, and no policy for 
  cases where it is. For example, if nunit.framework bumps ABI but 
  nunit.core does not, previously we would need to rebuild everything 
  using NUnit, but under the new split packaging, that rebuild would 
  not be needed for apps only using nunit.core.
* [17a7dc7] Add missing nunit.mocks.dll to nunit.pc

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// ****************************************************************
2
 
// Copyright 2011, Charlie Poole
3
 
// This is free software licensed under the NUnit license. You may
4
 
// obtain a copy of the license at http://nunit.org
5
 
// ****************************************************************
6
 
 
7
 
#if NET_3_5 || NET_4_0
8
 
using System;
9
 
using NSubstitute;
10
 
using NUnit.Framework;
11
 
using NUnit.TestUtilities;
12
 
 
13
 
namespace NUnit.ProjectEditor.Tests.Presenters
14
 
{
15
 
    [TestFixture, Platform("Net-3.5,Mono-3.5,Net-4.0")]
16
 
    public class MainPresenterTests
17
 
    {
18
 
        // TODO: Embed project resources
19
 
        private static readonly string GOOD_PROJECT = "NUnitTests.nunit";
20
 
        private static readonly string BAD_PROJECT = "BadProject.nunit";
21
 
        private static readonly string NONEXISTENT_PROJECT = "NonExistent.nunit";
22
 
 
23
 
        private IMainView view;
24
 
        private IProjectDocument doc;
25
 
        private MainPresenter presenter;
26
 
 
27
 
        [SetUp]
28
 
        public void Initialize()
29
 
        {
30
 
            view = Substitute.For<IMainView>();
31
 
            doc = new ProjectDocument();
32
 
            presenter = new MainPresenter(doc, view);
33
 
        }
34
 
 
35
 
        [Test]
36
 
        public void ActiveViewChanged_WhenNoProjectIsOpen_TabViewsRemainHidden()
37
 
        {
38
 
            view.SelectedView.Returns(SelectedView.XmlView);
39
 
            view.ActiveViewChanged += Raise.Event<ActiveViewChangedHandler>();
40
 
            Assert.False(view.PropertyView.Visible);
41
 
            Assert.False(view.XmlView.Visible);
42
 
 
43
 
            view.SelectedView.Returns(SelectedView.PropertyView);
44
 
            view.ActiveViewChanged += Raise.Event<ActiveViewChangedHandler>();
45
 
            Assert.False(view.PropertyView.Visible);
46
 
            Assert.False(view.XmlView.Visible);
47
 
        }
48
 
 
49
 
        [Test]
50
 
        public void ActiveViewChanged_WhenProjectIsOpen_TabViewsAreVisible()
51
 
        {
52
 
            doc.CreateNewProject();
53
 
 
54
 
            view.SelectedView.Returns(SelectedView.XmlView);
55
 
            view.ActiveViewChanged += Raise.Event<ActiveViewChangedHandler>();
56
 
 
57
 
            Assert.True(view.PropertyView.Visible);
58
 
            Assert.True(view.XmlView.Visible);
59
 
 
60
 
        }
61
 
 
62
 
        [Test]
63
 
        public void CloseProject_OnLoad_IsDisabled()
64
 
        {
65
 
            Assert.False(view.CloseProjectCommand.Enabled);
66
 
        }
67
 
 
68
 
        [Test]
69
 
        public void CloseProject_AfterCreatingNewProject_IsEnabled()
70
 
        {
71
 
            view.NewProjectCommand.Execute += Raise.Event<CommandDelegate>();
72
 
 
73
 
            Assert.True(view.CloseProjectCommand.Enabled);
74
 
        }
75
 
 
76
 
        [Test]
77
 
        public void CloseProject_AfterOpeningGoodProject_IsEnabled()
78
 
        {
79
 
            using (TempFile file = new TempFile(GOOD_PROJECT))
80
 
            {
81
 
                view.DialogManager.GetFileOpenPath("", "", "").ReturnsForAnyArgs(file.Path);
82
 
                view.OpenProjectCommand.Execute += Raise.Event<CommandDelegate>();
83
 
 
84
 
                Assert.True(view.CloseProjectCommand.Enabled);
85
 
            }
86
 
        }
87
 
 
88
 
        [Test]
89
 
        public void NewProject_OnLoad_IsEnabled()
90
 
        {
91
 
            Assert.True(view.NewProjectCommand.Enabled);
92
 
        }
93
 
 
94
 
        [Test]
95
 
        public void NewProject_WhenClicked_CreatesNewProject()
96
 
        {
97
 
            view.NewProjectCommand.Execute += Raise.Event<CommandDelegate>();
98
 
 
99
 
            Assert.IsNotNull(doc.RootNode);
100
 
            Assert.That(doc.Name, Is.StringMatching("Project\\d"));
101
 
        }
102
 
 
103
 
        [Test]
104
 
        public void OpenProject_OnLoad_IsEnabled()
105
 
        {
106
 
            Assert.True(view.OpenProjectCommand.Enabled);
107
 
        }
108
 
 
109
 
        [Test]
110
 
        public void OpenProject_WhenClickedAndProjectIsValid_OpensProject()
111
 
        {
112
 
            using (TempFile file = new TempFile(GOOD_PROJECT))
113
 
            {
114
 
                view.DialogManager.GetFileOpenPath("Open", "", "").ReturnsForAnyArgs(file.Path);
115
 
                view.OpenProjectCommand.Execute += Raise.Event<CommandDelegate>();
116
 
 
117
 
                Assert.NotNull(doc.XmlText);
118
 
                Assert.NotNull(doc.RootNode);
119
 
                Assert.AreEqual("NUnitTests", doc.Name);
120
 
            }
121
 
        }
122
 
 
123
 
        [Test]
124
 
        public void OpenProject_WhenClickedAndProjectXmlIsNotValid_OpensProject()
125
 
        {
126
 
            using (TempFile file = new TempFile(BAD_PROJECT))
127
 
            {
128
 
                view.DialogManager.GetFileOpenPath("Open", "", "").ReturnsForAnyArgs(file.Path);
129
 
                view.OpenProjectCommand.Execute += Raise.Event<CommandDelegate>();
130
 
 
131
 
                Assert.NotNull(doc.XmlText);
132
 
                Assert.Null(doc.RootNode);
133
 
                Assert.AreEqual("BadProject", doc.Name);
134
 
 
135
 
                Assert.AreEqual(SelectedView.XmlView, view.SelectedView);
136
 
            }
137
 
        }
138
 
 
139
 
        [Test]
140
 
        public void OpenProject_WhenClickedAndProjectDoesNotExist_DisplaysError()
141
 
        {
142
 
            view.DialogManager.GetFileOpenPath("Open", "", "").ReturnsForAnyArgs(NONEXISTENT_PROJECT);
143
 
            view.OpenProjectCommand.Execute += Raise.Event<CommandDelegate>();
144
 
 
145
 
            view.MessageDisplay.Received().Error(Arg.Is((string x) => x.StartsWith("Could not find file")));
146
 
 
147
 
            Assert.Null(doc.XmlText);
148
 
            Assert.Null(doc.RootNode);
149
 
        }
150
 
 
151
 
        [Test]
152
 
        public void SaveProject_OnLoad_IsDisabled()
153
 
        {
154
 
            Assert.False(view.SaveProjectCommand.Enabled);
155
 
        }
156
 
 
157
 
        [Test]
158
 
        public void SaveProject_AfterCreatingNewProject_IsEnabled()
159
 
        {
160
 
            view.NewProjectCommand.Execute += Raise.Event<CommandDelegate>();
161
 
 
162
 
            Assert.True(view.SaveProjectCommand.Enabled);
163
 
        }
164
 
 
165
 
        [Test]
166
 
        public void SaveProject_AfterOpeningGoodProject_IsEnabled()
167
 
        {
168
 
            using (TempFile file = new TempFile(GOOD_PROJECT))
169
 
            {
170
 
                view.DialogManager.GetFileOpenPath("", "", "").ReturnsForAnyArgs(file.Path);
171
 
                view.OpenProjectCommand.Execute += Raise.Event<CommandDelegate>();
172
 
 
173
 
                Assert.True(view.SaveProjectCommand.Enabled);
174
 
            }
175
 
        }
176
 
 
177
 
        [Test]
178
 
        public void SaveProjectAs_OnLoad_IsDisabled()
179
 
        {
180
 
            Assert.False(view.SaveProjectAsCommand.Enabled);
181
 
        }
182
 
 
183
 
        [Test]
184
 
        public void SaveProjectAs_AfterCreatingNewProject_IsEnabled()
185
 
        {
186
 
            view.NewProjectCommand.Execute += Raise.Event<CommandDelegate>();
187
 
 
188
 
            Assert.True(view.SaveProjectAsCommand.Enabled);
189
 
        }
190
 
 
191
 
        [Test]
192
 
        public void SaveProjectAs_AfterOpeningGoodProject_IsEnabled()
193
 
        {
194
 
            using (TempFile file = new TempFile(GOOD_PROJECT))
195
 
            {
196
 
                view.DialogManager.GetFileOpenPath("", "", "").ReturnsForAnyArgs(file.Path);
197
 
                view.OpenProjectCommand.Execute += Raise.Event<CommandDelegate>();
198
 
 
199
 
                Assert.True(view.SaveProjectAsCommand.Enabled);
200
 
            }
201
 
        }
202
 
 
203
 
        private class TempFile : TempResourceFile
204
 
        {
205
 
            public TempFile(string name) : base(typeof(NUnitProjectXml), "resources." + name, name) { }
206
 
        }
207
 
    }
208
 
}
209
 
#endif
 
1
// ****************************************************************
 
2
// Copyright 2011, Charlie Poole
 
3
// This is free software licensed under the NUnit license. You may
 
4
// obtain a copy of the license at http://nunit.org
 
5
// ****************************************************************
 
6
 
 
7
#if NET_3_5 || NET_4_0 || NET_4_5
 
8
using System;
 
9
using NSubstitute;
 
10
using NUnit.Framework;
 
11
using NUnit.TestUtilities;
 
12
 
 
13
namespace NUnit.ProjectEditor.Tests.Presenters
 
14
{
 
15
    [TestFixture, Platform("Net-3.5,Mono-3.5,Net-4.0")]
 
16
    public class MainPresenterTests
 
17
    {
 
18
        // TODO: Embed project resources
 
19
        private static readonly string GOOD_PROJECT = "NUnitTests.nunit";
 
20
        private static readonly string BAD_PROJECT = "BadProject.nunit";
 
21
        private static readonly string NONEXISTENT_PROJECT = "NonExistent.nunit";
 
22
 
 
23
        private IMainView view;
 
24
        private IProjectDocument doc;
 
25
        private MainPresenter presenter;
 
26
 
 
27
        [SetUp]
 
28
        public void Initialize()
 
29
        {
 
30
            view = Substitute.For<IMainView>();
 
31
            doc = new ProjectDocument();
 
32
            presenter = new MainPresenter(doc, view);
 
33
        }
 
34
 
 
35
        [Test]
 
36
        public void ActiveViewChanged_WhenNoProjectIsOpen_TabViewsRemainHidden()
 
37
        {
 
38
            view.SelectedView.Returns(SelectedView.XmlView);
 
39
            view.ActiveViewChanged += Raise.Event<ActiveViewChangedHandler>();
 
40
            Assert.False(view.PropertyView.Visible);
 
41
            Assert.False(view.XmlView.Visible);
 
42
 
 
43
            view.SelectedView.Returns(SelectedView.PropertyView);
 
44
            view.ActiveViewChanged += Raise.Event<ActiveViewChangedHandler>();
 
45
            Assert.False(view.PropertyView.Visible);
 
46
            Assert.False(view.XmlView.Visible);
 
47
        }
 
48
 
 
49
        [Test]
 
50
        public void ActiveViewChanged_WhenProjectIsOpen_TabViewsAreVisible()
 
51
        {
 
52
            doc.CreateNewProject();
 
53
 
 
54
            view.SelectedView.Returns(SelectedView.XmlView);
 
55
            view.ActiveViewChanged += Raise.Event<ActiveViewChangedHandler>();
 
56
 
 
57
            Assert.True(view.PropertyView.Visible);
 
58
            Assert.True(view.XmlView.Visible);
 
59
 
 
60
        }
 
61
 
 
62
        [Test]
 
63
        public void CloseProject_OnLoad_IsDisabled()
 
64
        {
 
65
            Assert.False(view.CloseProjectCommand.Enabled);
 
66
        }
 
67
 
 
68
        [Test]
 
69
        public void CloseProject_AfterCreatingNewProject_IsEnabled()
 
70
        {
 
71
            view.NewProjectCommand.Execute += Raise.Event<CommandDelegate>();
 
72
 
 
73
            Assert.True(view.CloseProjectCommand.Enabled);
 
74
        }
 
75
 
 
76
        [Test]
 
77
        public void CloseProject_AfterOpeningGoodProject_IsEnabled()
 
78
        {
 
79
            using (TempFile file = new TempFile(GOOD_PROJECT))
 
80
            {
 
81
                view.DialogManager.GetFileOpenPath("", "", "").ReturnsForAnyArgs(file.Path);
 
82
                view.OpenProjectCommand.Execute += Raise.Event<CommandDelegate>();
 
83
 
 
84
                Assert.True(view.CloseProjectCommand.Enabled);
 
85
            }
 
86
        }
 
87
 
 
88
        [Test]
 
89
        public void NewProject_OnLoad_IsEnabled()
 
90
        {
 
91
            Assert.True(view.NewProjectCommand.Enabled);
 
92
        }
 
93
 
 
94
        [Test]
 
95
        public void NewProject_WhenClicked_CreatesNewProject()
 
96
        {
 
97
            view.NewProjectCommand.Execute += Raise.Event<CommandDelegate>();
 
98
 
 
99
            Assert.IsNotNull(doc.RootNode);
 
100
            Assert.That(doc.Name, Is.StringMatching("Project\\d"));
 
101
        }
 
102
 
 
103
        [Test]
 
104
        public void OpenProject_OnLoad_IsEnabled()
 
105
        {
 
106
            Assert.True(view.OpenProjectCommand.Enabled);
 
107
        }
 
108
 
 
109
        [Test]
 
110
        public void OpenProject_WhenClickedAndProjectIsValid_OpensProject()
 
111
        {
 
112
            using (TempFile file = new TempFile(GOOD_PROJECT))
 
113
            {
 
114
                view.DialogManager.GetFileOpenPath("Open", "", "").ReturnsForAnyArgs(file.Path);
 
115
                view.OpenProjectCommand.Execute += Raise.Event<CommandDelegate>();
 
116
 
 
117
                Assert.NotNull(doc.XmlText);
 
118
                Assert.NotNull(doc.RootNode);
 
119
                Assert.AreEqual("NUnitTests", doc.Name);
 
120
            }
 
121
        }
 
122
 
 
123
        [Test]
 
124
        public void OpenProject_WhenClickedAndProjectXmlIsNotValid_OpensProject()
 
125
        {
 
126
            using (TempFile file = new TempFile(BAD_PROJECT))
 
127
            {
 
128
                view.DialogManager.GetFileOpenPath("Open", "", "").ReturnsForAnyArgs(file.Path);
 
129
                view.OpenProjectCommand.Execute += Raise.Event<CommandDelegate>();
 
130
 
 
131
                Assert.NotNull(doc.XmlText);
 
132
                Assert.Null(doc.RootNode);
 
133
                Assert.AreEqual("BadProject", doc.Name);
 
134
 
 
135
                Assert.AreEqual(SelectedView.XmlView, view.SelectedView);
 
136
            }
 
137
        }
 
138
 
 
139
        [Test]
 
140
        public void OpenProject_WhenClickedAndProjectDoesNotExist_DisplaysError()
 
141
        {
 
142
            view.DialogManager.GetFileOpenPath("Open", "", "").ReturnsForAnyArgs(NONEXISTENT_PROJECT);
 
143
            view.OpenProjectCommand.Execute += Raise.Event<CommandDelegate>();
 
144
 
 
145
            view.MessageDisplay.Received().Error(Arg.Is((string x) => x.Contains(NONEXISTENT_PROJECT)));
 
146
 
 
147
            Assert.Null(doc.XmlText);
 
148
            Assert.Null(doc.RootNode);
 
149
        }
 
150
 
 
151
        [Test]
 
152
        public void SaveProject_OnLoad_IsDisabled()
 
153
        {
 
154
            Assert.False(view.SaveProjectCommand.Enabled);
 
155
        }
 
156
 
 
157
        [Test]
 
158
        public void SaveProject_AfterCreatingNewProject_IsEnabled()
 
159
        {
 
160
            view.NewProjectCommand.Execute += Raise.Event<CommandDelegate>();
 
161
 
 
162
            Assert.True(view.SaveProjectCommand.Enabled);
 
163
        }
 
164
 
 
165
        [Test]
 
166
        public void SaveProject_AfterOpeningGoodProject_IsEnabled()
 
167
        {
 
168
            using (TempFile file = new TempFile(GOOD_PROJECT))
 
169
            {
 
170
                view.DialogManager.GetFileOpenPath("", "", "").ReturnsForAnyArgs(file.Path);
 
171
                view.OpenProjectCommand.Execute += Raise.Event<CommandDelegate>();
 
172
 
 
173
                Assert.True(view.SaveProjectCommand.Enabled);
 
174
            }
 
175
        }
 
176
 
 
177
        [Test]
 
178
        public void SaveProjectAs_OnLoad_IsDisabled()
 
179
        {
 
180
            Assert.False(view.SaveProjectAsCommand.Enabled);
 
181
        }
 
182
 
 
183
        [Test]
 
184
        public void SaveProjectAs_AfterCreatingNewProject_IsEnabled()
 
185
        {
 
186
            view.NewProjectCommand.Execute += Raise.Event<CommandDelegate>();
 
187
 
 
188
            Assert.True(view.SaveProjectAsCommand.Enabled);
 
189
        }
 
190
 
 
191
        [Test]
 
192
        public void SaveProjectAs_AfterOpeningGoodProject_IsEnabled()
 
193
        {
 
194
            using (TempFile file = new TempFile(GOOD_PROJECT))
 
195
            {
 
196
                view.DialogManager.GetFileOpenPath("", "", "").ReturnsForAnyArgs(file.Path);
 
197
                view.OpenProjectCommand.Execute += Raise.Event<CommandDelegate>();
 
198
 
 
199
                Assert.True(view.SaveProjectAsCommand.Enabled);
 
200
            }
 
201
        }
 
202
 
 
203
        private class TempFile : TempResourceFile
 
204
        {
 
205
            public TempFile(string name) : base(typeof(NUnitProjectXml), "resources." + name, name) { }
 
206
        }
 
207
    }
 
208
}
 
209
#endif