Esempio n. 1
0
        public async Task SetProfileAttribute(YobaProfileAttribute attribute,
                                              CancellationToken cancel = default)
        {
            using (var db = _factory.Create())
            {
                var count = await db.ProfileAttributes
                            .Where(x => x.ProfileId == attribute.ProfileId && x.AttributeId == attribute.AttributeId)
                            .Set(x => x.Value, _ => attribute.Value)
                            .UpdateAsync(cancel);

                if (count == 1)
                {
                    return;
                }
                if (count > 1)
                {
                    throw new InvalidOperationException("Conflict");
                }
                await db.ProfileAttributes.InsertAsync(() => new ProfileAttribute
                {
                    Value       = attribute.Value,
                    AttributeId = attribute.AttributeId,
                    ProfileId   = attribute.ProfileId,
                }, cancel);
            }
        }
Esempio n. 2
0
        public async Task Test()
        {
            //Attribute_ShouldBeCreated
            {
                await _dao.CreateAttribute(_attribute);

                var dst = await _dao.FindAttribute(_attribute.Name);

                dst.Id.Should().Be(_attribute.Id);
            }
            //Profile_ShouldBeCreated
            {
                await _dao.CreateProfile(_profile);

                var dst = await _dao.FindProfile(_profile.MainName);

                dst.Id.Should().Be(_profile.Id);
                dst.MainName.Should().Be(_profile.MainName);
                dst.Slivi.Should().Be(_profile.Slivi);
                dst.Loisy.Should().Be(_profile.Loisy);
                dst.Zashkvory.Should().Be(_profile.Zashkvory);
            }
            //Alias_ShouldBeAddedAndFound
            {
                const string alias = "foo";
                await _dao.AddAlias(_profile.Id, alias);

                var dst = await _dao.FindProfile(alias);

                dst.Names.Single().Should().Be(alias);
                dst.MainName.Should().Be(_profile.MainName);
                dst.Id.Should().Be(_profile.Id);
            }
            //Loisy_ShouldBeIncremented
            {
                await _dao.AddLois(_profile.Id);

                var dst = await _dao.FindProfile(_profile.MainName);

                dst.Loisy.Should().Be(_profile.Loisy + 1);
            }
            //Zashkvory_ShouldBeIncremented
            {
                await _dao.AddZashkvor(_profile.Id);

                var dst = await _dao.FindProfile(_profile.MainName);

                dst.Zashkvory.Should().Be(_profile.Zashkvory + 1);
            }
            //Slivi_ShouldBeIncremented
            {
                await _dao.AddSliv(_profile.Id);

                var dst = await _dao.FindProfile(_profile.MainName);

                dst.Slivi.Should().Be(_profile.Slivi + 1);
            }
            //AllProfiles_ShouldBeReturned
            {
                await _dao.CreateProfile(new YobaProfile
                {
                    Id = Guid.NewGuid(), MainName = "kekek"
                });

                var profiles = await _dao.GetProfiles();

                profiles.Count.Should().Be(2);
                profiles.Any(x => x.Id == _profile.Id).Should().Be(true);
            }
            //AllAttributes_ShouldBeReturned
            {
                await _dao.CreateAttribute(new YobaAttribute
                {
                    Id   = Guid.NewGuid(),
                    Name = "baz"
                });

                var attributes = await _dao.GetAttributes();

                attributes.Count.Should().Be(2);
                attributes.Any(x => x.Id == _attribute.Id).Should().Be(true);
            }
            //ProfileAttribute_ShouldBeCreatedAndListed
            {
                var profileAttribute = new YobaProfileAttribute
                {
                    AttributeId   = _attribute.Id,
                    AttributeName = _attribute.Name,
                    Value         = "peka",
                    ProfileId     = _profile.Id,
                    ProfileName   = _profile.MainName,
                };

                await _dao.SetProfileAttribute(profileAttribute);

                var dst = await _dao.FindProfile(_profile.MainName);

                dst.Attributes.Single().Value.Should().Be(profileAttribute.Value);
                var profileAttributes = await _dao.GetProfileAttributes(_attribute.Name);

                profileAttributes.Count.Should().Be(1);
                profileAttributes.Single().Value.Should().Be(profileAttribute.Value);
            }
        }