Skip to content

Commit

Permalink
Added dialog support
Browse files Browse the repository at this point in the history
-Added OpenFileDialog
-Added SaveFileDialog
-Added DialogService
-Added public/private key generation
-Fixed build scripts to build and run AdminTool tests and package the output
  • Loading branch information
HEskandari committed Aug 13, 2010
1 parent 05969b8 commit ecf7f74
Show file tree
Hide file tree
Showing 48 changed files with 2,093 additions and 780 deletions.
68 changes: 68 additions & 0 deletions Rhino.Licensing.AdminTool.Tests/Dialogs/FileDialogTests.cs
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,68 @@
using System.Windows.Forms;
using Rhino.Licensing.AdminTool.ViewModels;
using Rhino.Mocks;
using Xunit;
using System.Linq;
using FileDialog = Rhino.Licensing.AdminTool.Dialogs.FileDialog;

namespace Rhino.Licensing.AdminTool.Tests.Dialogs
{
public class FileDialogTests
{
[Fact]
public void ShowDialog_Sets_Selected_Files()
{
var dialogForm = MockRepository.GenerateMock<System.Windows.Forms.FileDialog>();

var model = new OpenFileDialogViewModel();
var dialog = new TestFileDialog(dialogForm, model);

dialogForm.Expect(x => x.ShowDialog()).Return(DialogResult.OK);
dialogForm.Expect(x => x.FileName).Return("License.lic");
dialogForm.Expect(x => x.FileNames).Return(new[] {"License.lic", "License2.lic"});

dialog.ShowDialog();

Assert.Equal("License.lic", model.FileName);
Assert.Contains("License.lic", model.FileNames);
Assert.Contains("License2.lic", model.FileNames);
Assert.Equal(2, model.FileNames.Count());
}

[Fact]
public void Dialog_Disposes_Upon_Destruction()
{
var dialogForm = MockRepository.GenerateMock<System.Windows.Forms.FileDialog>();

var model = new OpenFileDialogViewModel();
var dialog = new TestFileDialog(dialogForm, model);

dialog.ShowDialog();
dialog.Dispose();

dialogForm.AssertWasCalled(x => x.Dispose(), x => x.Repeat.Once());
}

public class TestFileDialog : FileDialog
{
private System.Windows.Forms.FileDialog _dialog;
private IFileDialogViewModel _viewModel;

public TestFileDialog(System.Windows.Forms.FileDialog dialog, IFileDialogViewModel viewModel)
{
_dialog = dialog;
_viewModel = viewModel;
}

protected override System.Windows.Forms.FileDialog Dialog
{
get { return _dialog; }
}

public override IFileDialogViewModel ViewModel
{
get { return _viewModel; }
}
}
}
}
56 changes: 56 additions & 0 deletions Rhino.Licensing.AdminTool.Tests/Dialogs/OpenFileDialogTests.cs
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,56 @@
using Rhino.Licensing.AdminTool.Dialogs;
using Rhino.Licensing.AdminTool.ViewModels;
using Xunit;

namespace Rhino.Licensing.AdminTool.Tests.Dialogs
{
public class OpenFileDialogTests
{
[Fact]
public void Dialog_Wires_Model_Properties()
{
var model = CreateOpenFileDialogModel();
var dialog = new OpenFileDialogStub(model);
var dialogForm = dialog.GetCoreDialog();

Assert.True(dialogForm.AddExtension);
Assert.True(dialogForm.CheckFileExists);
Assert.True(dialogForm.CheckPathExists);
Assert.False(dialogForm.Multiselect);
Assert.Equal("rlic", dialogForm.DefaultExt);
Assert.Equal("Rhino License Project|*.rlic", dialogForm.Filter);
Assert.Equal("C:\\", dialogForm.InitialDirectory);
Assert.Equal("Open File Dialog", dialogForm.Title);
}

private IOpenFileDialogViewModel CreateOpenFileDialogModel()
{
var model = new OpenFileDialogViewModel
{
AddExtension = true,
CheckFileExists = true,
CheckPathExists = true,
DefaultExtension = "rlic",
Filter = "Rhino License Project|*.rlic",
InitialDirectory = "C:\\",
MultiSelect = false,
Title = "Open File Dialog"
};

return model;
}

public class OpenFileDialogStub : OpenFileDialog
{
public OpenFileDialogStub(IOpenFileDialogViewModel viewModel)
: base(viewModel)
{
}

public System.Windows.Forms.OpenFileDialog GetCoreDialog()
{
return base.Dialog as System.Windows.Forms.OpenFileDialog;
}
}
}
}
58 changes: 58 additions & 0 deletions Rhino.Licensing.AdminTool.Tests/Dialogs/SaveFileDialogTests.cs
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,58 @@
using Rhino.Licensing.AdminTool.Dialogs;
using Rhino.Licensing.AdminTool.ViewModels;
using Xunit;

