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 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"); }
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))); } }
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"); }
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"); } }