public async Task start_sprint_command_should_set_startedAt()
        {
            var projectId = "projectKey" + Guid.NewGuid();

            var project = new Project(projectId);
            await _projectMongoDbFixture.InsertAsync(project.AsDocument());

            var sprintId    = "sprintKey" + Guid.NewGuid();
            var title       = "Title";
            var description = "description";
            var createdAt   = DateTime.Now;
            var startedAt   = DateTime.MinValue;
            var startDate   = DateTime.MinValue;
            var endDate     = DateTime.MaxValue;
            var endedAt     = DateTime.MaxValue;

            var sprint = new Sprint(sprintId, title, description, projectId, null, createdAt, startedAt, startDate, endDate, endedAt);
            await _sprintMongoDbFixture.InsertAsync(sprint.AsDocument());

            var command = new StartSprint(sprintId);

            // Check if exception is thrown

            _commandHandler
            .Awaiting(c => c.HandleAsync(command))
            .Should().NotThrow();


            var startedSprint = await _sprintMongoDbFixture.GetAsync(sprintId);

            startedSprint.Should().NotBeNull();
            startedSprint.StartedAt.Should().BeCloseTo(DateTime.Now, TimeSpan.FromSeconds(10));
        }
        public async Task HandleAsync(StartSprint command)
        {
            var sprint = await sprintRepository.GetAsync(command.Id);

            var originalVersion = sprint.Version;

            await sprint.StartSprint(sprintSearcher);

            await sprintRepository.Update(sprint, originalVersion);
        }
    // applies the sprint flag, sets regardless of grounding state so the animation can be updated on landing
    private void ApplySprint()
    {
        if (!IsSprinting)
        {
            IsSprinting = true;
        }

        if (Grounded() && IsRunning && _canSprint)
        {
            StartSprint?.Invoke();
        }
    }
    private void SprintInput()
    {
        if (Input.GetButtonDown("Sprint"))
        {
            StartSprint?.Invoke();
        }


        if (Input.GetButtonUp("Sprint"))
        {
            StopSprint?.Invoke();
        }
    }
        public async void start_sprint_command_fails_when_sprint_does_not_exist()
        {
            var projectId = "projectKey" + Guid.NewGuid();

            var project = new Project(projectId);
            await _projectMongoDbFixture.InsertAsync(project.AsDocument());

            var sprintId = "sprintKey" + Guid.NewGuid();


            var command = new StartSprint(sprintId);


            // Check if exception is thrown

            _commandHandler
            .Awaiting(c => c.HandleAsync(command))
            .Should().Throw <SprintNotFoundException>();
        }