namespace Rhino.Licensing.AdminTool.Tests.Dialogs
{
public class SaveFileDialogTests
{
[Fact]
public void Dialog_Wires_Model_Properties()
{
var model = CreateOpenFileDialogModel();
var dialog = new OpenFileDialogStub(model);
var dialogForm = dialog.GetCoreDialog();

Assert.True(dialogForm.AddExtension);
Assert.True(dialogForm.CheckFileExists);
Assert.True(dialogForm.CheckPathExists);
Assert.True(dialogForm.OverwritePrompt);
Assert.True(dialogForm.SupportMultiDottedExtensions);
Assert.Equal("rlic", dialogForm.DefaultExt);
Assert.Equal("Rhino License Project|*.rlic", dialogForm.Filter);
Assert.Equal("C:\\", dialogForm.InitialDirectory);
Assert.Equal("Save File Dialog", dialogForm.Title);
}

private ISaveFileDialogViewModel CreateOpenFileDialogModel()
{
var model = new SaveFileDialogViewModel
{
AddExtension = true,
CheckFileExists = true,
CheckPathExists = true,
OverwritePrompt = true,
SupportMultiDottedExtensions = true,
DefaultExtension = "rlic",
Filter = "Rhino License Project|*.rlic",
InitialDirectory = "C:\\",
Title = "Save File Dialog",
};

return model;
}

public class OpenFileDialogStub : SaveFileDialog
{
public OpenFileDialogStub(ISaveFileDialogViewModel viewModel)
: base(viewModel)
{
}

public System.Windows.Forms.SaveFileDialog GetCoreDialog()
{
return base.Dialog as System.Windows.Forms.SaveFileDialog;
}
}
}
}
6 changes: 3 additions & 3 deletions Rhino.Licensing.AdminTool.Tests/GuyWireTests.cs
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public void GuyWire_Registers_Correct_Components()
var guyWire = new GuyWire(); var guyWire = new GuyWire();
var count = guyWire.ComponentsInfo.Count(); var count = guyWire.ComponentsInfo.Count();


Assert.Equal(2, count); Assert.Equal(4, count);
} }


