Beispiel #1
0
        public void DisableUnapprovedClaimToChangeCharacterTest()
        {
            _original  = new MockedProject();
            _generator = new MockedFieldDefaultValueGenerator();
            var mock  = new MockedProject();
            var claim = mock.CreateClaim(mock.Character, mock.Player);

            FieldSaveHelper.SaveCharacterFields(
                mock.Player.UserId,
                claim,
                new Dictionary <int, string>()
            {
                { mock.CharacterField.ProjectFieldId, "test" },
            },
                _generator);
            ShouldBeTestExtensions.ShouldBe(mock.Character.JsonData,
                                            _original.Character.JsonData,
                                            "Adding claim should not modify any character fields");
            mock.Character.Groups.Select(g => g.CharacterGroupId).ToList().ShouldBe(
                (IEnumerable <int>)_original.Character.Groups.Select(g => g.CharacterGroupId)
                .ToList(),
                "Adding claim should not modify any character groups");
            ShouldBeTestExtensions.ShouldBe(claim.JsonData,
                                            $"{{\"{mock.CharacterField.ProjectFieldId}\":\"test\"}}");
        }
Beispiel #2
0
        public void SaveOnAddTest()
        {
            _original  = new MockedProject();
            _generator = new MockedFieldDefaultValueGenerator();
            var mock  = new MockedProject();
            var claim = mock.CreateClaim(mock.Character, mock.Player);

            // ReSharper disable once MustUseReturnValue
            FieldSaveHelper.SaveCharacterFields(
                mock.Player.UserId,
                claim,
                new Dictionary <int, string>()
            {
                { mock.CharacterField.ProjectFieldId, "test" },
            },
                _generator);
            mock.Character.JsonData
            .ShouldBe(_original.Character.JsonData,
                      "Adding claim should not modify any character fields");

            mock.Character.Groups.Select(g => g.CharacterGroupId).ShouldBe(
                mock.Character.Groups.Select(g => g.CharacterGroupId),
                "Adding claim should not modify any character groups");

            claim.JsonData.ShouldBe($"{{\"{mock.CharacterField.ProjectFieldId}\":\"test\"}}");
        }
        public void TestRecepientVariables()
        {
            var mock     = new MockedProject();
            var users    = new[] { new RecepientData(mock.Player.GetDisplayName(), mock.Player.Email) };
            var expected = JObject.Parse("{" + string.Join(", ", users.Select(r => $"\"{r.Email}\":{{\"name\":\"{r.DisplayName}\"}}")) + "}");

            users.ToRecipientVariables().ShouldBe(expected);
        }
Beispiel #4
0
        public void TestRecepientVariables()
        {
            var mock     = new MockedProject();
            var users    = new[] { new MailRecipient(mock.Player) };
            var actual   = users.ToRecipientVariables();
            var expected = JObject.Parse("{" + string.Join(", ", users.Select(r => $"\"{r.User.Email}\":{{\"name\":\"{r.User.DisplayName}\"}}")) + "}");

            Assert.AreEqual(expected.ToString(), actual.ToString());
        }
Beispiel #5
0
        public void ShowPublicFieldToAnonEvenIfEditDisabled()
        {
            MockedProject.AssignFieldValues(Mock.Character, new FieldWithValue(Mock.PublicField, "1"));

            var vm          = new CustomFieldsViewModel(currentUserId: null, character: Mock.Character, disableEdit: true);
            var publicField = vm.FieldById(Mock.PublicField.ProjectFieldId);

            publicField.ShouldNotBeNull();
            publicField.CanView.ShouldBeTrue();
        }
Beispiel #6
0
        public void TryToChangeAnotherUserCharacter()
        {
            var mock = new MockedProject();

            FieldSaveHelper.SaveCharacterFields(
                mock.Player.UserId,
                mock.Character,
                new Dictionary <int, string>()
            {
                { mock.CharacterField.ProjectFieldId, "test" }
            });
        }
