public void GetLabels_returns_a_label_with_2_open_tickets_before_one_with_1_open_tickets([Frozen, InMemory] IEntityData entityData,
                                                                                                 AllLabelsByPopularitySearcher sut,
                                                                                                 Label label1,
                                                                                                 Label label2,
                                                                                                 Ticket ticket1,
                                                                                                 Ticket ticket2,
                                                                                                 Ticket ticket3)
        {
            // Arrange
            ticket1.Closed = false;
            ticket2.Closed = false;
            ticket3.Closed = false;

            label1.Name = "Label 1";
            label2.Name = "Label 2";
            label1.Tickets.ReplaceContents(new[] { ticket1 });
            label2.Tickets.ReplaceContents(new[] { ticket2, ticket3 });

            entityData.Add(label1);
            entityData.Add(label2);

            // Act
            var result = sut.GetLabels(null, null);

            // Assert
            var labelNames = result.Select(x => x.Name).ToArray();

            Assert.That(labelNames, Is.EqualTo(new [] { "Label 2", "Label 1" }));
        }
Example #2
0
        public void GetSprints_returns_only_open_sprints_when_request_is_default([Frozen, InMemory] IEntityData query,
                                                                                 [Frozen, HardCodedSpec] ISpecForSprintInProject sprintSpec,
                                                                                 [Frozen] ISpecForOpenSprint openSprintSpec,
                                                                                 [Frozen, HardCodedSpec] ISpecForClosedSprint closedSprintSpec,
                                                                                 SprintLister sut,
                                                                                 [HasIdentity] Sprint sprintOne,
                                                                                 [HasIdentity] Sprint sprintTwo,
                                                                                 [HasIdentity] Sprint sprintThree)
        {
            // Arrange
            sprintOne.Closed   = false;
            sprintTwo.Closed   = true;
            sprintThree.Closed = false;
            query.Add(sprintOne);
            query.Add(sprintTwo);
            query.Add(sprintThree);

            var expected = new[] { sprintOne, sprintThree };

            Mock.Get(openSprintSpec).Setup(x => x.GetExpression()).Returns(x => !x.Closed);

            // Act
            var result = sut.GetSprints(new ListSprintsRequest());

            // Assert
            Assert.That(result, Is.EquivalentTo(expected));
        }
Example #3
0
        public void GetSprints_orders_sprints_by_creation_timestamps_when_start_dates_are_missing([Frozen, InMemory] IEntityData query,
                                                                                                  [Frozen, HardCodedSpec] ISpecForSprintInProject sprintSpec,
                                                                                                  [Frozen, HardCodedSpec] ISpecForOpenSprint openSprintSpec,
                                                                                                  [Frozen, HardCodedSpec] ISpecForClosedSprint closedSprintSpec,
                                                                                                  SprintLister sut,
                                                                                                  [HasIdentity] Sprint sprintOne,
                                                                                                  [HasIdentity] Sprint sprintTwo,
                                                                                                  [HasIdentity] Sprint sprintThree)
        {
            // Arrange
            sprintOne.StartDate    = null;
            sprintOne.CreationDate = new DateTime(2010, 6, 1);
            sprintTwo.StartDate    = new DateTime(2010, 1, 1);
            sprintThree.StartDate  = new DateTime(2012, 1, 1);
            query.Add(sprintOne);
            query.Add(sprintTwo);
            query.Add(sprintThree);

            var expected = new[] { sprintTwo, sprintOne, sprintThree };

            var request = new ListSprintsRequest {
                ShowOpenSprints   = true,
                ShowClosedSprints = true,
            };

            // Act
            var result = sut.GetSprints(request);

            // Assert
            Assert.That(result, Is.EqualTo(expected));
        }
        public void GetLabels_returns_labels_in_relevance_order([Frozen, InMemory] IEntityData entityData,
                                                                LabelsMatchingSearchByRelevanceSearcher sut,
                                                                Label label1,
                                                                Label label2,
                                                                Label label3,
                                                                Label label4)
        {
            // Arrange
            label1.Name = "Element";
            label2.Name = "Elemental";
            label3.Name = "Fire Elemental";
            label4.Name = "Zebra";
            entityData.Add(label4);
            entityData.Add(label3);
            entityData.Add(label1);
            entityData.Add(label2);

            // Act
            var result = sut.GetLabels("Element");

            // Assert
            var labelNames = result.Select(x => x.Name).ToArray();

            Assert.That(labelNames, Is.EqualTo(new [] { "Element", "Elemental", "Fire Elemental" }));
        }
