Example #1
0
            public void TestRetrieveQueryableDataFileAlreadyLoaded()
            {
                //Create the mock file loader
                Mock <IAnswerDataJsonFileLoader> mockFileLoader = CreateMockFileLoader();

                //Create an AnswerDB instance
                AnswerDB testAnswerDB = new AnswerDB(mockFileLoader.Object, TestDataFileName);

                //Retrieve the test data, which will be our expected data
                List <Answer> expectedAnswers = CreateTestData();

                //Retrieve the Querable from the DB
                IQueryable <Answer> answerQueryable = testAnswerDB.GetAnswerQueryable();

                //Verify that the file loader was called correctly
                mockFileLoader.Verify(mock => mock.LoadAnswerDataFromFile(
                                          It.Is <string>(fileName => fileName == TestDataFileName)), Times.Once);

                //That should have loaded the file to the DB. Retrieve the queryable again.
                answerQueryable = testAnswerDB.GetAnswerQueryable();

                //Verify that we actually got a queryable
                Assert.That(answerQueryable, Is.Not.Null);

                //Verify that the queryable returns the correct data
                List <Answer> actualAnswers = answerQueryable.ToList();

                expectedAnswers.Zip(actualAnswers, Tuple.Create)
                .ToList()
                .ForEach(answerTuple => DataComparers.CompareAnswers(answerTuple.Item1, answerTuple.Item2));

                //Verify that the file loader was not called again
                mockFileLoader.Verify(mock => mock.LoadAnswerDataFromFile(It.IsAny <string>()), Times.Once);
            }
            public void TestLoadingFileWithSingleRecord()
            {
                //Define the expected data
                List <Answer> expectedData = new List <Answer>()
                {
                    new Answer()
                    {
                        SubmittedAnswerId = 12345,
                        SubmitDateTime    = DateTime.Parse("2018-01-30T08:57:00.00"),
                        Correct           = 1,
                        Progress          = 0,
                        UserId            = 56789,
                        ExerciseId        = 23,
                        Difficulty        = "5",
                        Subject           = "Geschiedenis",
                        Domain            = "-",
                        LearningObjective = "Industrial Revolution"
                    }
                };

                //Create the JSON file loader
                IAnswerDataJsonFileLoader fileLoader = new AnswerDataJsonFileLoader();

                //Load the test file
                List <Answer> actualData = fileLoader.LoadAnswerDataFromFile(SingleAnswerFileName);

                //Compare the actual data to the expected data
                Assert.That(actualData.Count, Is.EqualTo(expectedData.Count));

                expectedData.Zip(actualData, Tuple.Create)
                .ToList()
                .ForEach(dataTuple => DataComparers.CompareAnswers(dataTuple.Item1, dataTuple.Item2));
            }