public async Task ReceiveMessageShouldGetContactFromContacts()
        {
            // Arrange
            var message  = Dummy.CreateMessage();
            var identity = message.From.ToIdentity();
            var contact  = Dummy.CreateContact();

            contact.Identity = identity;
            ContactExtension
            .GetAsync(identity, Arg.Any <CancellationToken>())
            .Returns(contact);

            var target = GetTarget();

            // Act
            await target.ReceiveAsync(message, CancellationToken);

            // Assert
            target.ReceivedItems.Count.ShouldBe(1);
            target.ReceivedItems[0].message.ShouldBe(message);
            var actualContact = target.ReceivedItems[0].contact;

            actualContact.ShouldNotBeNull();
            foreach (var property in typeof(Contact).GetProperties())
            {
                property
                .GetValue(actualContact)
                .ShouldBe(
                    property.GetValue(contact));
            }
        }
Exemple #2
0
        public async Task GetNameTwiceWhenContactExistsShouldUseCachedValue()
        {
            // Arrange
            using (OwnerContext.Create(Application.Identity))
            {
                Configuration.ContactCacheEnabled.Returns(true);
                Configuration.ContactCacheExpiration.Returns(TimeSpan.FromMinutes(5));
                var target = GetTarget();

                // Act
                var actualName = await target.GetVariableAsync("name", Context, CancellationToken);

                var actualAddress = await target.GetVariableAsync("address", Context, CancellationToken);

                // Asset
                actualName.ShouldBe(Contact.Name);
                actualAddress.ShouldBe(Contact.Address);
                ContactExtension.Received(1).GetAsync(Arg.Any <Identity>(), Arg.Any <CancellationToken>());

                var cachedContact =
                    await OwnerCallerContactMap.GetValueOrDefaultAsync(OwnerCaller.Create(Application.Identity,
                                                                                          Contact.Identity));

                cachedContact.ShouldNotBeNull();
            }
        }
Exemple #3
0
        public ContactVariableProviderTests()
        {
            ContactExtension    = Substitute.For <IContactExtension>();
            Context             = Substitute.For <IContext>();
            Logger              = Substitute.For <ILogger>();
            Configuration       = Substitute.For <IConfiguration>();
            ApplicationSettings = Substitute.For <Application>();
            var cacheOwnerCallerContactMap = new CacheOwnerCallerContactMap();

            CacheContactExtensionDecorator = new CacheContactExtensionDecorator(ContactExtension, cacheOwnerCallerContactMap, Logger, Configuration, ApplicationSettings);
            InputContext = new Dictionary <string, object>();
            Context.InputContext.Returns(InputContext);
            Contact = new Contact()
            {
                Identity = "*****@*****.**",
                Name     = "John Doe",
                Address  = "184 Alpha Avenue"
            };
            ContactExtension.GetAsync(Contact.Identity, CancellationToken).Returns(Contact);
            Context.UserIdentity.Returns(Contact.Identity);
            Context.OwnerIdentity.Returns(new Identity("application", "domain.com"));
            Configuration.ContactCacheExpiration.Returns(TimeSpan.FromMinutes(5));
            ApplicationSettings.Identifier = "application";
            ApplicationSettings.Domain     = "domain.com";
        }
        public async Task ReceiveMessageTwiceShouldGetContactFromContactsTwiceWhenCaseExpires()
        {
            // Arrange
            CacheLocally = true;
            var message  = Dummy.CreateMessage();
            var identity = message.From.ToIdentity();
            var contact  = Dummy.CreateContact();

            contact.Identity = identity;
            ContactExtension
            .GetAsync(identity, Arg.Any <CancellationToken>())
            .Returns(contact);

            var target = GetTarget();

            // Act
            await target.ReceiveAsync(message, CancellationToken);

            await Task.Delay(CacheExpiration + CacheExpiration);

            await target.ReceiveAsync(message, CancellationToken);

            // Assert

            ContactExtension.Received(2).GetAsync(identity, CancellationToken);
        }
Exemple #5
0
 public StatisticsViewModel()
 {
     Columns          = new ObservableCollection <string>();
     SelectedColumns  = new ObservableCollection <string>(ContactExtension.GetContactsColumnNames(new Contact()));
     ColumnsScore     = new ObservableCollection <ColumnScore>();
     FilteredContacts = new ObservableCollection <Contact>();
 }
