コード例 #1
0
        public async Task ReturnsEmptyListIfNoJobs()
        {
            var fixture   = new Fixture();
            var testShift = fixture.Create <Shift>();

            testShift.Jobs.Clear();
            var expectedJobs = Enumerable.Empty <JobSummary>();

            var shiftServiceMock = new Mock <IShiftService>(MockBehavior.Strict);

            shiftServiceMock.Setup(s => s.GetShift(AuthenticationHelperMock.GoodUserId, testShift.Id)).Returns(Task.FromResult(testShift));
            var shiftService = shiftServiceMock.Object;

            var function = new GetJobs(shiftService, AuthenticationHelperMock.GetAuthenticationHelper());

            var request = new DefaultHttpRequest(new DefaultHttpContext());

            request.Headers.Add("Authorization", AuthenticationHelperMock.GoodHeader);
            request.QueryString = new QueryString($"?shiftId={testShift.Id}");

            var result = await function.Run(request, NullLogger.Instance);

            result.Should().BeOfType <OkObjectResult>()
            .Which.Value.Should().BeEquivalentTo(expectedJobs);
        }
コード例 #2
0
        public async Task ReturnsJobsIfFound()
        {
            var fixture      = new Fixture();
            var testShift    = fixture.Create <Shift>();
            var expectedJobs = testShift.Jobs.Select(j => new JobSummary
            {
                Age            = j.Age,
                Category       = j.Category,
                Gender         = j.Gender,
                ReflectionFlag = j.ReflectionFlag
            });

            var shiftServiceMock = new Mock <IShiftService>(MockBehavior.Strict);

            shiftServiceMock.Setup(s => s.GetShift(AuthenticationHelperMock.GoodUserId, testShift.Id)).Returns(Task.FromResult <Shift>(testShift));
            var shiftService = shiftServiceMock.Object;

            var function = new GetJobs(shiftService, AuthenticationHelperMock.GetAuthenticationHelper());

            var request = new DefaultHttpRequest(new DefaultHttpContext());

            request.Headers.Add("Authorization", AuthenticationHelperMock.GoodHeader);
            request.QueryString = new QueryString($"?shiftId={testShift.Id}");

            var result = await function.Run(request, NullLogger.Instance);

            result.Should().BeOfType <OkObjectResult>()
            .Which.Value.Should().BeEquivalentTo(expectedJobs);
        }
コード例 #3
0
        public async Task ReturnsBadRequestWithInvalidEvent()
        {
            var fixture = new Fixture();

            var testShift = fixture.Build <NewShift>()
                            .With(j => j.Duration, TimeSpan.FromHours(2))
                            .With(j => j.Event, string.Empty)
                            .Create();

            var body       = JsonConvert.SerializeObject(testShift);
            var bodyArray  = Encoding.UTF8.GetBytes(body);
            var bodyStream = new MemoryStream(bodyArray);

            var shiftService = new Mock <IShiftService>(MockBehavior.Strict).Object;

            var function = new UpdateShift(shiftService, AuthenticationHelperMock.GetAuthenticationHelper());

            var request = new DefaultHttpRequest(new DefaultHttpContext());

            request.Headers.Add("Authorization", AuthenticationHelperMock.GoodHeader);
            request.Body = bodyStream;

            var result = await function.Run(request, NullLogger.Instance);

            result.Should().BeOfType <BadRequestResult>();
        }
コード例 #4
0
        public async Task ReturnsSixShifts()
        {
            var fixture        = new Fixture();
            var testShifts     = fixture.CreateMany <Shift>(20);
            var expectedShifts = testShifts.Where(s => s.Date.Date <= DateTime.Today).OrderByDescending(s => s.Date).Take(6).Select(s => new ShiftSummary
            {
                CrewMate    = s.CrewMate,
                Date        = s.Date,
                Duration    = s.Duration,
                Event       = s.Event,
                Id          = s.Id,
                Location    = s.Location,
                LoggedCalls = s.Jobs?.Count ?? 0,
                Role        = s.Role
            });

            var shiftServiceMock = new Mock <IShiftService>(MockBehavior.Strict);

            shiftServiceMock.Setup(s => s.GetAllShifts(AuthenticationHelperMock.GoodUserId)).ReturnsAsync(testShifts);
            var shiftService = shiftServiceMock.Object;

            var function = new RecentShifts(shiftService, AuthenticationHelperMock.GetAuthenticationHelper());

            var request = new DefaultHttpRequest(new DefaultHttpContext());

            request.Headers.Add("Authorization", AuthenticationHelperMock.GoodHeader);

            var result = await function.Run(request, NullLogger.Instance);

            result.Should().BeOfType <OkObjectResult>()
            .Which.Value.Should().BeEquivalentTo(expectedShifts);
        }