Example #5
0
        public void GetTheoreticalTicketRelationships_returns_secondary_relationships_already_present([Frozen, InMemory] IEntityData data,
                                                                                                      Ticket ticket,
                                                                                                      [WithRelationship] IEnumerable <TicketRelationship> relationships,
                                                                                                      TheoreticalRelationshipProvider sut)
        {
            data.Add(ticket);
            foreach (var t in relationships.Select(x => x.PrimaryTicket))
            {
                data.Add(t);
            }
            foreach (var relationship in relationships)
            {
                data.Add(relationship);
            }
            ticket.SecondaryRelationships.ReplaceContents(relationships);

            var expected = relationships
                           .Select(x => new TheoreticalRelationship {
                PrimaryTicket      = x.PrimaryTicket.GetIdentity(),
                SecondaryTicket    = ticket.GetIdentity(),
                Relationship       = x.Relationship,
                TicketRelationship = x.GetIdentity(),
            })
                           .ToList();

            var result = sut.GetTheoreticalTicketRelationships(ticket.GetIdentity());

            Assert.That(result, Is.EquivalentTo(expected));
        }
Example #6
0
        Label CreateAndSaveLabel(string name)
        {
            var label = labelFactory.CreateLabel(name);

            entityData.Add(label);
            return(label);
        }
Example #7
0
        public CreateSprintResponse Create(CreateSprintRequest request)
        {
            var validationResult = ValidateRequest(request);
            var response         = responseFactory.GetResponse(validationResult);

            if (!validationResult.IsSuccess)
            {
                return(response);
            }

            Sprint sprint;

            using (var trans = transactionFactory.GetTransaction())
            {
                var project = projectGetter.GetCurrentProject();
                if (project == null)
                {
                    response.ProjectDoesNotExist = true;
                    return(response);
                }

                sprint = CreateSprint(request, project);
                sprintRepo.Add(sprint);
                trans.Commit();

                response.Sprint = sprint;
            }

            return(response);
        }
Example #8
0
        public CreateCommentResponse Create(CreateCommentRequest request)
        {
            var validator        = validatorFactory.GetValidator();
            var validationResult = validator.Validate(request);

            if (!validationResult.IsSuccess)
            {
                return(responseCreator(validationResult, null));
            }

            Comment comment;

            using (var tran = transactionCreator.GetTransaction())
            {
                var ticket = ticketRepo.Get(request.TicketId);
                comment = commentFactory.Create(request.Body);
                ticket.Comments.Add(comment);

                ticketRepo.Update(ticket);
                commentRepo.Add(comment);

                tran.Commit();
            }

            return(responseCreator(validationResult, comment));
        }
Example #9
0
 private void FullySetupLoggedInUser(User user,
                                     ICurrentUserInfo userInfo,
                                     IEntityData query,
                                     IIdentityReader identityReader)
 {
     SetupCurrentUserIdentity(user, userInfo, identityReader);
     query.Add(user);
 }
