using Admin.Interfaces.Commands; using Admin.Interfaces.ModelBuilders; using Admin.Models.Suspense; using FluentAssertions; using log4net; using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using System; using System.Diagnostics.CodeAnalysis; using DependenciesClass = Admin.Controllers.SuspenseControllerDependencies; namespace Admin.UnitTests.Classes.Dependencies { [TestClass] [ExcludeFromCodeCoverage] public class SuspenseControllerDependenciesTests { private readonly Mock _mockLogger = new Mock(); private readonly Mock> _mockDetailsViewModelBuilder = new Mock>(); private readonly Mock> _mockListViewModelBuilder = new Mock>(); private readonly Mock> _mockJournalViewModelBuilder = new Mock>(); private readonly Mock> _mockJournalCommand = new Mock>(); private readonly Mock> _mockSaveNoteCommand = new Mock>(); [TestMethod] public void ThrowsCorrectExceptionTypeWhenDetailsViewModelBuiderIsNull() { try { var dependencies = new DependenciesClass( _mockLogger.Object, null, _mockListViewModelBuilder.Object, _mockJournalViewModelBuilder.Object, _mockJournalCommand.Object, _mockSaveNoteCommand.Object); } catch (Exception e) { e.Should().BeOfType(typeof(ArgumentNullException)); } } [TestMethod] public void ThrowsCorrectExceptionDescriptionTypeWhenDetailsViewModelBuiderIsNull() { try { var dependencies = new DependenciesClass( _mockLogger.Object, null, _mockListViewModelBuilder.Object, _mockJournalViewModelBuilder.Object, _mockJournalCommand.Object, _mockSaveNoteCommand.Object); } catch (ArgumentNullException exception) { exception.Message.Should().Be("Value cannot be null.\r\nParameter name: detailsViewModelBuilder"); } } [TestMethod] public void ThrowsCorrectExceptionTypeWhenListViewModelBuilderIsNull() { try { var dependencies = new DependenciesClass( _mockLogger.Object, _mockDetailsViewModelBuilder.Object, null, _mockJournalViewModelBuilder.Object, _mockJournalCommand.Object, _mockSaveNoteCommand.Object); } catch (Exception e) { e.Should().BeOfType(typeof(ArgumentNullException)); } } [TestMethod] public void ThrowsCorrectExceptionDescriptionTypeWhenListViewModelBuilderIsNull() { try { var dependencies = new DependenciesClass( _mockLogger.Object, _mockDetailsViewModelBuilder.Object, null, _mockJournalViewModelBuilder.Object, _mockJournalCommand.Object, _mockSaveNoteCommand.Object); } catch (ArgumentNullException exception) { exception.Message.Should().Be("Value cannot be null.\r\nParameter name: listViewModelBuilder"); } } [TestMethod] public void ThrowsCorrectExceptionTypeWhenJournalViewModelBuilderIsNull() { try { var dependencies = new DependenciesClass( _mockLogger.Object, _mockDetailsViewModelBuilder.Object, _mockListViewModelBuilder.Object, null, _mockJournalCommand.Object, _mockSaveNoteCommand.Object); } catch (Exception e) { e.Should().BeOfType(typeof(ArgumentNullException)); } } [TestMethod] public void ThrowsCorrectExceptionDescriptionTypeWhenJournalViewModelBuilderIsNull() { try { var dependencies = new DependenciesClass( _mockLogger.Object, _mockDetailsViewModelBuilder.Object, _mockListViewModelBuilder.Object, null, _mockJournalCommand.Object, _mockSaveNoteCommand.Object); } catch (ArgumentNullException exception) { exception.Message.Should().Be("Value cannot be null.\r\nParameter name: journalViewModelBuilder"); } } [TestMethod] public void ThrowsCorrectExceptionTypeWhenJournalCommandIsNull() { try { var dependencies = new DependenciesClass( _mockLogger.Object, _mockDetailsViewModelBuilder.Object, _mockListViewModelBuilder.Object, _mockJournalViewModelBuilder.Object, null, _mockSaveNoteCommand.Object); } catch (Exception e) { e.Should().BeOfType(typeof(ArgumentNullException)); } } [TestMethod] public void ThrowsCorrectExceptionDescriptionTypeWhenJournalCommandIsNull() { try { var dependencies = new DependenciesClass( _mockLogger.Object, _mockDetailsViewModelBuilder.Object, _mockListViewModelBuilder.Object, _mockJournalViewModelBuilder.Object, null, _mockSaveNoteCommand.Object); } catch (ArgumentNullException exception) { exception.Message.Should().Be("Value cannot be null.\r\nParameter name: journalCommand"); } } [TestMethod] public void ThrowsCorrectExceptionTypeWhenSaveNoteCommandIsNull() { try { var dependencies = new DependenciesClass( _mockLogger.Object, _mockDetailsViewModelBuilder.Object, _mockListViewModelBuilder.Object, _mockJournalViewModelBuilder.Object, _mockJournalCommand.Object, null); } catch (Exception e) { e.Should().BeOfType(typeof(ArgumentNullException)); } } [TestMethod] public void ThrowsCorrectExceptionDescriptionTypeWhenSaveNoteCommandIsNull() { try { var dependencies = new DependenciesClass( _mockLogger.Object, _mockDetailsViewModelBuilder.Object, _mockListViewModelBuilder.Object, _mockJournalViewModelBuilder.Object, _mockJournalCommand.Object, null); } catch (ArgumentNullException exception) { exception.Message.Should().Be("Value cannot be null.\r\nParameter name: saveNoteCommand"); } } [TestMethod] public void CanSetProperties() { var dependencies = new DependenciesClass( _mockLogger.Object, _mockDetailsViewModelBuilder.Object, _mockListViewModelBuilder.Object, _mockJournalViewModelBuilder.Object, _mockJournalCommand.Object, _mockSaveNoteCommand.Object); Assert.IsNotNull(dependencies.DetailsViewModelBuilder); Assert.IsNotNull(dependencies.ListViewModelBuilder); Assert.IsNotNull(dependencies.JournalViewModelBuilder); Assert.IsNotNull(dependencies.JournalCommand); Assert.IsNotNull(dependencies.SaveNoteCommand); } } }