Exemple #6
0
        private void ThreadProc()
        {
            // Get DataTable from cache of contacts
            DataTable table = ContactExtension.GetDataTableFromContacts();

            Deduplication dedup = new Deduplication(new ProgressNotifyDelegate(OnProgress));
            // Build columns list for deduplication
            List <Column> columns = new List <Column>(table.Columns.Count);

            Column column;

            for (int i = 0; i < table.Columns.Count; i++)
            {
                column          = new Column(table.Columns[i].ColumnName);
                column.SearchIn = SelectedColumns.Contains(column.Name);
                columns.Add(column);
            }

            // Search duplicates
            DedupTable = dedup.SearchDuplicates(table, columns, null, SeacrhQuality.Normal,
                                                _thresholdLevel, ReturnResults.DuplicatesOnly);

            TotalDuplicates = "Total Duplicates: " + _dedupTable.Rows.Count;

            ProgressBarVisibility = Visibility.Collapsed;
        }
        /// <summary>
        /// Gets the Bot's Contact using the <paramref name="identity"/> param
        /// </summary>
        /// <param name="identity"></param>
        /// <param name="cancellationToken"></param>
        /// <returns></returns>
        public async Task <Contact> GetAsync(Identity identity, CancellationToken cancellationToken)
        {
            var contactExtension = new ContactExtension(_sender);
            var contact          = await contactExtension.GetAsync(identity, cancellationToken);

            return(contact);
        }
Exemple #8
0
        public async Task GetNameWhenContactDoesNotExistsShouldReturnNull()
        {
            // Arrange
            var target = GetTarget();

            Contact nullContact = null;

            ContactExtension.GetAsync(Arg.Any <Identity>(), Arg.Any <CancellationToken>()).Returns(nullContact);

            // Act
            var actual = await target.GetVariableAsync("name", Context, CancellationToken);

            // Asset
            actual.ShouldBeNull();
        }
Exemple #9
0
        public async Task GetNameTwiceWhenContactExistsShouldUseCachedValue()
        {
            // Arrange
            var target = GetTarget();

            // Act
            var actualName = await target.GetVariableAsync("name", Context, CancellationToken);

            var actualADdress = await target.GetVariableAsync("address", Context, CancellationToken);

            // Asset
            actualName.ShouldBe(Contact.Name);
            actualADdress.ShouldBe(Contact.Address);
            ContactExtension.Received(1).GetAsync(Arg.Any <Identity>(), Arg.Any <CancellationToken>());
        }
        public async Task GetInvalidContactVariableShouldReturnNull()
        {
            // Arrange
            var contact = new Contact
            {
                Name = "John da Silva"
            };

            ContactExtension.GetAsync(User, CancellationToken).Returns(contact);
            var target = GetTarget();

            // Act
            var actual = await target.GetVariableAsync("contact.invalid", CancellationToken);

            // Assert
            actual.ShouldBeNull();
        }
        public async Task GetContactExtrasVariableShouldSucceed()
        {
            // Arrange
            var contact = new Contact
            {
                Name   = "John da Silva",
                Extras = new Dictionary <string, string>()
                {
                    { "property1", "value 1" }
                }
            };

            ContactExtension.GetAsync(User, CancellationToken).Returns(contact);
            var target = GetTarget();

            // Act
            var actual = await target.GetVariableAsync("contact.extras.property1", CancellationToken);

            // Assert
            actual.ShouldBe(contact.Extras["property1"]);
        }
Exemple #12
0
 public ContactVariableProviderTests()
 {
     ContactExtension = Substitute.For <IContactExtension>();
     Logger           = Substitute.For <ILogger>();
     Configuration    = Substitute.For <IConfiguration>();
     Application      = Substitute.For <Application>();
     InputContext     = new Dictionary <string, object>();
     Context.InputContext.Returns(InputContext);
     Contact = new Contact()
     {
         Identity = "*****@*****.**",
         Name     = "John Doe",
         Address  = "184 Alpha Avenue"
     };
     ContactExtension.GetAsync(Contact.Identity, CancellationToken).Returns(Contact);
     Context.UserIdentity.Returns(Contact.Identity);
     Context.OwnerIdentity.Returns(new Identity("application", "domain.com"));
     Application.Identifier = "application";
     Application.Domain     = "domain.com";
     DocumentSerializer     = new DocumentSerializer(new DocumentTypeResolver());
 }
Exemple #13
0
 public CaseConversionViewModel()
 {
     Columns = new ObservableCollection <string>(
         ContactExtension.GetContactsColumnNames(new Contact()));
 }
Exemple #14
0
 public DeduplicationViewModel()
 {
     Columns         = new ObservableCollection <string>();
     SelectedColumns = new ObservableCollection <string>(ContactExtension.GetContactsColumnNames(new Contact()));
 }
 /// <summary>
 /// Deletes a contact from the bot's agenda
 /// </summary>
 /// <param name="identity"></param>
 /// <param name="cancellationToken"></param>
 /// <returns></returns>
 public async Task DeleteAsync(Identity identity, CancellationToken cancellationToken)
 {
     var contactExtension = new ContactExtension(_sender);
     await contactExtension.DeleteAsync(identity, cancellationToken);
 }