Example #10
0
        public CreateProjectResponse CreateNewProject(CreateProjectRequest request)
        {
            var project = mapper.Map <Project>(request);

            data.Add(project);
            var response = responseFactory();

            response.ProjectIdentity = project.GetIdentity();
            return(response);
        }
        public void GetLabels_does_not_return_more_labels_than_the_maximum_when_it_is_specified([Frozen, InMemory] IEntityData entityData,
                                                                                                AllLabelsByPopularitySearcher sut,
                                                                                                Label label1,
                                                                                                Label label2,
                                                                                                Label label3,
                                                                                                Label label4)
        {
            // Arrange
            entityData.Add(label1);
            entityData.Add(label2);
            entityData.Add(label3);
            entityData.Add(label4);

            // Act
            var result = sut.GetLabels(null, 3);

            // Assert
            Assert.That(result.Count, Is.EqualTo(3));
        }
Example #12
0
        public void GetTheoreticalTicketRelationships_marks_up_relationships_for_removal([Frozen, InMemory] IEntityData data,
                                                                                         Ticket ticket,
                                                                                         [WithRelationship] IEnumerable <TicketRelationship> relationships,
                                                                                         TicketRelationship toRemove,
                                                                                         TheoreticalRelationshipProvider sut)
        {
            data.Add(ticket);
            foreach (var t in relationships.Select(x => x.PrimaryTicket))
            {
                data.Add(t);
            }
            foreach (var relationship in relationships)
            {
                data.Add(relationship);
            }
            data.Add(toRemove);
            ticket.SecondaryRelationships.ReplaceContents(relationships);
            ticket.SecondaryRelationships.Add(toRemove);

            var expected = relationships
                           .Select(x => new TheoreticalRelationship {
                PrimaryTicket      = x.PrimaryTicket.GetIdentity(),
                SecondaryTicket    = ticket.GetIdentity(),
                Relationship       = x.Relationship,
                TicketRelationship = x.GetIdentity(),
            })
                           .Append(new TheoreticalRelationship {
                PrimaryTicket      = toRemove.PrimaryTicket?.GetIdentity(),
                SecondaryTicket    = toRemove.SecondaryTicket?.GetIdentity(),
                Relationship       = toRemove.Relationship,
                TicketRelationship = toRemove.GetIdentity(),
                Type = TheoreticalRelationshipType.Removed,
            })
                           .ToList();

            var result = sut.GetTheoreticalTicketRelationships(ticket.GetIdentity(),
                                                               removed: new[] { new DeleteRelationshipRequest {
                                                                                    TicketRelationshipId = toRemove.GetIdentity()
                                                                                } });

            Assert.That(result, Is.EquivalentTo(expected));
        }
    void CreateInitialProject()
    {
      var project = new Project
      {
        Name = AgiilProject.Name,
        Code = AgiilProject.Code,
        NextAvailableTicketNumber = 1,
      };

      data.Add(project);
    }
 public Ticket CreateTicket(CreateTicketRequest request)
 {
     using (var trans = transactionFactory.GetTransaction())
     {
         var ticket = wrappedInstance.CreateTicket(request);
         data.Add(ticket);
         trans.Commit();
         logger.InfoFormat("Created ticket {0}: {1}", ticket.GetTicketReference().ToString(true), ticket.Title);
         return(ticket);
     }
 }
        public void GetTicketByReference_uses_spec_to_filter_entity_query_results([InMemory] IEntityData repo,
                                                                                  Ticket ticketOne,
                                                                                  Ticket ticketTwo,
                                                                                  Ticket ticketThree,
                                                                                  TicketReference reference)
        {
            var spec = Mock.Of <ISpecForTicketReferenceEquality>();

            Mock.Get(spec)
            .Setup(x => x.GetExpression())
            .Returns((Ticket x) => x == ticketTwo);
            repo.Add(ticketOne);
            repo.Add(ticketTwo);
            repo.Add(ticketThree);
            var sut = new TicketReferenceQuery(repo, refParam => spec);

            var result = sut.GetTicketByReference(reference);

            Assert.That(result, Is.SameAs(ticketTwo));
        }
        public void GetCurrentProject_returns_project_by_id_if_already_set([HasIdentity] Project project,
                                                                           [Frozen, InMemory] IEntityData data,
                                                                           [Frozen] IAppSessionStore store,
                                                                           CurrentlyChosenProjectDecorator sut)
        {
            data.Add(project);
            var id = project.GetIdentity();

            Mock.Get(store).Setup(x => x.TryGet(SessionKey.CurrentProjectIdentity, out id)).Returns(true);

            Assert.That(() => sut.GetCurrentProject(), Is.SameAs(project));
        }
