public void Position_Creation_Returns_Display_View_Model()
        {
            // Setup
            var positionAuthMock = new Mock<IProcess<PositionAuthorizationParams, AuthorizationResultViewModel>>();
            positionAuthMock.Setup(x => x.Execute(It.IsAny<PositionAuthorizationParams>())).Returns(new AuthorizationResultViewModel { UserAuthorized = true });

            var companyAuthMock = new Mock<IProcess<CompanyQueryAuthorizationParams, AuthorizationResultViewModel>>();
            companyAuthMock.Setup(x => x.Execute(It.IsAny<CompanyQueryAuthorizationParams>())).Returns(new AuthorizationResultViewModel { UserAuthorized = true });

            IProcess<CreatePositionParams, PositionDisplayViewModel> process = new PositionProcesses(_context, positionAuthMock.Object, companyAuthMock.Object);

            User user = new User();
            Company company = new Company();
            _context.Users.Add(user);
            _context.Companies.Add(company);
            _context.SaveChanges();

            // Act
            PositionDisplayViewModel result = process.Execute(new CreatePositionParams
            {
                CompanyId = company.Id,
                Title = "title",
                HasApplied = true,
                Notes = "Notes",
                LinkedInId = "ABC123",
                RequestingUserId = user.Id
            });

            // Verify
            Assert.AreEqual("title", result.Title, "Position had an incorrect title");
            Assert.IsTrue(result.HasApplied, "Position had an incorrect HasApplied value");
            Assert.AreEqual("Notes", result.Notes, "Position had an incorrect note");
            Assert.AreEqual("ABC123", result.LinkedInId, "Position had an incorrect LinkedIn id");
        }