Beispiel #7
0
        public void TryToChangeMasterOnlyFieldOnAdd()
        {
            var mock = new MockedProject();

            FieldSaveHelper.SaveCharacterFields(
                mock.Player.UserId,
                mock.CreateClaim(mock.Character, mock.Player),
                new Dictionary <int, string>()
            {
                { mock.MasterOnlyField.ProjectFieldId, "test" }
            });
        }
Beispiel #8
0
        public void HiddenFieldChangeFailedTest()
        {
            var mock  = new MockedProject();
            var claim = mock.CreateClaim(mock.Group, mock.Player);

            FieldSaveHelper.SaveCharacterFields(
                mock.Player.UserId,
                claim,
                new Dictionary <int, string>()
            {
                { mock.HideForUnApprovedClaim.ProjectFieldId, "test" }
            });
        }
Beispiel #9
0
        public void ProperlyShowConditionalHeaderTest()
        {
            var mock  = new MockedProject();
            var claim = mock.CreateApprovedClaim(mock.Character, mock.Player);

            var vm             = new CustomFieldsViewModel(mock.Player.UserId, claim);
            var characterField = vm.FieldById(mock.ConditionalHeader.ProjectFieldId);

            Assert.IsNotNull(characterField);
            Assert.IsTrue(characterField.CanView);
            Assert.IsNull(characterField.Value);

            Assert.IsTrue(characterField.CanEdit);
        }
Beispiel #10
0
        public void MasterHiddenChangeTest()
        {
            var mock = new MockedProject();

            FieldSaveHelper.SaveCharacterFields(
                mock.Master.UserId,
                mock.Character,
                new Dictionary <int, string>()
            {
                { mock.HideForUnApprovedClaim.ProjectFieldId, "test" },
                { mock.CharacterField.ProjectFieldId, null }
            });
            Assert.AreEqual($"{{\"{mock.HideForUnApprovedClaim.ProjectFieldId}\":\"test\",\"{mock.PublicField.ProjectFieldId}\":\"Public\"}}", mock.Character.JsonData);
        }
Beispiel #11
0
        public void DoNotDiscloseOriginalFieldValuesOnAddTest()
        {
            var mock = new MockedProject();

            var vm = new CustomFieldsViewModel(mock.Player.UserId, (IClaimSource)mock.Character);

            var characterField = vm.Field(mock.CharacterField);

            characterField.ShouldNotBeNull();
            characterField.ShouldBeHidden();
            characterField.ShouldNotHaveValue();

            characterField.ShouldBeEditable();
        }
        public void DoNotDiscloseOriginalFieldValuesTest()
        {
            var mock  = new MockedProject();
            var claim = mock.CreateClaim(mock.Character, mock.Player);

            var vm = new CustomFieldsViewModel(mock.Player.UserId, claim);

            var characterField = vm.Field(mock.CharacterField);

            _ = characterField.ShouldNotBeNull();
            characterField.ShouldBeHidden();
            characterField.ShouldNotHaveValue();

            characterField.ShouldBeEditable();
        }
Beispiel #13
0
        public void DoNotDiscloseOriginalFieldValuesTest()
        {
            var mock  = new MockedProject();
            var claim = mock.CreateClaim(mock.Character, mock.Player);

            var vm = new CustomFieldsViewModel(mock.Player.UserId, claim);

            var characterField = vm.FieldById(mock.CharacterField.ProjectFieldId);

            Assert.IsNotNull(characterField);
            Assert.IsFalse(characterField.CanView);
            Assert.IsNull(characterField.Value);

            Assert.IsTrue(characterField.CanEdit);
        }