[Fact] [Fact]
Expand Down Expand Up @@ -59,12 +59,12 @@ public void GuyWire_Disposes_Container_Upon_Dewire()
public void Can_Show_Root_ViewModel() public void Can_Show_Root_ViewModel()
{ {
var winManager = MockRepository.GenerateMock<IWindowManager>(); var winManager = MockRepository.GenerateMock<IWindowManager>();
var shell = MockRepository.GenerateMock<ShellViewModel>(); var shell = MockRepository.GenerateMock<IShellViewModel>();
var container = new WindsorContainer(); var container = new WindsorContainer();
var guyWire = new GuyWire(container); var guyWire = new GuyWire(container);


container.Kernel.AddComponentInstance<IWindowManager>(winManager); container.Kernel.AddComponentInstance<IWindowManager>(winManager);
container.Kernel.AddComponentInstance<ShellViewModel>(shell); container.Kernel.AddComponentInstance<IShellViewModel>(shell);


guyWire.ShowRootModel(); guyWire.ShowRootModel();


Expand Down
18 changes: 18 additions & 0 deletions Rhino.Licensing.AdminTool.Tests/Models/ProjectModelTests.cs
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,18 @@
using Rhino.Licensing.AdminTool.Model;
using Xunit;
using Caliburn.Testability.Extensions;

namespace Rhino.Licensing.AdminTool.Tests.Models
{
public class ProjectModelTests
{
[Fact]
public void Project_Fires_Property_Changed()
{
var project = new Project();

project.AssertThatAllProperties()
.RaiseChangeNotification();
}
}
}
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -77,21 +77,28 @@
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Core" /> <Reference Include="System.Core" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" /> <Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" /> <Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Data" /> <Reference Include="System.Data" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
<Reference Include="WindowsBase" /> <Reference Include="WindowsBase" />
<Reference Include="xunit, Version=1.1.0.1323, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c, processorArchitecture=MSIL"> <Reference Include="xunit, Version=1.5.0.1479, Culture=neutral, PublicKeyToken=8d05b1bb7a6fdb6c, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
<HintPath>..\SharedLibs\xunit.dll</HintPath> <HintPath>..\SharedLibs\xunit.dll</HintPath>
</Reference> </Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="Dialogs\FileDialogTests.cs" />
<Compile Include="Dialogs\OpenFileDialogTests.cs" />
<Compile Include="Dialogs\SaveFileDialogTests.cs" />
<Compile Include="GuyWireTests.cs" /> <Compile Include="GuyWireTests.cs" />
<Compile Include="Models\ProductModelTests.cs" /> <Compile Include="Models\ProductModelTests.cs" />
<Compile Include="Models\ProjectModelTests.cs" />
<Compile Include="Services\DialogServiceTests.cs" />
<Compile Include="ViewModels\AboutViewModelTests.cs" /> <Compile Include="ViewModels\AboutViewModelTests.cs" />
<Compile Include="Properties\AssemblyInfo.cs" /> <Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="ViewModels\DialogViewModelTests.cs" />
<Compile Include="ViewModels\ProjectViewModelTests.cs" /> <Compile Include="ViewModels\ProjectViewModelTests.cs" />
<Compile Include="ViewModels\ShellViewModelTests.cs" /> <Compile Include="ViewModels\ShellViewModelTests.cs" />
</ItemGroup> </ItemGroup>
Expand Down
76 changes: 76 additions & 0 deletions Rhino.Licensing.AdminTool.Tests/Services/DialogServiceTests.cs
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,76 @@
using System.Windows.Forms;
using Rhino.Licensing.AdminTool.Factories;
using Rhino.Licensing.AdminTool.Services;
using Rhino.Licensing.AdminTool.ViewModels;
using Rhino.Mocks;
using Xunit;
using OpenFileDialog = Rhino.Licensing.AdminTool.Dialogs.OpenFileDialog;
using SaveFileDialog = Rhino.Licensing.AdminTool.Dialogs.SaveFileDialog;

namespace Rhino.Licensing.AdminTool.Tests.Services
{
public class DialogServiceTests
{
[Fact(Skip = "Not Completed")]
public void Can_Show_OpenFileDialog()
{
var model = CreateOpenFileDialogModel();
var factory = MockRepository.GenerateMock<IDialogFactory>();
var dialog = MockRepository.GenerateMock<OpenFileDialog>(model);

factory.Expect(x => x.Create<OpenFileDialog>(Arg.Is(model))).Return(dialog);
dialog.Expect(x => x.ShowDialog()).Return(DialogResult.OK);
dialog.Expect(x => x.ViewModel).Return(model);

new DialogService(factory).ShowOpenFileDialog(model);

dialog.AssertWasCalled(x => x.ShowDialog(), x => x.Repeat.Once());
}

[Fact(Skip = "Not Completed")]
public void Can_Show_SaveFileDialog()
{
var model = CreateSaveFileDialogModel();
var factory = MockRepository.GenerateMock<IDialogFactory>();
var dialog = MockRepository.GenerateMock<SaveFileDialog>(model);

var service = new DialogService(factory) as IDialogService;

factory.Expect(x => x.Create<SaveFileDialog>(Arg.Is(model))).Return(dialog);

service.ShowSaveFileDialog(model);

dialog.AssertWasCalled(x => x.ShowDialog(), x => x.Repeat.Once());
}

private IOpenFileDialogViewModel CreateOpenFileDialogModel()
{
return new OpenFileDialogViewModel
{
AddExtension = true,
CheckFileExists = true,
CheckPathExists = true,
DefaultExtension = "rlic",
Filter = "Rhino License Project|*.rlic",
InitialDirectory = "C:\\",
MultiSelect = false,
Title = "Open File Dialog"
};
}

private ISaveFileDialogViewModel CreateSaveFileDialogModel()
{
return new SaveFileDialogViewModel
{
AddExtension = true,
CheckFileExists = true,
CheckPathExists = true,
DefaultExtension = "rlic",
Filter = "Rhino License Project|*.rlic",
InitialDirectory = "C:\\",
Title = "Open File Dialog"
};
}

}
}
29 changes: 29 additions & 0 deletions Rhino.Licensing.AdminTool.Tests/ViewModels/DialogViewModelTests.cs
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,29 @@
using Rhino.Licensing.AdminTool.ViewModels;
using Xunit;
using Caliburn.Testability.Extensions;

namespace Rhino.Licensing.AdminTool.Tests.ViewModels
{
public class DialogViewModelTests
{
[Fact]
public void FileDialogModel_Fires_PropertyChange()
{
var vm = new OpenFileDialogViewModel();

vm.AssertThatAllProperties()
.RaiseChangeNotification();
}

[Fact]
public void SaveDialogModel_Fires_PropertyChange()
{
var vm = new SaveFileDialogViewModel();

vm.AssertThatAllProperties()
.RaiseChangeNotification();
}


}
}
Loading

0 comments on commit ecf7f74

Please sign in to comment.