Beispiel #2
0
        public void Editing_Position_Creates_History_Record()
        {
            // Setup
            var posAuthMock = new Mock <IProcess <PositionAuthorizationParams, AuthorizationResultViewModel> >();

            posAuthMock.Setup(x => x.Execute(It.IsAny <PositionAuthorizationParams>())).Returns(new AuthorizationResultViewModel {
                UserAuthorized = true
            });

            var companyAuthMock = new Mock <IProcess <CompanyQueryAuthorizationParams, AuthorizationResultViewModel> >();

            companyAuthMock.Setup(x => x.Execute(It.IsAny <CompanyQueryAuthorizationParams>())).Returns(new AuthorizationResultViewModel {
                UserAuthorized = true
            });

            IProcess <EditPositionParams, PositionDisplayViewModel> process = new PositionProcesses(_context, posAuthMock.Object, companyAuthMock.Object);
            Position position = new Position
            {
                HasApplied = true,
                Title      = "start title",
                Notes      = "start note",
                LinkedInId = "MyLinkedIn"
            };

            User user = new User();

            _context.Users.Add(user);
            _context.Positions.Add(position);
            _context.SaveChanges();

            // Act
            DateTime start = DateTime.Now;

            process.Execute(new EditPositionParams
            {
                Id               = position.Id,
                Title            = "title",
                HasApplied       = true,
                Notes            = "notes",
                RequestingUserId = user.Id
            });
            DateTime end = DateTime.Now;

            // Verify
            var result = _context.Positions.Single().History.SingleOrDefault();

            Assert.IsNotNull(result, "No history record was created");
            Assert.AreEqual("title", result.Title, "History record's title was incorrect");
            Assert.AreEqual(true, result.HasApplied, "History record's has applied value was incorrect");
            Assert.AreEqual("notes", result.Notes, "History record's notes were incorrect");
            Assert.AreEqual("MyLinkedIn", result.LinkedInId, "History record's linked in value was incorrect");

            Assert.AreEqual(MJLConstants.HistoryUpdate, result.HistoryAction, "History record's action value was incorrect");
            Assert.AreEqual(user.Id, result.AuthoringUserId, "History record's author id value was incorrect");
            Assert.IsTrue(result.DateModified >= start && result.DateModified <= end, "History record's date modified was incorrect");
        }
        public void Position_Gets_Created_With_History_Record()
        {
            // Setup
            var positionAuthMock = new Mock <IProcess <PositionAuthorizationParams, AuthorizationResultViewModel> >();

            positionAuthMock.Setup(x => x.Execute(It.IsAny <PositionAuthorizationParams>())).Returns(new AuthorizationResultViewModel {
                UserAuthorized = true
            });

            var companyAuthMock = new Mock <IProcess <CompanyQueryAuthorizationParams, AuthorizationResultViewModel> >();

            companyAuthMock.Setup(x => x.Execute(It.IsAny <CompanyQueryAuthorizationParams>())).Returns(new AuthorizationResultViewModel {
                UserAuthorized = true
            });

            IProcess <CreatePositionParams, PositionDisplayViewModel> process = new PositionProcesses(_context, positionAuthMock.Object, companyAuthMock.Object);

            User    user    = new User();
            Company company = new Company();

            _context.Users.Add(user);
            _context.Companies.Add(company);
            _context.SaveChanges();

            DateTime start, end;

            // Act
            start = DateTime.Now;
            process.Execute(new CreatePositionParams
            {
                CompanyId        = company.Id,
                Title            = "title",
                HasApplied       = true,
                Notes            = "Notes",
                LinkedInId       = "ABC123",
                RequestingUserId = user.Id
            });
            end = DateTime.Now;

            // Verify
            var result = _context.Positions.Single().History.SingleOrDefault();

            Assert.IsNotNull(result, "No history record was created");
            Assert.AreEqual("title", result.Title, "History record's title was incorrect");
            Assert.AreEqual(true, result.HasApplied, "History record's applied value was incorrect");
            Assert.AreEqual("Notes", result.Notes, "History record's notes value was incorrect");
            Assert.AreEqual("ABC123", result.LinkedInId, "History record's linkedin id was incorrect");

            Assert.AreEqual(MJLConstants.HistoryInsert, result.HistoryAction, "History action was incorrect");
            Assert.AreEqual(user.Id, result.AuthoringUserId, "History record's authoring user id was incorrect");
            Assert.IsTrue(result.DateModified >= start && result.DateModified <= end, "History's date was incorrect");
        }
        public void Can_Get_List_Of_Positions_For_Users_Current_JobSearch()
        {
            // Setup
            var posAuthMock = new Mock <IProcess <PositionAuthorizationParams, AuthorizationResultViewModel> >();

            posAuthMock.Setup(x => x.Execute(It.IsAny <PositionAuthorizationParams>())).Returns(new AuthorizationResultViewModel {
                UserAuthorized = true
            });

            var companyAuthMock = new Mock <IProcess <CompanyQueryAuthorizationParams, AuthorizationResultViewModel> >();

            companyAuthMock.Setup(x => x.Execute(It.IsAny <CompanyQueryAuthorizationParams>())).Returns(new AuthorizationResultViewModel {
                UserAuthorized = true
            });

            JobSearch js1 = new JobSearch(), js2 = new JobSearch();
            User      user = new User {
                LastVisitedJobSearch = js1
            };
            Company comp1 = new Company {
                JobSearch = js1
            }, comp2 = new Company {
                JobSearch = js2
            };
            Position position1 = new Position {
                Company = comp1
            }, position2 = new Position {
                Company = comp2
            }, position3 = new Position {
                Company = comp1
            };

            _context.Positions.Add(position1);
            _context.Positions.Add(position2);
            _context.Positions.Add(position3);
            _context.Users.Add(user);
            _context.SaveChanges();

            IProcess <GetPositionListForUserParams, PositionListViewModel> process = new PositionProcesses(_context, posAuthMock.Object, companyAuthMock.Object);

            // Act
            PositionListViewModel result = process.Execute(new GetPositionListForUserParams {
                UserId = user.Id
            });

            // Verify
            Assert.IsNotNull(result, "Process returned a null view model");
            Assert.AreEqual(2, result.Positions.Count, "Incorrect number of positions returned");
            Assert.IsTrue(result.Positions.Any(x => x.Id == position1.Id), "No position in returned list had an id for position #1");
            Assert.IsTrue(result.Positions.Any(x => x.Id == position3.Id), "No position in returned list had an id for position #3");
        }