Beispiel #14
0
        public void TryToChangeAnotherUserCharacter()
        {
            _original  = new MockedProject();
            _generator = new MockedFieldDefaultValueGenerator();
            var mock = new MockedProject();

            _ = Should.Throw <NoAccessToProjectException>(() =>
                                                          FieldSaveHelper.SaveCharacterFields(
                                                              mock.Player.UserId,
                                                              mock.Character,
                                                              new Dictionary <int, string?>()
            {
                { mock.CharacterField.ProjectFieldId, "test" },
            },
                                                              _generator));
        }
        public void Initialize()
        {
            projectMock = new MockedProject();
            allFieldsExceptMasterOnly = new[]
            {
                projectMock.CharacterField,
                projectMock.PublicField,
                projectMock.HideForUnApprovedClaim,
                projectMock.ConditionalField,
                projectMock.ConditionalHeader
            };

            allFields = allFieldsExceptMasterOnly
                        .Union(new[] { projectMock.MasterOnlyField })
                        .ToArray();
        }
Beispiel #16
0
        public void TryToChangeMasterOnlyFieldOnAdd()
        {
            _original  = new MockedProject();
            _generator = new MockedFieldDefaultValueGenerator();
            var mock = new MockedProject();

            Should.Throw <NoAccessToProjectException>(() =>
                                                      FieldSaveHelper.SaveCharacterFields(
                                                          mock.Player.UserId,
                                                          mock.CreateClaim(mock.Character, mock.Player),
                                                          new Dictionary <int, string>()
            {
                { mock.MasterOnlyField.ProjectFieldId, "test" },
            },
                                                          _generator));
        }
Beispiel #17
0
        public void ConditionalFieldChangeTestForGroup()
        {
            var mock  = new MockedProject();
            var claim = mock.CreateClaim(mock.Group, mock.Player);

            FieldSaveHelper.SaveCharacterFields(
                mock.Player.UserId,
                claim,
                new Dictionary <int, string>()
            {
                { mock.ConditionalField.ProjectFieldId, "test" }
            });
            Assert.AreEqual($"{{\"{mock.ConditionalField.ProjectFieldId}\":\"test\"}}", claim.JsonData);
            Assert.AreEqual(_original.Character.JsonData, mock.Character.JsonData,
                            "Adding claim should not modify any character fields");
        }
Beispiel #18
0
        public void AllowShadowCharacterFieldsTest()
        {
            var mock  = new MockedProject();
            var claim = mock.CreateClaim(mock.Character, mock.Player);

            claim.JsonData = $"{{\"{mock.CharacterField.ProjectFieldId}\":\"test\"}}";

            var vm = new CustomFieldsViewModel(mock.Player.UserId, claim);

            var characterField = vm.FieldById(mock.CharacterField.ProjectFieldId);

            Assert.IsNotNull(characterField);
            Assert.IsFalse(characterField.CanView);
            Assert.AreEqual("test", characterField.Value);

            Assert.IsTrue(characterField.CanEdit);
        }
Beispiel #19
0
        public void AllowShadowCharacterFieldsTest()
        {
            var mock  = new MockedProject();
            var claim = mock.CreateClaim(mock.Character, mock.Player);

            MockedProject.AssignFieldValues(claim, new FieldWithValue(mock.CharacterField, "test"));

            var vm = new CustomFieldsViewModel(mock.Player.UserId, claim);

            var characterField = vm.FieldById(mock.CharacterField.ProjectFieldId);

            characterField.ShouldNotBeNull();
            characterField.ShouldBeHidden();
            characterField.Value.ShouldBe("test");

            characterField.ShouldBeEditable();
        }
Beispiel #20
0
        public void HiddenFieldChangeFailedTest()
        {
            _original  = new MockedProject();
            _generator = new MockedFieldDefaultValueGenerator();
            var mock  = new MockedProject();
            var claim = mock.CreateClaim(mock.Group, mock.Player);

            Should.Throw <NoAccessToProjectException>(() =>
                                                      FieldSaveHelper.SaveCharacterFields(
                                                          mock.Player.UserId,
                                                          claim,
                                                          new Dictionary <int, string>()
            {
                { mock.HideForUnApprovedClaim.ProjectFieldId, "test" },
            },
                                                          _generator));
        }
