Exemple #1
0
        public async void CitizenAbilityModifiedProduction()
        {
            var testId         = "Test_CitizenAbilityModifiedProduction";
            var contractReward = new Reward()
            {
                Resources = new List <int> {
                    0, 0, 111
                }
            };
            var contractProductionTime = TimeSpan.FromSeconds(10);

            // Create test contract meta if it doesn't exist.
            var contractMeta = await new ContractMeta(testId).LoadAsync();

            if (contractMeta == null)
            {
                contractMeta = new ContractMeta(testId);
                contractMeta.Rewards.Add(contractReward);
                contractMeta.ProductionTime = contractProductionTime;
                await contractMeta.InsertAsync();
            }

            // Create test building meta if it doesn't exist.
            var buildingMeta = await new BuildingMeta(testId).LoadAsync();

            if (buildingMeta == null)
            {
                buildingMeta = new BuildingMeta(testId);
                buildingMeta.StorageLimit = 1000;
                await buildingMeta.InsertAsync();
            }

            // Create test citizen ability meta if it doesn't exist.
            var abilityMeta = await new CitizenAbilityMeta(testId).LoadAsync();

            if (abilityMeta == null)
            {
                abilityMeta = new CitizenAbilityMeta(testId);
                abilityMeta.ReduceTaskDuration = new List <TimeSpan> {
                    TimeSpan.FromSeconds(9)
                };
                await abilityMeta.InsertAsync();
            }

            // Create test player, building and citizen.
            var building = new Building(testId);

            building.IsConstructed  = true;
            building.ProductionTask = new ProductionTask(contractMeta);
            var player = await Helpers.CreateTestPlayer(testId, building : building);

            var citizen = new Citizen();

            citizen.Abilities.Add(new CitizenAbility(testId));
            player.Citizens.Add(citizen);
            building.AssignedCitizenIds.Add(citizen.Id);
            await player.ReplaceAsync();

            // Wait for contract to complete (contractProductionTime - ReduceTaskDuration + .5f).
            Thread.Sleep(TimeSpan.FromSeconds(1.5f));

            // Auth player.
            var sessionToken = Helpers.GetSessionToken(testId);

            // Mock data.
            var data = JToken.Parse($@"{{
                'PlayerId':'{testId}',
                'SessionToken':'{sessionToken}',
                'BuildingId':'{building.Id}'
            }}");

            // Execute controller.
            var controller    = new CheckProductionController();
            var responseToken = await controller.HandleHttpRequestAsync(data);

            // Assert controller response status is OK.
            Assert.Equal(responseToken["Status"], JStatus.Ok.JToken["Status"]);

            // Test reward collection.
            var collectController    = new CollectProductionRewardsController();
            var collectResponseToken = await collectController.HandleHttpRequestAsync(data);

            Assert.Equal(collectResponseToken["Status"], JStatus.Ok.JToken["Status"]);

            // Make sure reward is added.
            player = await player.LoadAsync();

            Assert.True(player.Resources[2] > 0);
        }
Exemple #2
0
        public async void RandomCitizenGenerated()
        {
            var testId = "Test_RandomCitizenGenerated";

            // Create test rarity group meta if it doesn't exist.
            var rarityGroup = await new RarenessGroup(testId).LoadAsync();

            if (rarityGroup == null)
            {
                rarityGroup = new RarenessGroup(testId);
                rarityGroup.AbilityLimit      = 1;
                rarityGroup.AbilityMaxLevel   = 5;
                rarityGroup.ProbabilityWeight = 50;
                await rarityGroup.InsertAsync();
            }

            // Create test appearance meta if it doesn't exist.
            var appearance = await new AppearanceElementMeta(testId).LoadAsync();

            if (appearance == null)
            {
                appearance = new AppearanceElementMeta(testId);
                appearance.AppearanceGroup = AppearanceGroup.Face;
                await appearance.InsertAsync();
            }

            // Create test citizen ability meta if it doesn't exist.
            var abilityMeta = await new CitizenAbilityMeta(testId).LoadAsync();

            if (abilityMeta == null)
            {
                abilityMeta = new CitizenAbilityMeta(testId);
                abilityMeta.ProbabilityWeight = 50;
                abilityMeta.ExpToLevelUp      = new List <int>()
                {
                    10, 30, 80
                };
                await abilityMeta.InsertAsync();
            }

            // Create test player.
            var player = await Helpers.CreateTestPlayer(testId);

            // Auth player.
            var sessionToken = Helpers.GetSessionToken(testId);

            // Mock data.
            var data = JToken.Parse($@"{{
                'PlayerId':'{testId}',
                 {Helpers.JsonServerCredentials}
            }}");

            // Execute controller.
            var controller    = new AddRandomCitizenController();
            var responseToken = await controller.HandleHttpRequestAsync(data);

            // Assert controller response status is OK.
            Assert.Equal(responseToken["Status"], JStatus.Ok.JToken["Status"]);

            // Assert citizen is generated and added.
            player = await new Player(testId).LoadAsync();
            Assert.True(player.Citizens.Count > 0);
            Assert.True(player.Citizens[0].RarenessGroupId == testId);
            Assert.True(player.Citizens[0].Appearance[0].MetaId == testId);
        }