Beispiel #5
0
        public void Process_Throws_UserNotAuthorizedForEntityException_When_Authorization_Fails()
        {
            // Setup
            var posAuthMock = new Mock <IProcess <PositionAuthorizationParams, AuthorizationResultViewModel> >();

            posAuthMock.Setup(x => x.Execute(It.IsAny <PositionAuthorizationParams>())).Returns(new AuthorizationResultViewModel {
                UserAuthorized = false
            });

            var companyAuthMock = new Mock <IProcess <CompanyQueryAuthorizationParams, AuthorizationResultViewModel> >();

            companyAuthMock.Setup(x => x.Execute(It.IsAny <CompanyQueryAuthorizationParams>())).Returns(new AuthorizationResultViewModel {
                UserAuthorized = true
            });

            IProcess <EditPositionParams, PositionDisplayViewModel> process = new PositionProcesses(_context, posAuthMock.Object, companyAuthMock.Object);
            Position position = new Position
            {
                HasApplied = true,
                Title      = "start title",
                Notes      = "start note"
            };

            _context.Positions.Add(position);
            _context.SaveChanges();

            // Act
            try
            {
                process.Execute(new EditPositionParams
                {
                    Id               = position.Id,
                    Title            = "title",
                    HasApplied       = false,
                    Notes            = "notes",
                    RequestingUserId = 15
                });

                Assert.Fail("No exception was thrown");
            }

            // Verify
            catch (UserNotAuthorizedForEntityException ex)
            {
                Assert.AreEqual(typeof(Position), ex.EntityType, "Exception's entity type was incorrect");
                Assert.AreEqual(position.Id, ex.IdValue, "Exception's id value was incorrect");
                Assert.AreEqual(15, ex.UserId, "Exception's user id value was incorrect");
                posAuthMock.Verify(x => x.Execute(It.Is <PositionAuthorizationParams>(y => y.RequestingUserId == 15 && y.PositionId == position.Id)));
            }
        }
Beispiel #6
0
        public void Can_Edit_Position()
        {
            // Setup
            var posAuthMock = new Mock <IProcess <PositionAuthorizationParams, AuthorizationResultViewModel> >();

            posAuthMock.Setup(x => x.Execute(It.IsAny <PositionAuthorizationParams>())).Returns(new AuthorizationResultViewModel {
                UserAuthorized = true
            });

            var companyAuthMock = new Mock <IProcess <CompanyQueryAuthorizationParams, AuthorizationResultViewModel> >();

            companyAuthMock.Setup(x => x.Execute(It.IsAny <CompanyQueryAuthorizationParams>())).Returns(new AuthorizationResultViewModel {
                UserAuthorized = true
            });

            IProcess <EditPositionParams, PositionDisplayViewModel> process = new PositionProcesses(_context, posAuthMock.Object, companyAuthMock.Object);
            Position position = new Position
            {
                HasApplied = true,
                Title      = "start title",
                Notes      = "start note",
                LinkedInId = "LiId"
            };

            User user = new User();

            _context.Users.Add(user);
            _context.Positions.Add(position);
            _context.SaveChanges();

            // Act
            process.Execute(new EditPositionParams
            {
                Id               = position.Id,
                Title            = "title",
                HasApplied       = false,
                Notes            = "notes",
                RequestingUserId = user.Id
            });

            // Verify
            Position result = _context.Positions.Single();

            Assert.AreEqual("title", result.Title, "Position's title was incorrect");
            Assert.AreEqual("notes", result.Notes, "Position's note was incorrect");
            Assert.IsFalse(result.HasApplied, "Position's has applied value was incorrect");
            Assert.AreEqual("LiId", result.LinkedInId, "Position's linked in id was incorrect");
        }
