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

            var sutPersister = new MetricInteractionPersister(columns, _config);

            var metric      = TestData.AnimalMetrics.Confidence;
            var interaction = TestData.Interactions.TakeSelfieWithPet;

            ErrorMessage error;

            if (!PersistMetric(out error, ref metric))
            {
                Assert.Fail(error.Message);
            }

            if (!PersistInteraction(out error, ref interaction))
            {
                Assert.Fail(error.Message);
            }

            //Act
            var metricInteraction = new MetricInteraction(metric.MetricId, interaction.InteractionId);
            var persistResult     = sutPersister.TryPersist(ref metricInteraction, out error);

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

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

            Assert.AreEqual(metricInteraction, readResult);
        }
예제 #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;
 }
예제 #3
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));
        }