public void Animals_can_be_persisted_and_retrieved()
        {
            //Arrange
            var sutProvider = new DataProvider <Animal>(_config, Animal.ToDomainConverter);
            var columns     = sutProvider.LoadAllColumns();

            var sutPersister = new AnimalPersister(columns, _config);
            var animalRecord = TestData.Animals.Chihuahua;

            //Act
            ErrorMessage error;
            var          persistResult = sutPersister.TryPersist(ref animalRecord, out error);

            //Assert
            Assert.IsTrue(persistResult);
            Assert.IsNull(error);

            //The new row id is assigned to ref of the object
            Assert.IsNotNull(animalRecord.AnimalId);
            Assert.IsInstanceOf <int>(animalRecord.AnimalId);

            var readResult = sutProvider.LoadAll().First();

            Assert.AreEqual(TestData.Animals.Chihuahua, readResult);
            Assert.AreEqual(animalRecord.AnimalId, readResult.AnimalId);
        }
예제 #2
0
 public GameDataRequestProcessor(AnimalPersister animalPersister, AnimalMetricPersister animalMetricPersister, MetricPersister metricPersister, MetricInteractionPersister metricInteractionPersister, InteractionPersister interactionPersister)
 {
     this._animalPersister            = animalPersister;
     this._animalMetricPersister      = animalMetricPersister;
     this._metricPersister            = metricPersister;
     this._metricInteractionPersister = metricInteractionPersister;
     this._interactionPersister       = interactionPersister;
 }
        private bool PersistAnimal(out ErrorMessage error, ref Animal persistedAnimal)
        {
            var provider  = new DataProvider <Animal>(_config, Animal.ToDomainConverter);
            var columns   = provider.LoadAllColumns();
            var persister = new AnimalPersister(columns, _config);

            return(persister.TryPersist(ref persistedAnimal, out error));
        }
예제 #4
0
        public static GameDataState Initialize(IConfiguration config, IRepository <Animal, AnimalMetric> animals,
                                               IRepository <Metric, MetricInteraction> metrics, IRepository <Interaction, MetricInteraction> interactions,
                                               ResponseBuilder responseBuilder)
        {
            //Persisters
            var animalPersister            = new AnimalPersister(animals.ColumnInfo, config);
            var animalMetricPersister      = new AnimalMetricPersister(animals.JoinTableColumnInfo, config);
            var metricPersister            = new MetricPersister(metrics.ColumnInfo, config);
            var metricInteractionPersister = new MetricInteractionPersister(metrics.JoinTableColumnInfo, config);
            var interactionPersister       = new InteractionPersister(interactions.ColumnInfo, config);

            //Validators - TODO
            var gameDataRequestValidator = new GameDataRequestValidator();

            var requestProcessor = new GameDataRequestProcessor(animalPersister, animalMetricPersister, metricPersister,
                                                                metricInteractionPersister, interactionPersister);

            return(new GameDataState(animals, metrics, interactions, requestProcessor, responseBuilder,
                                     gameDataRequestValidator));
        }