public bool LeggTilBrukerRequest(ProsjektrequestSkjema pReq, string brukernavn) { int bId = BrukerId(brukernavn); int bIdTil = BrukerId(pReq.TilBruker); int pId = pReq.ProsjektId; if (!ErAdmin(brukernavn, pReq.ProsjektId) && !ErEier(brukernavn, pReq.ProsjektId)) { return false; } if (bIdTil == 0) { return false; } var nyRequest = new Prosjektrequest() { BrukerIdFra = bId, BrukerIdTil = bIdTil, ProsjektId = pId, Akseptert = false, Sendt = DateTime.Now }; using (var db = new Dbkontekst()) { try { db.Prosjektrequester.Add(nyRequest); db.SaveChanges(); return true; } catch (Exception feil) { return false; } } }
public ProsjektTest(){ // Lager mocks som vi kan gjøre spørringer mot var req = new List<Prosjektrequest>() { new Prosjektrequest() { ProsjektId = 1, BrukerIdFra = 1, BrukerIdTil = 2, MeldingId = 1, Sendt = Convert.ToDateTime("22.12.2012 16.43") }, new Prosjektrequest() { ProsjektId = 2, BrukerIdFra = 2, BrukerIdTil = 1, MeldingId = 1, Sendt = Convert.ToDateTime("22.12.2012 16.43") } }; List<dbBruker> bruker = new List<dbBruker> { new dbBruker { BrukerId = 1, Email = "*****@*****.**" }, new dbBruker { BrukerId = 2, Email = "*****@*****.**" }, new dbBruker { BrukerId = 3, Email = "*****@*****.**" } }; List<Prosjekt> prosjekter = new List<Prosjekt> { new Prosjekt() { ProsjektId=1,EierId=1 }, new Prosjekt() { ProsjektId=2,EierId=2 } }; List<Prosjektdeltakelse> deltakelser = new List<Prosjektdeltakelse> { new Prosjektdeltakelse { ProsjektDeltakerId=1, BrukerId = 1, ProsjektId = 1, Admin = false, Medlemsdato = Convert.ToDateTime("22.12.2012 16.43") }, new Prosjektdeltakelse { ProsjektDeltakerId=2, BrukerId = 2, ProsjektId = 1, Admin = true, Medlemsdato = Convert.ToDateTime("22.12.2012 16.43") }, new Prosjektdeltakelse { ProsjektDeltakerId=3, BrukerId = 3, ProsjektId = 1, Admin = false, Medlemsdato = Convert.ToDateTime("22.12.2012 16.43") } }; var reqMelding = new List<ProsjektrequestMelding>() { new ProsjektrequestMelding() { ProsjektId = 1, FraBruker = "*****@*****.**", TilBruker = "*****@*****.**", Melding = "", Prosjektnavn = "Bunnpris", MeldingId = 1, Tid = Convert.ToDateTime("22.12.2012 16.43") } }; Mock<InterfaceDbTProsjekt> mockProductRepository = new Mock<InterfaceDbTProsjekt>(); bool ok = false; mockProductRepository.Setup(mr => mr.ErEier(It.IsAny<string>(), It.IsAny<int>())) .Returns( (string u, int i) => { var bId = this.mockProductRepository.BrukerId(u); var TestOk = (from x in prosjekter where x.EierId == bId && x.ProsjektId == i select x.EierId).SingleOrDefault(); if (TestOk != 0) { ok = true; return ok; } return ok; }); mockProductRepository.Setup(mr => mr.ErAdmin(It.IsAny<string>(), It.IsAny<int>())) .Returns( (string u, int i) => { var okAdmin = false; var bId = this.mockProductRepository.BrukerId(u); var TestOk = (from x in deltakelser where x.ProsjektId == i && x.BrukerId == bId select x.Admin).SingleOrDefault(); if (TestOk != false) { okAdmin = true; return okAdmin; } return okAdmin; }); mockProductRepository.Setup(mr => mr.BrukerId(It.IsAny<string>())) .Returns( (string u) => { int userId = (from x in bruker where x.Email == u select x.BrukerId).SingleOrDefault(); return userId; }); mockProductRepository.Setup(mr => mr.BrukerNavn(It.IsAny<int>())) .Returns( (int i) => { var brukernavn = (from x in bruker where x.BrukerId == i select x.Email).SingleOrDefault(); return brukernavn; }); mockProductRepository.Setup(mr => mr.SjekkTilgangProsjekt(It.IsAny<string>())) .Returns( (string u) => { int BrukerId = this.mockProductRepository.BrukerId(u); List<ProsjektVis> pros = (from p in deltakelser from s in prosjekter where p.BrukerId == BrukerId && p.ProsjektId == s.ProsjektId select new ProsjektVis() { Id = p.ProsjektId, }).ToList(); return pros; }); mockProductRepository.Setup(mr => mr.VisRequesterForProsjekt(It.IsAny<int>(), It.IsAny<string>())) .Returns( (int i, string u) => { var tilganger = this.mockProductRepository.SjekkTilgangProsjekt(u); var eventer = (from k in req from s in tilganger where k.ProsjektId == i && k.ProsjektId == s.Id select new ProsjektrequestMelding { MeldingId = k.MeldingId, TilBruker = this.mockProductRepository.BrukerNavn(k.BrukerIdTil), Tid = k.Sendt, ProsjektId = k.ProsjektId }).ToList(); return eventer; }); mockProductRepository.Setup(mr => mr.VisRequester(It.IsAny<string>())) .Returns( (string u) => { int id = this.mockProductRepository.BrukerId(u); List<ProsjektrequestMelding> pros = (from p in req from b in bruker from s in prosjekter where p.BrukerIdTil == id && p.BrukerIdFra == b.BrukerId && p.ProsjektId == s.ProsjektId select new ProsjektrequestMelding() { ProsjektId = p.ProsjektId, FraBruker = b.Email, Melding = " har invitert deg til å bli medlem av: ", Tid = p.Sendt, TilBruker = u }).ToList(); return pros; }); mockProductRepository.Setup(mr => mr.HentProsjekter(It.IsAny<string>())) .Returns( (string u) => { int id = this.mockProductRepository.BrukerId(u); List<ProsjektVis> pros = (from p in deltakelser from s in prosjekter where p.BrukerId == id && p.ProsjektId == s.ProsjektId select new ProsjektVis() { Id = p.ProsjektId, Arbeidsplass = s.Arbeidsplass }).ToList(); return pros; }); mockProductRepository.Setup(mr => mr.SlettBrukerFraProsjekt(It.IsAny<string>(), It.IsAny<int>())) .Returns( (string u, int i) => { var SlettProsjekt = deltakelser.FirstOrDefault(p => p.ProsjektDeltakerId == i); var sjekkEier = prosjekter.FirstOrDefault(p => p.EierId == SlettProsjekt.BrukerId && p.ProsjektId == SlettProsjekt.ProsjektId); if (sjekkEier != null) { return false; // kan ikke slette eier fra prosjekt } if (this.mockProductRepository.ErAdmin(u, SlettProsjekt.ProsjektId) == true || this.mockProductRepository.ErEier(u, SlettProsjekt.ProsjektId) == true) { try { deltakelser.Remove(SlettProsjekt); return true; } catch (Exception feil) { return false; } } return false; }); mockProductRepository.Setup(mr => mr.RegistrerProsjekt(It.IsAny<Prosjekt>(), It.IsAny<string>())) .Returns( (Prosjekt p, string u) => { int userId = this.mockProductRepository.BrukerId(u); if (p.Arbeidsplass == "" || userId == 0) { return false; } var nyProsjekt = new Prosjekt() { Arbeidsplass = p.Arbeidsplass, EierId = userId }; var nyProsjektDeltakelse = new Prosjektdeltakelse() { BrukerId = userId, Medlemsdato = DateTime.Now, ProsjektId = nyProsjekt.ProsjektId }; try { prosjekter.Add(nyProsjekt); deltakelser.Add(nyProsjektDeltakelse); return true; } catch (Exception feil) { return false; } }); mockProductRepository.Setup(mr => mr.LeggTilBrukerRequest(It.IsAny<ProsjektrequestSkjema>(), It.IsAny<string>())) .Returns( (ProsjektrequestSkjema p, string u) => { int bId = this.mockProductRepository.BrukerId(u); int bIdTil = this.mockProductRepository.BrukerId(p.TilBruker); int pId = p.ProsjektId; if (!this.mockProductRepository.ErAdmin(u, p.ProsjektId) && !this.mockProductRepository.ErEier(u, p.ProsjektId)) { return false; } if (bIdTil == 0) { return false; } var nyRequest = new Prosjektrequest() { BrukerIdFra = bId, BrukerIdTil = bIdTil, ProsjektId = pId, Akseptert = false, Sendt = DateTime.Now }; try { req.Add(nyRequest); return true; } catch (Exception feil) { return false; } }); mockProductRepository.Setup(mr => mr.RegistrerProsjektdeltakelse(It.IsAny<ProsjektrequestMelding>(), It.IsAny<string>())) .Returns( (ProsjektrequestMelding p, string u) => { int id = this.mockProductRepository.BrukerId(u); IEnumerable<ProsjektDeltakelseOverforing> prosjektReq = from prosj in req from b in bruker from s in prosjekter where prosj.BrukerIdTil == id && prosj.BrukerIdFra == b.BrukerId && prosj.ProsjektId == p.ProsjektId select new ProsjektDeltakelseOverforing() { BrukerId = prosj.BrukerIdTil, ProsjektId = prosj.ProsjektId }; var prosjektD = new Prosjektdeltakelse(); foreach (var a in prosjektReq) { prosjektD.BrukerId = a.BrukerId; prosjektD.ProsjektId = a.ProsjektId; prosjektD.Medlemsdato = DateTime.Now; } try { deltakelser.Add(prosjektD); this.mockProductRepository.SlettRequest(prosjektD.ProsjektId, u); return true; } catch (Exception feil) { return false; } }); /* */ this.mockProductRepository = mockProductRepository.Object; }