public void AssemblerCorrectlyReadsInventoryItemDto()
        {
            var eventAreaDto = new EventAreaDto() { EventName = Constants.EventAreas.POLE_VAULT };
            var poleVaulter = new AthleteDto() { Nickname = "poleVaulter", FirstName = "Pole", LastName = "Vaulter1", Gender = 'M', Status = "Current" };
            var modelDto = new ModelDto();
            var model = new Model();
            var inventoryItemDto = new InventoryItemDto()
                {
                    SerialNumber = 1,
                    ModelDto = modelDto,
                    SizeM = 9,
                    SizeW = 11,
                    Width = "N",
                    RequestName = "request1",
                    EventAreaAssignmentDto = eventAreaDto,
                    Status = "Requested",
                };
            var historyDto = new InventoryMovementDto() { EventType = new InventoryEventTypeDto() { EventType = Constants.InventoryEventTypes.ORDER } };

            inventoryItemDto.MovementHistory.Add(historyDto);

            _mockModelAssembler.Setup(x => x.ReadDto(modelDto)).Returns(model);
            _mockAthleteRepository.Setup(x => x.GetByNickname(It.IsAny<String>())).Returns(new Athlete());
            _mockInventoryRepository.Setup(x => x.GetBySerialNumber(inventoryItemDto.SerialNumber));
            _mockInventoryMovementAssembler.Setup(x => x.ReadDto(historyDto)).Returns(new InventoryMovement());
            _mockEventAreaAssembler.Setup(x => x.ReadDto(eventAreaDto)).Returns(new EventArea() { EventName = eventAreaDto.EventName });

            var inventoryItem = _assembler.ReadDto(inventoryItemDto);

            _mockInventoryRepository.VerifyAll();
            _mockModelAssembler.VerifyAll();
            _mockAthleteRepository.VerifyAll();
            _mockInventoryMovementAssembler.VerifyAll();
            _mockEventAreaAssembler.VerifyAll();
        }
        public void CanGetAllEventParticipants()
        {
            var poleVaulter = new AthleteDto() { Nickname = "poleVaulter", FirstName = "Pole", LastName = "Vaulter1", Gender = 'M', Status = "Current" };
            var poleVaultingSprinter = new AthleteDto() { Nickname = "poleVaulingSprinter", FirstName = "PoleVaulting", LastName = "Sprinter", Gender = 'F', Status = "Future" };
            var sprinter = new AthleteDto() { Nickname = "sprinter", FirstName = "Sprint", LastName = "er", Gender = 'M', Status = "Past" };
            var poleVault = new EventAreaDto() { EventName = "PoleVault" };
            var sprints = new EventAreaDto() { EventName = "Sprints" };
            var modelDto = new ModelDto() { ModelNumber = "1234", ModelName = "name", Type = "runner", Color = "white", Price = 105, IsDiscontinued = false };
            var shoe1 = new InventoryItemDto() { ModelDto = modelDto, SizeM = 9, SizeW = 11, Width = 'N', RequestName = "request1", Status = "Requested", StatusLastChanged = DateTime.Now };
            var shoe2 = new InventoryItemDto() { ModelDto = modelDto, SizeM = 9, SizeW = 11, Width = 'N', RequestName = "request1", Status = "Requested", StatusLastChanged = DateTime.Now };
            var shoe3 = new InventoryItemDto() { ModelDto = modelDto, SizeM = 9, SizeW = 11, Width = 'N', RequestName = "request1", Status = "Requested", StatusLastChanged = DateTime.Now };

            poleVaulter.EventParticipation.Add(poleVault);
            poleVaultingSprinter.EventParticipation.Add(poleVault);
            poleVaultingSprinter.EventParticipation.Add(sprints);
            sprinter.EventParticipation.Add(sprints);
            poleVaulter.Inventory.Add(shoe1);
            poleVaulter.Inventory.Add(shoe2);
            poleVaultingSprinter.Inventory.Add(shoe3);

            CoreAthleteService.SaveAthlete(poleVaulter);
            CoreAthleteService.SaveAthlete(poleVaultingSprinter);
            CoreAthleteService.SaveAthlete(sprinter);

            var poleVaultersList = CoreAthleteService.GetAllAthletesForEventArea("PoleVault");

            Assert.IsNotNull(poleVaultersList);
            Assert.AreEqual(2, poleVaultersList.Count);
            Assert.IsNotNull(poleVaultersList.ToList().First(x => x.Nickname == poleVaulter.Nickname));
            Assert.IsNotNull(poleVaultersList.ToList().First(x => x.Nickname == poleVaultingSprinter.Nickname));
            Assert.IsNull(poleVaultersList.ToList().FirstOrDefault(x => x.Nickname == sprinter.Nickname));
        }
        public void AssemblerCorrectlyReadsAthleteDto()
        {
            var athleteDto = new AthleteDto();
            athleteDto.Id = 123456;
            athleteDto.Nickname = "TestNickname";
            athleteDto.FirstName = "TestFirstName";
            athleteDto.LastName = "TestLastName";
            athleteDto.Gender = 'M';
            athleteDto.TrainerSizeM = 9.5;
            athleteDto.SpikeSizeM = 8.5;
            athleteDto.Notes = "Some test notes";
            athleteDto.Status = "Current";

            var eventAreaDto = new EventAreaDto();
            eventAreaDto.EventName = Constants.EventAreas.POLE_VAULT;
            eventAreaDto.IsParticipant = true;

            var modelDto = new ModelDto();
            modelDto.ModelNumber = "1234";
            modelDto.ModelName = "model name";
            modelDto.Type = "model type";
            modelDto.Price = 105.00;
            modelDto.Color = "white";
            modelDto.IsDiscontinued = false;

            var inventoryItemDto = new InventoryItemDto();
            inventoryItemDto.SerialNumber = 1;
            inventoryItemDto.ModelDto = modelDto;
            inventoryItemDto.SizeM = 9;
            inventoryItemDto.SizeW = 11;
            inventoryItemDto.Width = "N";
            inventoryItemDto.RequestName = "request1";
            inventoryItemDto.Status = "Requested";
            inventoryItemDto.StatusLastChanged = new DateTime(2012, 10, 31, 12, 0, 0);

            athleteDto.EventParticipation.Add(eventAreaDto);
            athleteDto.Inventory.Add(inventoryItemDto);

            _mockAthleteRepository.Setup(x => x.GetByNickname(athleteDto.Nickname));
            _mockEventAreaAssembler.Setup(x => x.ReadDto(eventAreaDto)).Returns(new EventArea());
            _mockInventoryItemAssembler.Setup(x => x.ReadDto(inventoryItemDto)).Returns(new InventoryItem());

            var athleteFromDb = _assembler.ReadDto(athleteDto);

            _mockAthleteRepository.VerifyAll();
            _mockEventAreaAssembler.VerifyAll();
            _mockInventoryItemAssembler.VerifyAll();
        }
        public ModelDto WriteDto(Model model)
        {
            if (model == null)
                throw new ArgumentNullException("model");

            var modelDto = new ModelDto();

            modelDto.ModelNumber = model.ModelNumber;
            modelDto.ModelName = model.ModelName;
            modelDto.Type = model.Type;
            modelDto.Price = model.Price;
            modelDto.Color = model.Color;
            modelDto.IsDiscontinued = model.IsDiscontinued;

            return modelDto;
        }
        public Model ReadDto(ModelDto modelDto)
        {
            if (modelDto == null)
                throw new ArgumentNullException("modelDto");

            var model = ObjectFactory.GetInstance<IModelRepository>().GetByModelNumber(modelDto.ModelNumber);

            if (model == null)
                model = new Model();

            model.ModelNumber = modelDto.ModelNumber;
            model.ModelName = modelDto.ModelName;
            model.Type = modelDto.Type;
            model.Price = modelDto.Price;
            model.Color = modelDto.Color;
            model.IsDiscontinued = modelDto.IsDiscontinued;

            return model;
        }
        public void AssemblerCorrectlyWritesInventoryItemDto()
        {
            var eventArea = new EventArea() { EventName = Constants.EventAreas.POLE_VAULT };
            var poleVaulter = new Athlete() { Nickname = "poleVaulter", FirstName = "Pole", LastName = "Vaulter1", Gender = 'M', Status = "Current" };
            var modelDto = new ModelDto();
            var inventoryItem = new InventoryItem()
                {
                    SerialNumber = 1,
                    Model = new Model(),
                    SizeM = 9,
                    SizeW = 11,
                    Width = "N",
                    RequestName = "request1",
                    Status = "Requested",
                    StatusLastChanged = new DateTime(2012, 10, 31, 12, 0, 0),
                    EventAreaAssignment = eventArea,
                    Athlete = poleVaulter
                };
            var movement = new InventoryMovement() { EventType = new InventoryEventType() { EventType = Constants.InventoryEventTypes.ORDER } };
            inventoryItem.MovementHistory.Add(movement);

            _mockModelAssembler.Setup(x => x.WriteDto(inventoryItem.Model)).Returns(modelDto);
            _mockInventoryMovementAssembler.Setup(x => x.WriteDto(movement));
            _mockEventAreaAssembler.Setup(x => x.WriteDto(eventArea)).Returns(new EventAreaDto() { EventName = eventArea.EventName });

            var inventoryItemDto = _assembler.WriteDto(inventoryItem);

            Assert.AreEqual(inventoryItem.SerialNumber, inventoryItemDto.SerialNumber);
            Assert.AreEqual(modelDto, inventoryItemDto.ModelDto);
            Assert.AreEqual(inventoryItem.SizeM, inventoryItemDto.SizeM);
            Assert.AreEqual(inventoryItem.SizeW, inventoryItemDto.SizeW);
            Assert.AreEqual(inventoryItem.Width, inventoryItemDto.Width);
            Assert.AreEqual(inventoryItem.RequestName, inventoryItemDto.RequestName);
            Assert.AreEqual(inventoryItem.Status, inventoryItemDto.Status);
            Assert.AreEqual(inventoryItem.StatusLastChanged, inventoryItemDto.StatusLastChanged);
            Assert.AreEqual(inventoryItem.EventAreaAssignment.EventName, inventoryItemDto.EventAreaAssignmentDto.EventName);
            Assert.AreEqual(1, inventoryItemDto.MovementHistory.Count);

            _mockModelAssembler.VerifyAll();
            _mockInventoryMovementAssembler.VerifyAll();
            _mockEventAreaAssembler.VerifyAll();
        }
        public void CanAddNewAthlete()
        {
            var athleteDto = new AthleteDto();
            athleteDto.Nickname = "sheredia";
            athleteDto.FirstName = "Sarah";
            athleteDto.LastName = "Heredia";
            athleteDto.Gender = 'F';
            athleteDto.TrainerSizeW = 9;
            athleteDto.SpikeSizeW = 9.5;
            athleteDto.Notes = "Some notes on Sarah";
            athleteDto.Status = "Current";

            var poleVault = new EventAreaDto() { EventName = "PoleVault" };
            var sprints = new EventAreaDto() { EventName = "Sprints" };
            var modelDto = new ModelDto() { ModelNumber = "1234", ModelName = "name", Type = "runner", Color = "white", Price = 105, IsDiscontinued = false };

            var shoe1 = new InventoryItemDto() { ModelDto = modelDto, SizeM = 9, SizeW = 11, Width = 'N', RequestName = "request1", Status = "Requested", Athlete = athleteDto, StatusLastChanged = DateTime.Now };
            var shoe2 = new InventoryItemDto() { ModelDto = modelDto, SizeM = 9, SizeW = 11, Width = 'N', RequestName = "request1", Status = "Requested", Athlete = athleteDto , StatusLastChanged = DateTime.Now };

            athleteDto.EventParticipation.Add(poleVault);
            athleteDto.EventParticipation.Add(sprints);
            athleteDto.Inventory.Add(shoe1);
            athleteDto.Inventory.Add(shoe2);

            CoreAthleteService.SaveAthlete(athleteDto);

            var fromDb = ObjectFactory.GetInstance<IAthleteRepository>().GetByNickname(athleteDto.Nickname);

            Assert.IsNotNull(fromDb);
            Assert.AreEqual(athleteDto.Nickname, fromDb.Nickname);
            Assert.AreEqual(athleteDto.FirstName, fromDb.FirstName);
            Assert.AreEqual(athleteDto.LastName, fromDb.LastName);
            Assert.AreEqual(athleteDto.Gender, fromDb.Gender);
            Assert.AreEqual(athleteDto.SpikeSizeW, fromDb.SpikeSizeW);
            Assert.AreEqual(athleteDto.Notes, fromDb.Notes);
            Assert.AreEqual(athleteDto.Status, fromDb.Status);
            Assert.AreEqual(athleteDto.EventParticipation.Count, fromDb.EventAreas.Count);
            Assert.AreEqual(athleteDto.Inventory.Count, fromDb.Inventory.Count);
        }
        public void ReadDto()
        {
            var modelDto = new ModelDto();

            modelDto.ModelNumber = "1234";
            modelDto.ModelName = "model name";
            modelDto.Type = "model type";
            modelDto.Price = 105.00;
            modelDto.Color = "white";
            modelDto.IsDiscontinued = false;

            var mockModelRepository = new Mock<IModelRepository>();
            ObjectFactory.Inject(typeof(IModelRepository), mockModelRepository.Object);

            var model = _assembler.ReadDto(modelDto);

            Assert.AreEqual(modelDto.ModelNumber, model.ModelNumber);
            Assert.AreEqual(modelDto.ModelName, model.ModelName);
            Assert.AreEqual(modelDto.Type, model.Type);
            Assert.AreEqual(modelDto.Price, model.Price);
            Assert.AreEqual(modelDto.Color, model.Color);
            Assert.AreEqual(modelDto.IsDiscontinued, model.IsDiscontinued);
        }
        public void SaveAthlete()
        {
            #region Setup objects
            var athleteDto = new AthleteDto();
            athleteDto.Nickname = "sheredia";
            athleteDto.FirstName = "Sarah";
            athleteDto.LastName = "Heredia";
            athleteDto.Gender = 'F';
            athleteDto.TrainerSizeW = 9;
            athleteDto.SpikeSizeW = 9.5;
            athleteDto.Notes = "Some notes on Sarah";
            athleteDto.Status = "Current";

            var eventAreaDto = new EventAreaDto();
            eventAreaDto.EventName = "Pole Vault";

            var modelDto = new ModelDto();
            modelDto.ModelNumber = "1234";
            modelDto.ModelName = "Model name";
            modelDto.Type = "Runner";
            modelDto.Color = "White";
            modelDto.Price = 105.00;
            modelDto.IsDiscontinued = false;

            var inventoryItemDto = new InventoryItemDto();
            inventoryItemDto.ModelDto = modelDto;
            inventoryItemDto.SizeM = 9;
            inventoryItemDto.SizeW = 11;
            inventoryItemDto.Width = "N";
            inventoryItemDto.RequestName = "request1";
            inventoryItemDto.Status = "Requested";
            //inventoryItemDto.AthleteDto = athleteDto;
            inventoryItemDto.StatusLastChanged = DateTime.Now;

            athleteDto.EventParticipation.Add(eventAreaDto);
            athleteDto.Inventory.Add(inventoryItemDto);

            var athlete = new Athlete();
            athlete.Nickname = "sheredia";
            athlete.FirstName = "Sarah";
            athlete.LastName = "Heredia";
            athlete.Gender = 'F';
            athlete.TrainerSizeW = 9;
            athlete.SpikeSizeW = 9.5;
            athlete.Notes = "Some notes on Sarah";
            athlete.Status = "Current";

            var eventArea = new EventArea();
            eventArea.EventName = "Pole Vault";

            var model = new Model();
            model.ModelNumber = "1234";
            model.ModelName = "Model name";
            model.Type = "Runner";
            model.Color = "White";
            model.Price = 105.00;
            model.IsDiscontinued = false;

            var inventoryItem = new InventoryItem();
            inventoryItem.Model = model;
            inventoryItem.SizeM = 9;
            inventoryItem.SizeW = 11;
            inventoryItem.Width = "N";
            inventoryItem.RequestName = "request1";
            inventoryItem.Status = "Requested";
            inventoryItem.Athlete = athlete;
            inventoryItem.StatusLastChanged = DateTime.Now;

            athlete.EventAreas.Add(eventArea);
            athlete.Inventory.Add(inventoryItem);
            #endregion

            _mockAthleteAssembler.Setup(x => x.ReadDto(athleteDto)).Returns(athlete);
            _mockAthleteRepository.Setup(x => x.Save(athlete));
            _mockAthleteAssembler.Setup(x => x.WriteDto(athlete)).Returns(new AthleteDto());

            AthleteService.SaveAthlete(athleteDto);

            _mockAthleteAssembler.VerifyAll();
            _mockAthleteRepository.VerifyAll();
        }
        public void SaveModel()
        {
            var modelDto = new ModelDto() { ModelNumber = "524951-007", ModelName = "Air Pegasus+ 29 (4E)", Type = "Running", Price = 100, Color = "Wolf Grey/Volt/Black", IsDiscontinued = false };

            modelDto = InventoryService.SaveModel(modelDto);

            var fromDb = ObjectFactory.GetInstance<IModelRepository>().GetByModelNumber(modelDto.ModelNumber);

            Assert.IsNotNull(fromDb);
            Assert.AreEqual(modelDto.ModelName, fromDb.ModelName);
        }
        public static ModelDto SaveModel(ModelDto modelDto)
        {
            var modelAssembler = ObjectFactory.GetInstance<IModelAssembler>();
            var modelRepository = ObjectFactory.GetInstance<IModelRepository>();

            var model = modelAssembler.ReadDto(modelDto);
            modelRepository.Save(model);

            return ObjectFactory.GetInstance<IModelAssembler>().WriteDto(model);
        }
        public void Setup()
        {
            //_athleteDto = new AthleteDto() { Nickname = "sheredia", FirstName = "Sarah", LastName = "Heredia", Gender = 'F', TrainerSizeW = 9, SpikeSizeW = 9.5, Notes = "Some notes on Sarah", Status = "Current" };
            _modelDto = new Model() { ModelNumber = "1234", ModelName = "Model name", Type = "Runner", Color = "White", Price = 105.00, IsDiscontinued = false };
            _inventoryItemDto = new InventoryItem() { Model = _modelDto, SizeM = 9, SizeW = 11, Width = 'N', RequestName = "request1", Status = Constants.Inventory.REQUESTED, StatusLastChanged = DateTime.Now };
            _inventoryItemRepository = ObjectFactory.GetInstance<InventoryItemRepository>();
            //_athleteDto.Inventory.Add(_inventoryItemDto);

            Bootstrapper.BootstrapStructureMap();
            ObjectFactory.GetInstance<IMySessionFactory>().ExportSchema();

            //CoreAthleteService.SaveAthlete(_athleteDto);
            _inventoryItemDto.SerialNumber = _inventoryItemRepository.Save(_inventoryItemDto);
        }
        public void SaveInventoryItem()
        {
            var model1 = new ModelDto() { ModelNumber = "524395-386", ModelName = "Air Pegasus+ 29 Trail", Type = "Running", Price = 105, Color = "Silver Sage/Team Red/University Red/Total Orange", IsDiscontinued = false };
            var inventoryItem1 = new InventoryItemDto() { ModelDto = model1, SizeM = 9, SizeW = 7, Width = 'N', RequestName = "request1", Status = Constants.Inventory.REQUESTED, StatusLastChanged = new DateTime(2012, 8, 18, 11, 26, 13) };

            inventoryItem1.SerialNumber = CoreInventoryService.SaveInventoryItem(inventoryItem1);

            var fromDb = _inventoryItemRepository.GetBySerialNumber(inventoryItem1.SerialNumber);

            Assert.IsNotNull(fromDb);
            Assert.AreEqual(inventoryItem1.SerialNumber, fromDb.SerialNumber);
        }
        public void Setup()
        {
            _mockInventoryItemAssembler = new Mock<IInventoryItemAssembler>();
            _mockAthleteAssembler = new Mock<IAthleteAssembler>();
            _mockModelAssembler = new Mock<IModelAssembler>();
            _mockInventoryItemRepository = new Mock<IInventoryItemRepository>();
            _mockInventoryMovementRepository = new Mock<IInventoryMovementRepository>();
            _mockModelRepository = new Mock<IModelRepository>();
            _inventoryItemDto = new InventoryItemDto() { ModelDto = new ModelDto() };
            _athleteDto = new AthleteDto();
            _modelDto = new ModelDto();
            _inventoryItem = new InventoryItem();
            _athlete = new Athlete();
            _model = new Model();

            ObjectFactory.Inject(typeof(IInventoryItemAssembler), _mockInventoryItemAssembler.Object);
            ObjectFactory.Inject(typeof(IAthleteAssembler), _mockAthleteAssembler.Object);
            ObjectFactory.Inject(typeof(IModelAssembler), _mockModelAssembler.Object);
            ObjectFactory.Inject(typeof(IInventoryItemRepository), _mockInventoryItemRepository.Object);
            ObjectFactory.Inject(typeof(IInventoryMovementRepository), _mockInventoryMovementRepository.Object);
            ObjectFactory.Inject(typeof(IModelRepository), _mockModelRepository.Object);

            _mockInventoryItemAssembler.Setup(x => x.ReadDto(_inventoryItemDto)).Returns(_inventoryItem);
        }
 public ModelDto SaveModel(ModelDto modelDto)
 {
     return InventoryService.SaveModel(modelDto);
 }