126 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Collections.Generic;
 | |
| using NUnit.Framework;
 | |
| using Unity.Multiplayer.Center.Common;
 | |
| using Unity.Multiplayer.Center.Questionnaire;
 | |
| using UnityEngine;
 | |
| 
 | |
| namespace Unity.MultiplayerCenterTests
 | |
| {
 | |
|     [TestFixture]
 | |
|     internal class UserChoicesMigrationTests
 | |
|     {
 | |
|         [OneTimeSetUp]
 | |
|         public void OneTimeSetup()
 | |
|         {
 | |
|             // Copy user choices to temp file to restore after tests.
 | |
|             UtilsForMultiplayerCenterTests.CopyUserChoicesToTempFile();
 | |
|         }
 | |
| 
 | |
|         [OneTimeTearDown]
 | |
|         public void OneTimeTearDown()
 | |
|         {
 | |
|             // Restore user choices after tests.
 | |
|             UtilsForMultiplayerCenterTests.RestoreUserChoicesFromTempFile();
 | |
|         }
 | |
|         
 | |
|         [Test]
 | |
|         public void TestMigration_Pre1_2To1_2_RemovesCompetitivenessButNothingElse()
 | |
|         {
 | |
|             var questionnaire = UtilsForRecommendationTests.GetProjectQuestionnaire();
 | |
|             questionnaire.Version = "1.2";
 | |
|             var userAnswers = new AnswerData()
 | |
|             {
 | |
|                 Answers = new List<AnsweredQuestion>()
 | |
|                 {
 | |
|                     new () { QuestionId = "CostSensitivity", Answers = new List<string>() {"BestMargin"}},
 | |
|                     new () { QuestionId = "Pace", Answers = new List<string>() {"Slow"}},
 | |
|                     new () { QuestionId = "Competitiveness", Answers = new List<string>() {"Competitive"}},
 | |
|                     new () { QuestionId = "PlayerCount", Answers = new List<string>() {"2"}}
 | |
|                 }
 | |
|             };
 | |
|             UserChoicesObject.instance.UserAnswers = userAnswers;
 | |
|             UserChoicesObject.instance.QuestionnaireVersion = null;
 | |
|             
 | |
|             var foundCompetitive = Logic.TryGetAnswerByQuestionId(userAnswers, "Competitiveness", out var answer);
 | |
|             Assert.True(foundCompetitive);
 | |
|             Assert.NotNull(answer);
 | |
|             
 | |
|             var errorsBefore = Logic.ValidateAnswers(questionnaire, UserChoicesObject.instance.UserAnswers);
 | |
|             Assert.IsNotEmpty(errorsBefore);
 | |
|             
 | |
|             Logic.MigrateUserChoices(questionnaire, UserChoicesObject.instance);
 | |
|             
 | |
|             var foundCompetitiveAfterMigration = Logic.TryGetAnswerByQuestionId(userAnswers, "Competitiveness", out var answerAfterMigration);
 | |
|             Assert.False(foundCompetitiveAfterMigration);
 | |
|             Assert.Null(answerAfterMigration);
 | |
|             
 | |
|             Assert.NotNull(UserChoicesObject.instance.QuestionnaireVersion);
 | |
|             
 | |
|             Assert.AreEqual(3,  UserChoicesObject.instance.UserAnswers.Answers.Count);
 | |
|             
 | |
|             var errors = Logic.ValidateAnswers(questionnaire, UserChoicesObject.instance.UserAnswers);
 | |
|             Assert.IsEmpty(errors);
 | |
|         }
 | |
|         
 | |
|         [Test]
 | |
|         public void TestMigration_1_2To1_3_ChangesMediumPaceToSlow()
 | |
|         {
 | |
|             var questionnaire = UtilsForRecommendationTests.GetProjectQuestionnaire();
 | |
|             questionnaire.Version = "1.3";
 | |
|             var userAnswers = new AnswerData()
 | |
|             {
 | |
|                 Answers = new List<AnsweredQuestion>()
 | |
|                 {
 | |
|                     new () { QuestionId = "CostSensitivity", Answers = new List<string>() {"BestMargin"}},
 | |
|                     new () { QuestionId = "Pace", Answers = new List<string>() {"Medium"}},
 | |
|                     new () { QuestionId = "PlayerCount", Answers = new List<string>() {"2"}}
 | |
|                 }
 | |
|             };
 | |
|             UserChoicesObject.instance.UserAnswers = userAnswers;
 | |
|             UserChoicesObject.instance.QuestionnaireVersion = "1.2";
 | |
|             
 | |
|             var foundPace = Logic.TryGetAnswerByQuestionId(userAnswers, "Pace", out var answer);
 | |
|             Assert.True(foundPace);
 | |
|             Assert.NotNull(answer);
 | |
|             
 | |
|             Logic.MigrateUserChoices(questionnaire, UserChoicesObject.instance);
 | |
|             
 | |
|             var foundPaceAfterMigration = Logic.TryGetAnswerByQuestionId(userAnswers, "Pace", out var answerAfterMigration);
 | |
|             Assert.True(foundPaceAfterMigration);
 | |
|             Assert.NotNull(answerAfterMigration);
 | |
|             Assert.AreEqual("Slow", answerAfterMigration.Answers[0]);
 | |
|             
 | |
|             var errors = Logic.ValidateAnswers(questionnaire, UserChoicesObject.instance.UserAnswers);
 | |
|             Assert.IsEmpty(errors);
 | |
|         }
 | |
|         
 | |
|         
 | |
|         [Test]
 | |
|         public void TestMigration_SameVersion_RemovesNothing()
 | |
|         {
 | |
|             var questionnaire = UtilsForRecommendationTests.GetProjectQuestionnaire();
 | |
|             var userAnswers = new AnswerData()
 | |
|             {
 | |
|                 Answers = new List<AnsweredQuestion>()
 | |
|                 {
 | |
|                     new () { QuestionId = "CostSensitivity", Answers = new List<string>() {"BestMargin"}},
 | |
|                     new () { QuestionId = "Pace", Answers = new List<string>() {"Slow"}},
 | |
|                     new () { QuestionId = "PlayerCount", Answers = new List<string>() {"2"}}
 | |
|                 }
 | |
|             };
 | |
|             UserChoicesObject.instance.UserAnswers = userAnswers;
 | |
|             UserChoicesObject.instance.QuestionnaireVersion = "1.3";
 | |
|             
 | |
|             Logic.MigrateUserChoices(questionnaire, UserChoicesObject.instance);
 | |
| 
 | |
|             Assert.AreEqual("1.3", UserChoicesObject.instance.QuestionnaireVersion);
 | |
|             
 | |
|             Assert.AreEqual(3,  UserChoicesObject.instance.UserAnswers.Answers.Count);
 | |
|             
 | |
|             var errors = Logic.ValidateAnswers(questionnaire, UserChoicesObject.instance.UserAnswers);
 | |
|             Assert.IsEmpty(errors);
 | |
|         }
 | |
|     }
 | |
| }
 |