Example #17
0
        public void GetLabels_returns_a_matching_label([Frozen, InMemory] IEntityData entityData,
                                                       ExistingLabelProvider sut,
                                                       Label label)
        {
            // Arrange
            entityData.Add(label);

            // Act
            var result = sut.GetLabels(new [] { label.Name });

            // Assert
            Assert.That(result, Has.Exactly(1).SameAs(label));
        }
        public void GetLabels_does_not_return_a_label_which_does_not_match_the_query([Frozen, InMemory] IEntityData entityData,
                                                                                     LabelsMatchingSearchByRelevanceSearcher sut,
                                                                                     Label label)
        {
            // Arrange
            label.Name = "Elephant";
            entityData.Add(label);

            // Act
            var result = sut.GetLabels("zzz");

            // Assert
            Assert.That(result.Count, Is.EqualTo(0));
        }
Example #19
0
        public void GetLabels_does_not_return_a_non_matching_label([Frozen, InMemory] IEntityData entityData,
                                                                   ExistingLabelProvider sut,
                                                                   Label label,
                                                                   string labelName)
        {
            // Arrange
            entityData.Add(label);

            // Act
            var result = sut.GetLabels(new [] { labelName });

            // Assert
            Assert.That(result, Is.Empty);
        }
Example #20
0
        void SetupInitialData(IEntityData data)
        {
            var project = new Project {
                Code = "AB"
            };

            data.Add(project);

            var ticketType = new TicketType {
                Name = "Ticket"
            };

            ((IEntity)ticketType).IdentityValue = 5L;
            data.Add(ticketType);

            var firstTicket = new Ticket {
                Project      = project,
                TicketNumber = 11,
            };

            ((IEntity)firstTicket).IdentityValue = 5L;
            var secondTicket = new Ticket {
                Project      = project,
                TicketNumber = 22
            };

            ((IEntity)secondTicket).IdentityValue = 7L;
            data.Add(firstTicket);
            data.Add(secondTicket);

            var relationship = new NonDirectionalRelationship {
                PrimarySummary = "Relates"
            };

            ((IEntity)relationship).IdentityValue = 6L;
            data.Add(relationship);
        }
        public void CreateTicketRelationship_sets_up_relationship([Frozen, InMemory] IEntityData data,
                                                                  Relationship relationship,
                                                                  TicketReference ticketReference,
                                                                  RelationshipParticipant participationType,
                                                                  TicketRelationshipFactory sut)
        {
            // Arrange
            data.Add(relationship);

            // Act
            var result = sut.CreateTicketRelationship(relationship.GetIdentity(), ticketReference, participationType);

            // Assert
            Assert.That(result?.Relationship, Is.SameAs(relationship));
        }
Example #22
0
        public void GetStoredCredentials_returns_credentials_when_user_is_found(LoginCredentials credentials,
                                                                                User user,
                                                                                [Frozen, InMemory] IEntityData data,
                                                                                UserCredentialsRepository sut)
        {
            // Arrange
            user.GenerateIdentity();
            user.Username = credentials.Username;
            data.Add(user);

            // Act
            var result = sut.GetStoredCredentials(credentials);

            // Assert
            Assert.NotNull(result);
        }