Beispiel #7
0
        public void Editing_Position_Process_Throws_EntityNotFoundException_When_Process_Not_Found()
        {
            // Setup
            var posAuthMock = new Mock <IProcess <PositionAuthorizationParams, AuthorizationResultViewModel> >();

            posAuthMock.Setup(x => x.Execute(It.IsAny <PositionAuthorizationParams>())).Returns(new AuthorizationResultViewModel {
                UserAuthorized = true
            });

            var companyAuthMock = new Mock <IProcess <CompanyQueryAuthorizationParams, AuthorizationResultViewModel> >();

            companyAuthMock.Setup(x => x.Execute(It.IsAny <CompanyQueryAuthorizationParams>())).Returns(new AuthorizationResultViewModel {
                UserAuthorized = true
            });

            IProcess <EditPositionParams, PositionDisplayViewModel> process = new PositionProcesses(_context, posAuthMock.Object, companyAuthMock.Object);
            Position position = new Position
            {
                HasApplied = true,
                Title      = "start title",
                Notes      = "start note"
            };

            _context.Positions.Add(position);
            _context.SaveChanges();
            int id = position.Id + 1;

            // Act
            try
            {
                process.Execute(new EditPositionParams {
                    Id = id
                });
                Assert.Fail("No exception was thrown");
            }

            // Verify
            catch (MJLEntityNotFoundException ex)
            {
                Assert.AreEqual(typeof(Position), ex.EntityType, "MJLEntityNotFoundException's entity type was incorrect");
                Assert.AreEqual(id.ToString(), ex.IdValue, "MJLEntityNotFoundException's id value was incorrect");
            }
        }
        public void Can_Create_Position()
        {
            // Setup
            var positionAuthMock = new Mock <IProcess <PositionAuthorizationParams, AuthorizationResultViewModel> >();

            positionAuthMock.Setup(x => x.Execute(It.IsAny <PositionAuthorizationParams>())).Returns(new AuthorizationResultViewModel {
                UserAuthorized = true
            });

            var companyAuthMock = new Mock <IProcess <CompanyQueryAuthorizationParams, AuthorizationResultViewModel> >();

            companyAuthMock.Setup(x => x.Execute(It.IsAny <CompanyQueryAuthorizationParams>())).Returns(new AuthorizationResultViewModel {
                UserAuthorized = true
            });

            IProcess <CreatePositionParams, PositionDisplayViewModel> process = new PositionProcesses(_context, positionAuthMock.Object, companyAuthMock.Object);

            User    user    = new User();
            Company company = new Company();

            _context.Users.Add(user);
            _context.Companies.Add(company);
            _context.SaveChanges();

            // Act
            process.Execute(new CreatePositionParams
            {
                CompanyId        = company.Id,
                Title            = "title",
                HasApplied       = true,
                Notes            = "Notes",
                LinkedInId       = "ABC123",
                RequestingUserId = user.Id
            });

            // Verify
            Position result = _context.Positions.Single();

            Assert.AreEqual("title", result.Title, "Position had an incorrect title");
            Assert.IsTrue(result.HasApplied, "Position had an incorrect HasApplied value");
            Assert.AreEqual("Notes", result.Notes, "Position had an incorrect note");
            Assert.AreEqual("ABC123", result.LinkedInId, "Position had an incorrect linked in id value");
        }
        public void Process_Throws_EntityNotFoundException_When_Company_Not_Found()
        {
            // Setup
            var positionAuthMock = new Mock <IProcess <PositionAuthorizationParams, AuthorizationResultViewModel> >();

            positionAuthMock.Setup(x => x.Execute(It.IsAny <PositionAuthorizationParams>())).Returns(new AuthorizationResultViewModel {
                UserAuthorized = true
            });

            var companyAuthMock = new Mock <IProcess <CompanyQueryAuthorizationParams, AuthorizationResultViewModel> >();

            companyAuthMock.Setup(x => x.Execute(It.IsAny <CompanyQueryAuthorizationParams>())).Returns(new AuthorizationResultViewModel {
                UserAuthorized = true
            });

            IProcess <CreatePositionParams, PositionDisplayViewModel> process = new PositionProcesses(_context, positionAuthMock.Object, companyAuthMock.Object);
            Company company = new Company();

            _context.Companies.Add(company);
            _context.SaveChanges();
            int id = company.Id + 1;

            // Act
            try
            {
                process.Execute(new CreatePositionParams {
                    CompanyId = id
                });
                Assert.Fail("No exception was thrown");
            }

            // Verify
            catch (MJLEntityNotFoundException ex)
            {
                Assert.AreEqual(typeof(Company), ex.EntityType, "MJLEntityNotFoundException's entity type was incorrect");
                Assert.AreEqual(id.ToString(), ex.IdValue, "MJLEntityNotFoundException's id value was incorrect");
            }
        }
        public void Position_Gets_Created_With_History_Record()
        {
            // Setup
            var positionAuthMock = new Mock<IProcess<PositionAuthorizationParams, AuthorizationResultViewModel>>();
            positionAuthMock.Setup(x => x.Execute(It.IsAny<PositionAuthorizationParams>())).Returns(new AuthorizationResultViewModel { UserAuthorized = true });

            var companyAuthMock = new Mock<IProcess<CompanyQueryAuthorizationParams, AuthorizationResultViewModel>>();
            companyAuthMock.Setup(x => x.Execute(It.IsAny<CompanyQueryAuthorizationParams>())).Returns(new AuthorizationResultViewModel { UserAuthorized = true });

            IProcess<CreatePositionParams, PositionDisplayViewModel> process = new PositionProcesses(_context, positionAuthMock.Object, companyAuthMock.Object);

            User user = new User();
            Company company = new Company();
            _context.Users.Add(user);
            _context.Companies.Add(company);
            _context.SaveChanges();

            DateTime start, end;

            // Act
            start = DateTime.Now;
            process.Execute(new CreatePositionParams
            {
                CompanyId = company.Id,
                Title = "title",
                HasApplied = true,
                Notes = "Notes",
                LinkedInId = "ABC123",
                RequestingUserId = user.Id
            });
            end = DateTime.Now;

            // Verify
            var result = _context.Positions.Single().History.SingleOrDefault();
            Assert.IsNotNull(result, "No history record was created");
            Assert.AreEqual("title", result.Title, "History record's title was incorrect");
            Assert.AreEqual(true, result.HasApplied, "History record's applied value was incorrect");
            Assert.AreEqual("Notes", result.Notes, "History record's notes value was incorrect");
            Assert.AreEqual("ABC123", result.LinkedInId, "History record's linkedin id was incorrect");

            Assert.AreEqual(MJLConstants.HistoryInsert, result.HistoryAction, "History action was incorrect");
            Assert.AreEqual(user.Id, result.AuthoringUserId, "History record's authoring user id was incorrect");
            Assert.IsTrue(result.DateModified >= start && result.DateModified <= end, "History's date was incorrect");
        }
        public void Process_Throws_UserNotAuthorizedForEntityException_When_User_Not_Authorized_For_Company()
        {
            // Setup
            var positionAuthMock = new Mock<IProcess<PositionAuthorizationParams, AuthorizationResultViewModel>>();
            positionAuthMock.Setup(x => x.Execute(It.IsAny<PositionAuthorizationParams>())).Returns(new AuthorizationResultViewModel { UserAuthorized = true });

            var companyAuthMock = new Mock<IProcess<CompanyQueryAuthorizationParams, AuthorizationResultViewModel>>();
            companyAuthMock.Setup(x => x.Execute(It.IsAny<CompanyQueryAuthorizationParams>())).Returns(new AuthorizationResultViewModel { UserAuthorized = false });

            IProcess<CreatePositionParams, PositionDisplayViewModel> process = new PositionProcesses(_context, positionAuthMock.Object, companyAuthMock.Object);
            Company company = new Company();
            _context.Companies.Add(company);
            _context.SaveChanges();

            // Act
            try
            {
                process.Execute(new CreatePositionParams
                {
                    CompanyId = company.Id,
                    Title = "title",
                    HasApplied = true,
                    Notes = "Notes",
                    RequestingUserId = 15
                });

                Assert.Fail("No exception was thrown");
            }

            // Verify
            catch (UserNotAuthorizedForEntityException ex)
            {
                Assert.AreEqual(typeof(Company), ex.EntityType, "Exception's entity type was incorrect");
                Assert.AreEqual(company.Id, ex.IdValue, "Exception's id value was incorrect");
                Assert.AreEqual(15, ex.UserId, "Exception's user id value was incorrect");
                companyAuthMock.Verify(x => x.Execute(It.Is<CompanyQueryAuthorizationParams>(y => y.RequestingUserId == 15 && y.CompanyId == company.Id)));
            }
        }
        public void Process_Throws_EntityNotFoundException_When_Company_Not_Found()
        {
            // Setup
            var positionAuthMock = new Mock<IProcess<PositionAuthorizationParams, AuthorizationResultViewModel>>();
            positionAuthMock.Setup(x => x.Execute(It.IsAny<PositionAuthorizationParams>())).Returns(new AuthorizationResultViewModel { UserAuthorized = true });

            var companyAuthMock = new Mock<IProcess<CompanyQueryAuthorizationParams, AuthorizationResultViewModel>>();
            companyAuthMock.Setup(x => x.Execute(It.IsAny<CompanyQueryAuthorizationParams>())).Returns(new AuthorizationResultViewModel { UserAuthorized = true });

            IProcess<CreatePositionParams, PositionDisplayViewModel> process = new PositionProcesses(_context, positionAuthMock.Object, companyAuthMock.Object);
            Company company = new Company();
            _context.Companies.Add(company);
            _context.SaveChanges();
            int id = company.Id + 1;

            // Act
            try
            {
                process.Execute(new CreatePositionParams { CompanyId = id });
                Assert.Fail("No exception was thrown");
            }

            // Verify
            catch (MJLEntityNotFoundException ex)
            {
                Assert.AreEqual(typeof(Company), ex.EntityType, "MJLEntityNotFoundException's entity type was incorrect");
                Assert.AreEqual(id.ToString(), ex.IdValue, "MJLEntityNotFoundException's id value was incorrect");
            }
        }