Beispiel #21
0
        public void ApprovedClaimChangeTest()
        {
            var mock  = new MockedProject();
            var claim = mock.CreateClaim(mock.Character, mock.Player);

            claim.ClaimStatus = Claim.Status.Approved;
            FieldSaveHelper.SaveCharacterFields(
                mock.Player.UserId,
                claim,
                new Dictionary <int, string>()
            {
                { mock.CharacterField.ProjectFieldId, "test" }
            });
            Assert.AreEqual(
                $"{{\"{mock.CharacterField.ProjectFieldId}\":\"test\",\"{mock.PublicField.ProjectFieldId}\":\"Public\"}}",
                mock.Character.JsonData);
            Assert.AreEqual("{}", claim.JsonData);
        }
        public void ApprovedClaimHiddenChangeTest()
        {
            var mock  = new MockedProject();
            var claim = mock.CreateApprovedClaim(mock.Character, mock.Player);

            FieldSaveHelper.SaveCharacterFields(
                mock.Player.UserId,
                claim,
                new Dictionary <int, string>()
            {
                { mock.HideForUnApprovedClaim.ProjectFieldId, "test" },
                { mock.CharacterField.ProjectFieldId, null }
            },
                generator);
            Assert.AreEqual(
                $"{{\"{mock.HideForUnApprovedClaim.ProjectFieldId}\":\"test\",\"{mock.PublicField.ProjectFieldId}\":\"Public\"}}",
                mock.Character.JsonData);
            Assert.AreEqual("{}", claim.JsonData);
        }
Beispiel #23
0
        public void DisableUnapprovedClaimToChangeCharacterTest()
        {
            var mock  = new MockedProject();
            var claim = mock.CreateClaim(mock.Character, mock.Player);

            FieldSaveHelper.SaveCharacterFields(
                mock.Player.UserId,
                claim,
                new Dictionary <int, string>()
            {
                { mock.CharacterField.ProjectFieldId, "test" }
            });
            Assert.AreEqual(_original.Character.JsonData, mock.Character.JsonData, "Adding claim should not modify any character fields");
            CollectionAssert.AreEqual(
                _original.Character.Groups.Select(g => g.CharacterGroupId).ToList(),
                mock.Character.Groups.Select(g => g.CharacterGroupId).ToList(),
                "Adding claim should not modify any character groups");
            Assert.AreEqual($"{{\"{mock.CharacterField.ProjectFieldId}\":\"test\"}}", claim.JsonData);
        }
Beispiel #24
0
        public void MasterHiddenChangeTest()
        {
            _original  = new MockedProject();
            _generator = new MockedFieldDefaultValueGenerator();
            var mock        = new MockedProject();
            var publicField = new FieldWithValue(mock.PublicField, "Public");

            MockedProject.AssignFieldValues(mock.Character, publicField);
            FieldSaveHelper.SaveCharacterFields(
                mock.Master.UserId,
                mock.Character,
                new Dictionary <int, string>()
            {
                { mock.HideForUnApprovedClaim.ProjectFieldId, "test" },
                { mock.CharacterField.ProjectFieldId, null },
            },
                _generator);

            mock.Character.FieldValuesShouldBe(new FieldWithValue(mock.HideForUnApprovedClaim, "test"), publicField);
        }