Example #23
0
        public void GetStoredCredentials_returns_matching_serialized_credentials_when_user_found(LoginCredentials credentials,
                                                                                                 User user,
                                                                                                 [Frozen, InMemory] IEntityData data,
                                                                                                 UserCredentialsRepository sut)
        {
            // Arrange
            user.GenerateIdentity();
            user.Username = credentials.Username;
            data.Add(user);

            // Act
            var result = sut.GetStoredCredentials(credentials);

            // Assert
            Assert.AreEqual(user.SerializedCredentials, result.SerializedCredentials);
        }
Example #24
0
        public void GetStoredCredentials_returns_correct_identity_when_user_found(LoginCredentials credentials,
                                                                                  User user,
                                                                                  [Frozen, InMemory] IEntityData data,
                                                                                  UserCredentialsRepository sut)
        {
            // Arrange
            user.GenerateIdentity();
            user.Username = credentials.Username;
            data.Add(user);

            // Act
            var result = sut.GetStoredCredentials(credentials);

            // Assert
            Assert.AreEqual(user.GetIdentity(), result.UserInformation.Identity);
        }
Example #25
0
        public void Edit_passes_correct_ticket_to_editing_service(EditTicketRequest request,
                                                                  [Frozen, AlwaysPasses] ICreatesValidators <EditTicketRequest> validatorFactory,
                                                                  [Frozen, CreatesTransaction] IGetsTransaction transactionCreator,
                                                                  [InMemory, Frozen] IEntityData data,
                                                                  Ticket ticket,
                                                                  [Frozen] IEditsTicket editor,
                                                                  EditTicketRequestHandler sut)
        {
            // Arrange
            data.Add(ticket);
            request.Identity = ticket.GetIdentity();

            // Act
            sut.Edit(request);

            // Assert
            Mock.Get(editor).Verify(x => x.Edit(ticket, request), Times.Once);
        }
        public void GetTicketDetailDto_returns_mapped_dto_when_ticket_exists([Frozen] IGetsTicketByReference ticketProvider,
                                                                             [Frozen, InMemory] IEntityData data,
                                                                             [Frozen] IMapper mapper,
                                                                             TicketDetailDtoProvider sut,
                                                                             TicketReference reference,
                                                                             TicketDetailDto dto,
                                                                             Ticket ticket)
        {
            Mock.Get(ticketProvider)
            .Setup(x => x.GetTicketByReference(reference))
            .Returns(ticket);
            data.Add(ticket);
            Mock.Get(mapper)
            .Setup(x => x.Map <TicketDetailDto>(ticket))
            .Returns(dto);
            var result = sut.GetTicketDetailDto(reference);

            Assert.That(result, Is.SameAs(dto));
        }
Example #27
0
        public void Edit_returns_edited_ticket_in_response(EditTicketRequest request,
                                                           [Frozen, AlwaysPasses] ICreatesValidators <EditTicketRequest> validatorFactory,
                                                           [Frozen, CreatesTransaction] IGetsTransaction transactionCreator,
                                                           [InMemory, Frozen] IEntityData data,
                                                           [HasIdentity] Ticket ticket,
                                                           [Frozen] ICreatesEditTicketResponse editResponseCreator,
                                                           EditTicketRequestHandler sut)
        {
            // Arrange
            data.Add(ticket);
            request.Identity = ticket.GetIdentity();

            // Act
            sut.Edit(request);

            // Assert
            Mock.Get(editResponseCreator)
            .Verify(x => x.GetResponse(It.IsAny <IValidationResult>(), ticket), Times.Once);
        }
Example #28
0
        Sprint CreateSprintOne(Project project)
        {
            var sprint = new Sprint {
                Name         = "Sprint one",
                Description  = "This is sprint number one",
                CreationDate = new DateTime(2011, 1, 1),
                StartDate    = new DateTime(2011, 3, 1),
                EndDate      = new DateTime(2011, 4, 1),
            };

            project.Sprints.Add(sprint);
            repo.Add(sprint);

            return(sprint);
        }