public void CanViewOtherPlayersPackages()
        {
            SubmitCustomSpecialistResponse response    = submitCustomSpecialist("MyCustomSpecialist");
            SubmitCustomSpecialistResponse responseTwo = submitCustomSpecialist("SecondCustomSpec");

            CreateSpecialistPackageResponse playerOnePackage = client.CreateSpecialistPackage(
                new CreateSpecialistPackageRequest()
            {
                SpecialistPackage = new SpecialistPackage()
                {
                    PackageName   = "PlayerOnePackage",
                    SpecialistIds = { response.SpecialistConfigurationId },
                }
            });

            authHelper.loginToAccount("userTwo");

            CreateSpecialistPackageResponse playerTwoPackage = client.CreateSpecialistPackage(
                new CreateSpecialistPackageRequest()
            {
                SpecialistPackage = new SpecialistPackage()
                {
                    PackageName   = "PlayerTwoPackage",
                    SpecialistIds = { responseTwo.SpecialistConfigurationId },
                }
            });

            GetSpecialistPackagesResponse specialistPackagesResponse = client.GetSpecialistPackages(new GetSpecialistPackagesRequest());

            Assert.True(specialistPackagesResponse.SpecialistPackages.Count == 2);
            Assert.True(specialistPackagesResponse.SpecialistPackages.Count(it => it.Id == playerTwoPackage.SpecialistPackageId) == 1);
            Assert.True(specialistPackagesResponse.SpecialistPackages.Count(it => it.Id == playerOnePackage.SpecialistPackageId) == 1);
        }
        public void CanAddASpecialistPackageToAPackage()
        {
            SubmitCustomSpecialistResponse response    = submitCustomSpecialist("MyCustomSpecialist");
            SubmitCustomSpecialistResponse responseTwo = submitCustomSpecialist("SecondCustomSpec");

            CreateSpecialistPackageResponse packageResponse = client.CreateSpecialistPackage(
                new CreateSpecialistPackageRequest()
            {
                SpecialistPackage = new SpecialistPackage()
                {
                    PackageName   = "myPackage",
                    SpecialistIds = { response.SpecialistConfigurationId },
                }
            });

            CreateSpecialistPackageResponse packageInPackageResponse = client.CreateSpecialistPackage(
                new CreateSpecialistPackageRequest()
            {
                SpecialistPackage = new SpecialistPackage()
                {
                    PackageName          = "myPackage In A Package",
                    SpecialistIds        = { responseTwo.SpecialistConfigurationId },
                    SpecialistPackageIds = { packageResponse.SpecialistPackageId }
                }
            });

            GetPlayerSpecialistPackagesResponse playerPackages = client.GetPlayerSpecialistPackages(new GetPlayerSpecialistPackagesRequest()
            {
                PlayerId = authHelper.getAccountId("userOne")
            });

            Assert.True(playerPackages.PlayerPackages.Count == 2);
            Assert.True(playerPackages.PlayerPackages.Count(it => it.Id == packageInPackageResponse.SpecialistPackageId) == 1);
            Assert.True(playerPackages.PlayerPackages.Count(it => it.Id == packageResponse.SpecialistPackageId) == 1);
        }
        public void CanAddMultipleSpecialistsToAPackage()
        {
            SubmitCustomSpecialistResponse response    = submitCustomSpecialist("MyCustomSpecialist");
            SubmitCustomSpecialistResponse responseTwo = submitCustomSpecialist("SecondCustomSpec");

            CreateSpecialistPackageResponse packageResponse = client.CreateSpecialistPackage(
                new CreateSpecialistPackageRequest()
            {
                SpecialistPackage = new SpecialistPackage()
                {
                    PackageName   = "myPackage",
                    SpecialistIds = { response.SpecialistConfigurationId, responseTwo.SpecialistConfigurationId },
                }
            });

            Assert.IsTrue(packageResponse.Status.IsSuccess);
            Assert.NotNull(packageResponse.SpecialistPackageId);

            GetPlayerSpecialistPackagesResponse playerPackages = client.GetPlayerSpecialistPackages(new GetPlayerSpecialistPackagesRequest()
            {
                PlayerId = authHelper.getAccountId("userOne")
            });

            Assert.True(playerPackages.PlayerPackages.Count == 1);
            Assert.True(playerPackages.PlayerPackages[0].Creator.Username == "userOne");
            Assert.True(playerPackages.PlayerPackages[0].SpecialistIds.Count == 2);
            Assert.True(playerPackages.PlayerPackages[0].SpecialistIds.Count(it => it == response.SpecialistConfigurationId) == 1);
            Assert.True(playerPackages.PlayerPackages[0].SpecialistIds.Count(it => it == responseTwo.SpecialistConfigurationId) == 1);
        }
        public void PlayerCanCreateACustomSpecialist()
        {
            SubmitCustomSpecialistRequest request = createSpecialistRequest("MyCustomSpecialist");

            SubmitCustomSpecialistResponse response = client.SubmitCustomSpecialist(request);

            Assert.IsTrue(response.Status.IsSuccess);
            Assert.NotNull(response.SpecialistConfigurationId);
        }
        public void PlayerCanViewCustomSpecialistAfterCreating()
        {
            String specName = "MyCustomSpecialist";
            SubmitCustomSpecialistResponse response = submitCustomSpecialist(specName);

            string specUuid = response.SpecialistConfigurationId;

            GetCustomSpecialistsResponse specResponse = client.GetCustomSpecialists(new GetCustomSpecialistsRequest());

            Assert.IsTrue(specResponse.CustomSpecialists.Count == 1);
            Assert.AreEqual(specUuid, specResponse.CustomSpecialists[0].Id);
            Assert.AreEqual(specName, specResponse.CustomSpecialists[0].SpecialistName);
            Assert.AreEqual(1, specResponse.CustomSpecialists[0].Priority);
            Assert.AreEqual(EffectModifier.Driller, specResponse.CustomSpecialists[0].SpecialistEffects[0].EffectModifier);
            // Ensure some of the specialist details are the same!
        }
        public void CanCreateASpecialistPackage()
        {
            SubmitCustomSpecialistResponse response = submitCustomSpecialist("MyCustomSpecialist");

            CreateSpecialistPackageResponse packageResponse = client.CreateSpecialistPackage(
                new CreateSpecialistPackageRequest()
            {
                SpecialistPackage = new SpecialistPackage()
                {
                    PackageName   = "myPackage",
                    SpecialistIds = { response.SpecialistConfigurationId },
                }
            });

            Assert.IsTrue(packageResponse.Status.IsSuccess);
            Assert.NotNull(packageResponse.SpecialistPackageId);
        }