private async Task SeedTestData(List <Ucenik> ucenici)
        {
            var _context = MojContextHelper.GetMojContext();

            MaturskiIspitService maturskiIspitService = new MaturskiIspitService(_context);

            Skola skola1 = new Skola {
                Naziv = "FIT Mostar"
            };
            SkolskaGodina skolskaGodina1 = new SkolskaGodina {
                Aktuelna = true, Naziv = "2017/18"
            };
            Nastavnik n1 = new Nastavnik {
                Ime = "Nastavnik1", Prezime = "PrezimeNastavnik1"
            };

            var predmeti = new List <Predmet>();

            for (int i = 0; i < 5; i++)
            {
                predmeti.Add(new Predmet {
                    Naziv = Guid.NewGuid().ToString(), Razred = 4
                });
            }

            await _context.AddAsync(skola1);

            await _context.AddAsync(skolskaGodina1);

            await _context.AddAsync(n1);

            await _context.AddRangeAsync(predmeti);

            await _context.SaveChangesAsync();

            Odjeljenje o1 = new Odjeljenje
            {
                IsPrebacenuViseOdjeljenje = false,
                Oznaka          = "IV-4",
                Razred          = 4,
                RazrednikID     = n1.Id,
                SkolskaGodinaID = skolskaGodina1.Id,
                SkolaID         = skola1.Id
            };

            await _context.AddRangeAsync(ucenici);

            await _context.AddAsync(o1);

            await _context.SaveChangesAsync();

            var odjeljenjeStavke = new List <OdjeljenjeStavka>();

            for (int i = 0; i < ucenici.Count(); i++)
            {
                odjeljenjeStavke.Add(new OdjeljenjeStavka
                {
                    BrojUDnevniku = i + 1,
                    OdjeljenjeId  = o1.Id,
                    UcenikId      = ucenici[i].Id
                });
            }

            await _context.AddRangeAsync(odjeljenjeStavke);

            await _context.SaveChangesAsync();

            var dodjeljeniPredmeti = new List <DodjeljenPredmet>();

            for (int j = 0; j < odjeljenjeStavke.Count() / 2; j++)
            {
                for (int i = 0; i < 5; i++)
                {
                    var ocjena = 1;

                    if (j == 0 && i < 4)
                    {
                        ocjena = 4;
                    }
                    else if (j == 1)
                    {
                        ocjena = 3;
                    }
                    else if (j == 2 && i < 3)
                    {
                        ocjena = 5;
                    }

                    dodjeljeniPredmeti.Add(new DodjeljenPredmet
                    {
                        OdjeljenjeStavkaId  = odjeljenjeStavke[j].Id,
                        PredmetId           = predmeti[i].Id,
                        ZakljucnoKrajGodine = ocjena
                    });
                }
            }

            for (int j = odjeljenjeStavke.Count() / 2; j < odjeljenjeStavke.Count() - 1; j++)
            {
                for (int i = 0; i < 5; i++)
                {
                    dodjeljeniPredmeti.Add(new DodjeljenPredmet
                    {
                        OdjeljenjeStavkaId  = odjeljenjeStavke[j].Id,
                        PredmetId           = predmeti[i].Id,
                        ZakljucnoKrajGodine = 5
                    });
                }
            }


            await _context.AddRangeAsync(dodjeljeniPredmeti);

            await _context.SaveChangesAsync();

            MaturskiIspit m1 = new MaturskiIspit
            {
                DatumOdrzavanja = DateTime.Now.AddDays(-20),
                Napomena        = string.Empty,
                NastavnikId     = n1.Id,
                PredmetId       = predmeti[0].Id,
                SkolaId         = skola1.Id,
                SkolskaGodinaId = skolskaGodina1.Id
            };

            MaturskiIspit m2 = new MaturskiIspit
            {
                DatumOdrzavanja = DateTime.Now.AddDays(-10),
                Napomena        = string.Empty,
                NastavnikId     = n1.Id,
                PredmetId       = predmeti[0].Id,
                SkolaId         = skola1.Id,
                SkolskaGodinaId = skolskaGodina1.Id
            };

            await _context.AddAsync(m1);

            await _context.SaveChangesAsync();

            var polaganja = new List <MaturskiIspitStavka>();

            polaganja.Add(new MaturskiIspitStavka
            {
                IsPristupio     = true,
                MaturskiIspitId = m1.Id,
                OsvojeniBodovi  = 50,
                UcenikId        = ucenici[3].Id
            });

            polaganja.Add(new MaturskiIspitStavka
            {
                IsPristupio     = true,
                MaturskiIspitId = m1.Id,
                OsvojeniBodovi  = 70,
                UcenikId        = ucenici[3].Id
            });

            polaganja.Add(new MaturskiIspitStavka
            {
                IsPristupio     = true,
                MaturskiIspitId = m1.Id,
                OsvojeniBodovi  = 75,
                UcenikId        = ucenici[4].Id
            });


            polaganja.Add(new MaturskiIspitStavka
            {
                IsPristupio     = true,
                MaturskiIspitId = m1.Id,
                OsvojeniBodovi  = 20,
                UcenikId        = ucenici[5].Id
            });

            await _context.AddRangeAsync(polaganja);

            await _context.SaveChangesAsync();
        }
        public async Task Student_Ispunjava_Uslove__Za_Polaganje()
        {
            var _context = MojContextHelper.GetMojContext();
            var ucenici  = new List <Ucenik>
            {
                new Ucenik {
                    ImePrezime = "I122 I333"
                },
                new Ucenik {
                    ImePrezime = "B122 B333"
                },
                new Ucenik {
                    ImePrezime = "C122 C333"
                },
                new Ucenik {
                    ImePrezime = "D122 D333"
                },
                new Ucenik {
                    ImePrezime = "E122 E333"
                },
                new Ucenik {
                    ImePrezime = "F122 F333"
                },
                new Ucenik {
                    ImePrezime = "G122 G333"
                }
            };

            var uceniciImena = ucenici.Select(x => x.ImePrezime);

            if (!await _context.Ucenik.AnyAsync(x => x.ImePrezime == ucenici[5].ImePrezime))
            {
                await SeedTestData(ucenici);
            }
            else
            {
                for (int i = 0; i < ucenici.Count(); i++)
                {
                    ucenici[i] = _context.Ucenik.LastOrDefault(x => x.ImePrezime == ucenici[i].ImePrezime);
                }
            }

            MaturskiIspitService maturskiIspitService = new MaturskiIspitService(_context);

            //Prvi ucenik ima jednu negativnu zakljucnu ocjenu
            //Nema maturskih ispita koje je polagao iz ovog predmeta
            Assert.AreEqual(await maturskiIspitService.IspunjavaUslovPolaganja(ucenici[0].Id), false);

            //Drugi ucenik nema negativnih ocjena
            //Nema maturskih ispita koje je polagao iz ovog predmeta
            Assert.AreEqual(await maturskiIspitService.IspunjavaUslovPolaganja(ucenici[1].Id), true);

            //Treci ucenik ima 3 negativne ocjene
            //Nema maturskih ispita koje je polagao iz ovog predmeta
            Assert.AreEqual(await maturskiIspitService.IspunjavaUslovPolaganja(ucenici[2].Id), false);

            //Cetvrti ucenik nema negativnih ocjena
            //Iz ovog predmeta je polagao maturski ispit 2 puta i to jednom neuspjesno i drugi put uspjesno polozio
            //Tako da je ocekivana vrijednost FALSE tj. nema pravo izlaska na predstojeci rok
            Assert.AreEqual(await maturskiIspitService.IspunjavaUslovPolaganja(ucenici[3].Id), false);

            //Peti ucenik nema negativnih ocjena
            //Iz ovog predmeta je polagao maturski ispit jednom i polozio ga
            //Tako da je ocekivana vrijednost FALSE tj. nema pravo izlaska na predstojeci rok
            Assert.AreEqual(await maturskiIspitService.IspunjavaUslovPolaganja(ucenici[4].Id), false);

            //Sesti ucenik nema negativnih ocjena
            //Iz ovog predmeta je polagao maturski ispit jednom i nije polozio
            //Tako da je ocekivana vrijednost TRUE tj. ima pravo izlaska na predstojeci rok
            Assert.AreEqual(await maturskiIspitService.IspunjavaUslovPolaganja(ucenici[5].Id), true);
        }