Qml unit tests: method for executing onCompleted code

without all the infrastructure around in the unit tests
This commit is contained in:
Michael Lamers 2018-08-06 19:32:51 +02:00
parent ac41d23dd1
commit a7eb717f70
2 changed files with 60 additions and 71 deletions

View file

@ -5,6 +5,7 @@ using System.Threading.Tasks;
using Moq;
using Qml.Net.Internal;
using Qml.Net.Internal.Behaviors;
using Qml.Net.Internal.Qml;
namespace Qml.Net.Tests.Qml
{
@ -74,6 +75,24 @@ namespace Qml.Net.Tests.Qml
return result;
}
protected void RunQmlTest<TQmlRegistered>(string instanceId, string componentOnCompletedCode)
{
NetTestHelper.RunQml(qmlApplicationEngine,
string.Format(@"
import QtQuick 2.0
import tests 1.0
{0} {{
id: {1}
Component.onCompleted: function() {{
{2}
}}
}}
",
typeof(TQmlRegistered).Name,
instanceId,
componentOnCompletedCode));
}
public override void Dispose()
{
qmlApplicationEngine.Dispose();

View file

@ -161,21 +161,15 @@ namespace Qml.Net.Tests.Qml
[Fact]
public void Does_register_property_changed_signal()
{
NetTestHelper.RunQml(qmlApplicationEngine,
@"
import QtQuick 2.0
import tests 1.0
ViewModelContainer {
id: viewModelContainer
Component.onCompleted: function() {
var vm = viewModelContainer.viewModel
vm.stringPropertyChanged.connect(function() {
viewModelContainer.testResult = true
})
viewModelContainer.changeStringPropertyTo('new value')
}
}
");
RunQmlTest<ViewModelContainer>(
"viewModelContainer",
@"
var vm = viewModelContainer.viewModel
vm.stringPropertyChanged.connect(function() {
viewModelContainer.testResult = true
})
viewModelContainer.changeStringPropertyTo('new value')
");
Instance.TestResult.Should().Be(true);
}
@ -228,21 +222,15 @@ namespace Qml.Net.Tests.Qml
[Fact]
public void Does_play_nicely_with_completely_custom_notify_signals()
{
NetTestHelper.RunQml(qmlApplicationEngine,
RunQmlTest<ViewModelContainer>(
"viewModelContainer",
@"
import QtQuick 2.0
import tests 1.0
ViewModelContainer {
id: viewModelContainer
Component.onCompleted: function() {
var vm = viewModelContainer.viewModel
vm.customIntPropertyChangedSignal.connect(function() {
viewModelContainer.testResult = true
})
viewModelContainer.changeCustomIntPropertyTo(3)
}
}
");
var vm = viewModelContainer.viewModel
vm.customIntPropertyChangedSignal.connect(function() {
viewModelContainer.testResult = true
})
viewModelContainer.changeCustomIntPropertyTo(3)
");
Instance.TestResult.Should().Be(true);
}
@ -250,21 +238,15 @@ namespace Qml.Net.Tests.Qml
[Fact]
public void Does_play_nicely_with_custom_notify_signals()
{
NetTestHelper.RunQml(qmlApplicationEngine,
RunQmlTest<ViewModelContainer>(
"viewModelContainer",
@"
import QtQuick 2.0
import tests 1.0
ViewModelContainer {
id: viewModelContainer
Component.onCompleted: function() {
var vm = viewModelContainer.viewModel
vm.customMvvmStyleIntPropertyChanged.connect(function() {
viewModelContainer.testResult = true
})
viewModelContainer.changeCustomMvvmStyleIntPropertyTo(3)
}
}
");
var vm = viewModelContainer.viewModel
vm.customMvvmStyleIntPropertyChanged.connect(function() {
viewModelContainer.testResult = true
})
viewModelContainer.changeCustomMvvmStyleIntPropertyTo(3)
");
Instance.TestResult.Should().Be(true);
}
@ -272,21 +254,15 @@ namespace Qml.Net.Tests.Qml
[Fact]
public void Does_not_interfer_with_properties_only_using_notify_signals()
{
NetTestHelper.RunQml(qmlApplicationEngine,
RunQmlTest<ViewModelContainer>(
"viewModelContainer",
@"
import QtQuick 2.0
import tests 1.0
ViewModelContainer {
id: viewModelContainer
Component.onCompleted: function() {
var vm = viewModelContainer.viewModel
vm.notifyOnlyIntPropertyChanged.connect(function() {
viewModelContainer.testResult = true
})
viewModelContainer.changeNotifyOnlyIntPropertyTo(3)
}
}
");
var vm = viewModelContainer.viewModel
vm.notifyOnlyIntPropertyChanged.connect(function() {
viewModelContainer.testResult = true
})
viewModelContainer.changeNotifyOnlyIntPropertyTo(3)
");
Instance.TestResult.Should().Be(true);
}
@ -294,21 +270,15 @@ namespace Qml.Net.Tests.Qml
[Fact]
public void Does_not_interfer_with_properties_only_using_custom_notify_signals()
{
NetTestHelper.RunQml(qmlApplicationEngine,
RunQmlTest<ViewModelContainer>(
"viewModelContainer",
@"
import QtQuick 2.0
import tests 1.0
ViewModelContainer {
id: viewModelContainer
Component.onCompleted: function() {
var vm = viewModelContainer.viewModel
vm.customNotifyIntPropertyChangedSignal.connect(function() {
viewModelContainer.testResult = true
})
viewModelContainer.changeCustomNotifyOnlyIntPropertyTo(3)
}
}
");
var vm = viewModelContainer.viewModel
vm.customNotifyIntPropertyChangedSignal.connect(function() {
viewModelContainer.testResult = true
})
viewModelContainer.changeCustomNotifyOnlyIntPropertyTo(3)
");
Instance.TestResult.Should().Be(true);
}