public void CreatePending_InvalidSupplierId_ArgumentExceptionThrown()
        {
            var id           = Guid.NewGuid();
            var jobItemId    = Guid.NewGuid();
            var supplierId   = Guid.Empty;
            var instructions = "Please consign this item";

            _consignmentItemService = ConsignmentItemServiceFactory.CreateForPendingItems(jobItemId, supplierId, _userContext);
            CreatePendingConsignmentItem(id, jobItemId, supplierId, instructions);
        }
        public void CreatePending_InstructionsGreaterThan10000Characters_DomainValidationExceptionThrown()
        {
            var id           = Guid.NewGuid();
            var jobItemId    = Guid.NewGuid();
            var supplierId   = Guid.NewGuid();
            var instructions = new string('a', 10001);

            _consignmentItemService = ConsignmentItemServiceFactory.CreateForPendingItems(jobItemId, supplierId, _userContext);
            CreatePendingConsignmentItem(id, jobItemId, supplierId, instructions);
            Assert.IsTrue(_domainValidationException.ResultContainsMessage(Messages.InstructionsTooLarge));
        }
        public void CreatePending_JobIsInPendingState_DomainValidationExceptionThrown()
        {
            var id           = Guid.NewGuid();
            var jobItemId    = Guid.NewGuid();
            var supplierId   = Guid.NewGuid();
            var instructions = "Please consign this item";

            _consignmentItemService = ConsignmentItemServiceFactory.CreateForPendingItems(jobItemId, supplierId, _userContext, true);
            CreatePendingConsignmentItem(id, jobItemId, supplierId, instructions);
            Assert.IsTrue(_domainValidationException.ResultContainsMessage(Messages.PendingJob));
        }
        public void CreatePending_UserHasInsufficientSecurityClearance_DomainValidationExceptionThrown()
        {
            var id           = Guid.NewGuid();
            var jobItemId    = Guid.NewGuid();
            var supplierId   = Guid.NewGuid();
            var instructions = "Please consign this item";

            _consignmentItemService = ConsignmentItemServiceFactory.CreateForPendingItems(jobItemId, supplierId,
                                                                                          TestUserContext.Create("*****@*****.**", "Graham Robertson", "Operations Manager", UserRole.Public));
            CreatePendingConsignmentItem(id, jobItemId, supplierId, instructions);
            Assert.IsTrue(_domainValidationException.ResultContainsMessage(Messages.InsufficientSecurityClearance));
        }
        public void CreatePending_JobItemAlreadyHasPendingItem_DomainValidationExceptionThrown()
        {
            var id           = Guid.NewGuid();
            var jobItemId    = Guid.NewGuid();
            var supplierId   = Guid.NewGuid();
            var instructions = "Please consign this item";

            var consignmentItemRepositoryMock = MockRepository.GenerateStub <IConsignmentItemRepository>();

            consignmentItemRepositoryMock.Stub(x => x.JobItemHasPendingConsignmentItem(jobItemId)).Return(true);
            _consignmentItemService = ConsignmentItemServiceFactory.CreateForPendingItems(consignmentItemRepositoryMock, jobItemId, supplierId, _userContext);
            CreatePendingConsignmentItem(id, jobItemId, supplierId, instructions);
            Assert.IsTrue(_domainValidationException.ResultContainsMessage(Messages.PendingItemAlreadyExists));
        }
        public void CreatePending_ValidPendingItemDetails_PendingItemCreated()
        {
            var id           = Guid.NewGuid();
            var jobItemId    = Guid.NewGuid();
            var supplierId   = Guid.NewGuid();
            var instructions = "Please consign this item";

            var consignmentItemRepositoryMock = MockRepository.GenerateMock <IConsignmentItemRepository>();

            consignmentItemRepositoryMock.Expect(x => x.CreatePendingItem(null)).IgnoreArguments();
            _consignmentItemService = ConsignmentItemServiceFactory.CreateForPendingItems(consignmentItemRepositoryMock, jobItemId, supplierId, _userContext);
            CreatePendingConsignmentItem(id, jobItemId, supplierId, instructions);
            consignmentItemRepositoryMock.VerifyAllExpectations();
            Assert.AreNotEqual(Guid.Empty, _savedPendingItem.Id);
        }