コード例 #5
0
        public async Task ReturnsSecondTwentyIfPageSpecified()
        {
            var fixture        = new Fixture();
            var testShifts     = fixture.CreateMany <Shift>(20);
            var expectedShifts = testShifts.OrderByDescending(s => s.Date).Skip(10).Take(10).Select(s => new ShiftSummary
            {
                CrewMate    = s.CrewMate,
                Date        = s.Date,
                Duration    = s.Duration,
                Event       = s.Event,
                Id          = s.Id,
                Location    = s.Location,
                LoggedCalls = s.Jobs?.Count ?? 0,
                Role        = s.Role
            });

            var shiftServiceMock = new Mock <IShiftService>(MockBehavior.Strict);

            shiftServiceMock.Setup(s => s.GetAllShifts(AuthenticationHelperMock.GoodUserId)).ReturnsAsync(testShifts);
            var shiftService = shiftServiceMock.Object;

            var function = new GetAllShifts(shiftService, AuthenticationHelperMock.GetAuthenticationHelper());

            var request = new DefaultHttpRequest(new DefaultHttpContext());

            request.Headers.Add("Authorization", AuthenticationHelperMock.GoodHeader);
            request.QueryString = new QueryString($"?page=1");

            var result = await function.Run(request, NullLogger.Instance);

            result.Should().BeOfType <OkObjectResult>()
            .Which.Value.Should().BeEquivalentTo(expectedShifts);
            request.HttpContext.Response.Headers["X-Total-Count"].Should().BeEquivalentTo(new[] { testShifts.Count().ToString() });
        }
コード例 #6
0
        public async Task ReturnsBadRequestIfShiftDoesNotExist()
        {
            var fixture = new Fixture();

            var testShift = fixture.Build <NewJob>()
                            .With(j => j.Age, 1)
                            .With(j => j.Category, 1)
                            .Create();

            var body       = JsonConvert.SerializeObject(testShift);
            var bodyArray  = Encoding.UTF8.GetBytes(body);
            var bodyStream = new MemoryStream(bodyArray);

            var shiftServiceMock = new Mock <IShiftService>(MockBehavior.Strict);

            shiftServiceMock.Setup(s => s.AddJob(AuthenticationHelperMock.GoodUserId, It.Is <NewJob>(j => j.Equals(testShift)))).ReturnsAsync(false);
            var shiftService = shiftServiceMock.Object;

            var function = new LogJob(shiftService, AuthenticationHelperMock.GetAuthenticationHelper());

            var request = new DefaultHttpRequest(new DefaultHttpContext());

            request.Headers.Add("Authorization", AuthenticationHelperMock.GoodHeader);
            request.Body = bodyStream;

            var result = await function.Run(request, NullLogger.Instance);

            result.Should().BeOfType <BadRequestResult>();
        }
コード例 #7
0
        public async Task ReturnsOkIfValidRequest()
        {
            var fixture = new Fixture();

            var testId    = fixture.Create <string>();
            var testShift = fixture.Build <NewShift>()
                            .With(j => j.Duration, TimeSpan.FromHours(2))
                            .Create();

            var body       = JsonConvert.SerializeObject(testShift);
            var bodyArray  = Encoding.UTF8.GetBytes(body);
            var bodyStream = new MemoryStream(bodyArray);

            var shiftServiceMock = new Mock <IShiftService>(MockBehavior.Strict);

            shiftServiceMock.Setup(s => s.AddShift(AuthenticationHelperMock.GoodUserId, It.Is <NewShift>(j => j.Equals(testShift)))).ReturnsAsync(testId);
            var shiftService = shiftServiceMock.Object;

            var function = new LogShift(shiftService, AuthenticationHelperMock.GetAuthenticationHelper());

            var request = new DefaultHttpRequest(new DefaultHttpContext());

            request.Headers.Add("Authorization", AuthenticationHelperMock.GoodHeader);
            request.Body = bodyStream;

            var result = await function.Run(request, NullLogger.Instance);

            result.Should().BeOfType <OkResult>();

            shiftServiceMock.Verify(s => s.AddShift(AuthenticationHelperMock.GoodUserId, It.Is <NewShift>(j => j.Equals(testShift))));
        }