Beispiel #25
0
        public void ApprovedClaimChangeTest()
        {
            _original  = new MockedProject();
            _generator = new MockedFieldDefaultValueGenerator();
            var mock  = new MockedProject();
            var claim = mock.CreateApprovedClaim(mock.Character, mock.Player);

            FieldSaveHelper.SaveCharacterFields(
                mock.Player.UserId,
                claim,
                new Dictionary <int, string>()
            {
                { mock.CharacterField.ProjectFieldId, "test" },
            },
                _generator);

            mock.Character.FieldValuesShouldBe(new FieldWithValue(mock.CharacterField, "test"));

            ShouldBeTestExtensions.ShouldBe(claim.JsonData, "{}");
        }
        public void SaveOnAddTest()
        {
            var mock  = new MockedProject();
            var claim = mock.CreateClaim(mock.Character, mock.Player);

            // ReSharper disable once MustUseReturnValue
            FieldSaveHelper.SaveCharacterFields(
                mock.Player.UserId,
                claim,
                new Dictionary <int, string>()
            {
                { mock.CharacterField.ProjectFieldId, "test" }
            },
                generator);
            Assert.AreEqual(_original.Character.JsonData, mock.Character.JsonData, "Adding claim should not modify any character fields");
            CollectionAssert.AreEqual(
                _original.Character.Groups.Select(g => g.CharacterGroupId).ToList(),
                mock.Character.Groups.Select(g => g.CharacterGroupId).ToList(),
                "Adding claim should not modify any character groups");
            Assert.AreEqual($"{{\"{mock.CharacterField.ProjectFieldId}\":\"test\"}}", claim.JsonData);
        }
        public void TryToSkipMandatoryField()
        {
            _original  = new MockedProject();
            _generator = new MockedFieldDefaultValueGenerator();
            var mock = new MockedProject();

            mock.CharacterField.MandatoryStatus = MandatoryStatus.Required;

            var claim = mock.CreateApprovedClaim(mock.Character, mock.Player);

            var exception = Should.Throw <FieldRequiredException>(() =>
                                                                  FieldSaveHelper.SaveCharacterFields(
                                                                      mock.Player.UserId,
                                                                      claim,
                                                                      new Dictionary <int, string>()
            {
                { mock.CharacterField.ProjectFieldId, "" },
            },
                                                                      _generator));

            exception.FieldName.ShouldBe(mock.CharacterField.FieldName);
        }
Beispiel #28
0
        public void ConditionalFieldChangeTestForGroup()
        {
            _original  = new MockedProject();
            _generator = new MockedFieldDefaultValueGenerator();
            var mock             = new MockedProject();
            var claim            = mock.CreateClaim(mock.Group, mock.Player);
            var conditionalField = mock.CreateConditionalField();

            FieldSaveHelper.SaveCharacterFields(
                mock.Player.UserId,
                claim,
                new Dictionary <int, string>()
            {
                { conditionalField.ProjectFieldId, "test" },
            },
                _generator);
            ShouldBeTestExtensions.ShouldBe(claim.JsonData,
                                            $"{{\"{conditionalField.ProjectFieldId}\":\"test\"}}");
            ShouldBeTestExtensions.ShouldBe(mock.Character.JsonData,
                                            _original.Character.JsonData,
                                            "Adding claim should not modify any character fields");
        }
        public void SkipOptionalField()
        {
            _original  = new MockedProject();
            _generator = new MockedFieldDefaultValueGenerator();
            var mock = new MockedProject();

            mock.CharacterField.MandatoryStatus = MandatoryStatus.Optional;

            var claim = mock.CreateApprovedClaim(mock.Character, mock.Player);

            var exception = Should.NotThrow(() =>
                                            FieldSaveHelper.SaveCharacterFields(
                                                mock.Player.UserId,
                                                claim,
                                                new Dictionary <int, string>()
            {
                { mock.CharacterField.ProjectFieldId, "" },
            },
                                                _generator));

            mock.Character.JsonData.ShouldBe("{}");
        }
Beispiel #30
0
        public void ApprovedClaimHiddenChangeTest()
        {
            _original  = new MockedProject();
            _generator = new MockedFieldDefaultValueGenerator();
            var mock  = new MockedProject();
            var claim = mock.CreateApprovedClaim(mock.Character, mock.Player);

            var publicField = new FieldWithValue(mock.PublicField, "Public");

            MockedProject.AssignFieldValues(claim, publicField);

            _ = FieldSaveHelper.SaveCharacterFields(
                mock.Player.UserId,
                claim,
                new Dictionary <int, string?>()
            {
                { mock.HideForUnApprovedClaim.ProjectFieldId, "test" },
                { mock.CharacterField.ProjectFieldId, null },
            },
                _generator);

            mock.Character.FieldValuesShouldBe(new FieldWithValue(mock.HideForUnApprovedClaim, "test"), publicField);
            ShouldBeTestExtensions.ShouldBe(claim.JsonData, "{}");
        }