コード例 #8
0
        public async Task ReturnsShiftWithGoodId()
        {
            var fixture        = new Fixture();
            var testShift      = fixture.Create <Shift>();
            var expectedResult = new UpdatedShift
            {
                CrewMate = testShift.CrewMate,
                Date     = testShift.Date,
                Duration = testShift.Duration,
                Event    = testShift.Event,
                Id       = testShift.Id,
                Location = testShift.Location,
                Role     = testShift.Role
            };

            var shiftServiceMock = new Mock <IShiftService>(MockBehavior.Strict);

            shiftServiceMock.Setup(s => s.GetShift(AuthenticationHelperMock.GoodUserId, testShift.Id)).ReturnsAsync(testShift);
            var shiftService = shiftServiceMock.Object;

            var function = new GetShift(shiftService, AuthenticationHelperMock.GetAuthenticationHelper());

            var request = new DefaultHttpRequest(new DefaultHttpContext());

            request.Headers.Add("Authorization", AuthenticationHelperMock.GoodHeader);
            request.QueryString = new QueryString($"?id={testShift.Id}");

            var result = await function.Run(request, NullLogger.Instance);

            result.Should().BeOfType <OkObjectResult>()
            .Which.Value.Should().BeEquivalentTo(expectedResult);
        }
コード例 #9
0
        public async Task ReturnsUnauthorisedWithNoClaims()
        {
            var shiftService = new Mock <IShiftService>(MockBehavior.Strict).Object;

            var function = new GetJobs(shiftService, AuthenticationHelperMock.GetAuthenticationHelper());

            var request = new DefaultHttpRequest(new DefaultHttpContext());

            var result = await function.Run(request, NullLogger.Instance);

            result.Should().BeOfType <UnauthorizedResult>();
        }
コード例 #10
0
        public async Task ReturnsBadRequestIfNoShiftId()
        {
            var shiftService = new Mock <IShiftService>(MockBehavior.Strict).Object;

            var function = new GetJobs(shiftService, AuthenticationHelperMock.GetAuthenticationHelper());

            var request = new DefaultHttpRequest(new DefaultHttpContext());

            request.Headers.Add("Authorization", AuthenticationHelperMock.GoodHeader);

            var result = await function.Run(request, NullLogger.Instance);

            result.Should().BeOfType <BadRequestResult>();
        }
コード例 #11
0
        public async Task ReturnsOkIfValidRequest()
        {
            var fixture = new Fixture();

            var testId            = fixture.Create <string>();
            var testOriginalShift = fixture.Build <Shift>()
                                    .With(j => j.Duration, TimeSpan.FromHours(2))
                                    .Create();
            var testUpdatedShift = fixture.Build <UpdatedShift>()
                                   .With(j => j.Id, testOriginalShift.Id)
                                   .With(j => j.Duration, TimeSpan.FromHours(3))
                                   .Create();
            var updatedShift = new Shift
            {
                CrewMate = testUpdatedShift.CrewMate,
                Date     = testUpdatedShift.Date,
                Duration = testUpdatedShift.Duration,
                Event    = testUpdatedShift.Event,
                Id       = testUpdatedShift.Id,
                Location = testUpdatedShift.Location,
                Role     = testUpdatedShift.Role,
                UserId   = testOriginalShift.UserId,
                Jobs     = testOriginalShift.Jobs
            };

            var body       = JsonConvert.SerializeObject(testUpdatedShift);
            var bodyArray  = Encoding.UTF8.GetBytes(body);
            var bodyStream = new MemoryStream(bodyArray);

            var shiftServiceMock = new Mock <IShiftService>(MockBehavior.Strict);

            shiftServiceMock.Setup(s => s.GetShift(AuthenticationHelperMock.GoodUserId, testOriginalShift.Id)).ReturnsAsync(testOriginalShift);
            shiftServiceMock.Setup(s => s.UpdateShift(AuthenticationHelperMock.GoodUserId, It.Is <Shift>(u => updatedShift.Equals(u)))).Returns(Task.CompletedTask);
            var shiftService = shiftServiceMock.Object;

            var function = new UpdateShift(shiftService, AuthenticationHelperMock.GetAuthenticationHelper());

            var request = new DefaultHttpRequest(new DefaultHttpContext());

            request.Headers.Add("Authorization", AuthenticationHelperMock.GoodHeader);
            request.Body = bodyStream;

            var result = await function.Run(request, NullLogger.Instance);

            result.Should().BeOfType <OkResult>();

            shiftServiceMock.Verify(s => s.UpdateShift(AuthenticationHelperMock.GoodUserId, It.Is <Shift>(u => updatedShift.Equals(u))));
        }
コード例 #12
0
        public async Task ReturnsBadRequestWithInvalidJson()
        {
            var body       = JsonConvert.SerializeObject("{ invalidjson }");
            var bodyArray  = Encoding.UTF8.GetBytes(body);
            var bodyStream = new MemoryStream(bodyArray);

            var shiftService = new Mock <IShiftService>(MockBehavior.Strict).Object;

            var function = new UpdateShift(shiftService, AuthenticationHelperMock.GetAuthenticationHelper());

            var request = new DefaultHttpRequest(new DefaultHttpContext());

            request.Headers.Add("Authorization", AuthenticationHelperMock.GoodHeader);
            request.Body = bodyStream;

            var result = await function.Run(request, NullLogger.Instance);

            result.Should().BeOfType <BadRequestResult>();
        }
コード例 #13
0
        public async Task ReturnsNotFoundRequestIfNoShift()
        {
            var fixture   = new Fixture();
            var testShift = fixture.Create <Shift>();

            var shiftServiceMock = new Mock <IShiftService>(MockBehavior.Strict);

            shiftServiceMock.Setup(s => s.GetShift(AuthenticationHelperMock.GoodUserId, testShift.Id)).Returns(Task.FromResult <Shift>(null));
            var shiftService = shiftServiceMock.Object;

            var function = new GetJobs(shiftService, AuthenticationHelperMock.GetAuthenticationHelper());

            var request = new DefaultHttpRequest(new DefaultHttpContext());

            request.Headers.Add("Authorization", AuthenticationHelperMock.GoodHeader);
            request.QueryString = new QueryString($"?shiftId={testShift.Id}");

            var result = await function.Run(request, NullLogger.Instance);

            result.Should().BeOfType <NotFoundResult>();
        }
コード例 #14
0
        public async Task ReturnsEmptyIfPageTooLarge()
        {
            var fixture        = new Fixture();
            var testShifts     = fixture.CreateMany <Shift>(20);
            var expectedShifts = Enumerable.Empty <ShiftSummary>();

            var shiftServiceMock = new Mock <IShiftService>(MockBehavior.Strict);

            shiftServiceMock.Setup(s => s.GetAllShifts(AuthenticationHelperMock.GoodUserId)).ReturnsAsync(testShifts);
            var shiftService = shiftServiceMock.Object;

            var function = new GetAllShifts(shiftService, AuthenticationHelperMock.GetAuthenticationHelper());

            var request = new DefaultHttpRequest(new DefaultHttpContext());

            request.Headers.Add("Authorization", AuthenticationHelperMock.GoodHeader);
            request.QueryString = new QueryString($"?page=10");

            var result = await function.Run(request, NullLogger.Instance);

            result.Should().BeOfType <OkObjectResult>()
            .Which.Value.Should().BeEquivalentTo(expectedShifts);
            request.HttpContext.Response.Headers["X-Total-Count"].Should().BeEquivalentTo(new[] { testShifts.Count().ToString() });
        }