Exemple #1
0
        public void TestEqualsNull()
        {
            var edit = new MergeBlacklistEntry {
                ProjectId = ProjId
            };

            Assert.IsFalse(edit.Equals(null));
        }
        public void UpdateMergeBlacklistTest()
        {
            var entryA = new MergeBlacklistEntry
            {
                Id        = "A",
                ProjectId = ProjId,
                UserId    = UserId,
                WordIds   = new List <string> {
                    "1", "2", "3"
                }
            };
            var entryB = new MergeBlacklistEntry
            {
                Id        = "B",
                ProjectId = ProjId,
                UserId    = UserId,
                WordIds   = new List <string> {
                    "1", "4"
                }
            };

            _ = _mergeBlacklistRepo.Create(entryA);
            _ = _mergeBlacklistRepo.Create(entryB);

            var oldBlacklist = _mergeBlacklistRepo.GetAll(ProjId).Result;

            Assert.That(oldBlacklist, Has.Count.EqualTo(2));

            // Make sure all wordIds are in the frontier EXCEPT 1.
            var frontier = new List <Word>
            {
                new Word {
                    Id = "2", ProjectId = ProjId
                },
                new Word {
                    Id = "3", ProjectId = ProjId
                },
                new Word {
                    Id = "4", ProjectId = ProjId
                }
            };

            _ = _wordRepo.AddFrontier(frontier).Result;

            // All entries affected.
            var updatedEntriesCount = _mergeService.UpdateMergeBlacklist(ProjId).Result;

            Assert.That(updatedEntriesCount, Is.EqualTo(2));

            // The only blacklistEntry with at least two ids in the frontier is A.
            var newBlacklist = _mergeBlacklistRepo.GetAll(ProjId).Result;

            Assert.That(newBlacklist, Has.Count.EqualTo(1));
            Assert.AreEqual(newBlacklist.First().WordIds, new List <string> {
                "2", "3"
            });
        }
Exemple #3
0
        public Task <ResultOfUpdate> Update(MergeBlacklistEntry entry)
        {
            var foundEntry = _mergeBlacklist.Single(e => e.ProjectId == entry.ProjectId && e.Id == entry.Id);
            var success    = _mergeBlacklist.Remove(foundEntry);

            if (success)
            {
                _mergeBlacklist.Add(entry.Clone());
                return(Task.FromResult(ResultOfUpdate.Updated));
            }
            return(Task.FromResult(ResultOfUpdate.NotFound));
        }
Exemple #4
0
        public void TestClone()
        {
            var entryA = new MergeBlacklistEntry
            {
                Id        = EntryId,
                ProjectId = ProjId,
                UserId    = UserId,
                WordIds   = wordIds
            };
            var entryB = entryA.Clone();

            Assert.That(entryA.Equals(entryB));
        }
        public void AddMergeToBlacklistTest()
        {
            _ = _mergeBlacklistRepo.DeleteAll(ProjId).Result;
            var wordIds = new List <string> {
                "1", "2"
            };

            _ = _mergeService.AddToMergeBlacklist(ProjId, UserId, wordIds).Result;
            var blacklist = _mergeBlacklistRepo.GetAll(ProjId).Result;

            Assert.That(blacklist, Has.Count.EqualTo(1));
            var expectedEntry = new MergeBlacklistEntry {
                ProjectId = ProjId, UserId = UserId, WordIds = wordIds
            };

            Assert.That(expectedEntry.ContentEquals(blacklist.First()));
        }
Exemple #6
0
        public void TestEqualsFalse()
        {
            var entryA = new MergeBlacklistEntry();
            var entryB = new MergeBlacklistEntry();

            entryA.Id = EntryId;
            Assert.IsFalse(entryA.Equals(entryB));

            entryB           = entryA.Clone();
            entryA.ProjectId = ProjId;
            Assert.IsFalse(entryA.Equals(entryB));

            entryB        = entryA.Clone();
            entryA.UserId = UserId;
            Assert.IsFalse(entryA.Equals(entryB));

            entryB         = entryA.Clone();
            entryA.WordIds = wordIds;
            Assert.IsFalse(entryA.Equals(entryB));
        }
Exemple #7
0
        /// <summary> Updates specified <see cref="MergeBlacklistEntry"/>. </summary>
        /// <returns> A <see cref="ResultOfUpdate"/> enum: success of operation. </returns>
        public async Task <ResultOfUpdate> Update(MergeBlacklistEntry blacklistEntry)
        {
            var filter = Builders <MergeBlacklistEntry> .Filter.Eq(x => x.Id, blacklistEntry.Id);

            var updateDef = Builders <MergeBlacklistEntry> .Update
                            .Set(x => x.ProjectId, blacklistEntry.ProjectId)
                            .Set(x => x.UserId, blacklistEntry.UserId)
                            .Set(x => x.WordIds, blacklistEntry.WordIds);

            var updateResult = await _mergeBlacklistDatabase.MergeBlacklist.UpdateOneAsync(filter, updateDef);

            if (!updateResult.IsAcknowledged)
            {
                return(ResultOfUpdate.NotFound);
            }
            if (updateResult.ModifiedCount > 0)
            {
                return(ResultOfUpdate.Updated);
            }
            return(ResultOfUpdate.NoChange);
        }
Exemple #8
0
        /// <summary> Adds a List of wordIds to MergeBlacklist of specified <see cref="Project"/>. </summary>
        /// <exception cref="InvalidBlacklistEntryError"> Throws when wordIds has count less than 2. </exception>
        /// <returns> The <see cref="MergeBlacklistEntry"/> created. </returns>
        public async Task <MergeBlacklistEntry> AddToMergeBlacklist(
            string projectId, string userId, List <string> wordIds)
        {
            if (wordIds.Count < 2)
            {
                throw new InvalidBlacklistEntryError("Cannot blacklist a list of fewer than 2 wordIds.");
            }
            // When we switch from individual to common blacklist, the userId argument here should be removed.
            var blacklist = await _mergeBlacklistRepo.GetAll(projectId, userId);

            foreach (var entry in blacklist)
            {
                if (entry.WordIds.All(wordIds.Contains))
                {
                    await _mergeBlacklistRepo.Delete(projectId, entry.Id);
                }
            }
            var newEntry = new MergeBlacklistEntry {
                ProjectId = projectId, UserId = userId, WordIds = wordIds
            };

            return(await _mergeBlacklistRepo.Create(newEntry));
        }
Exemple #9
0
 public Task <MergeBlacklistEntry> Create(MergeBlacklistEntry entry)
 {
     entry.Id = Guid.NewGuid().ToString();
     _mergeBlacklist.Add(entry.Clone());
     return(Task.FromResult(entry.Clone()));
 }
Exemple #10
0
        /// <summary> Adds a <see cref="MergeBlacklistEntry"/>. </summary>
        /// <returns> The MergeBlacklistEntry created. </returns>
        public async Task <MergeBlacklistEntry> Create(MergeBlacklistEntry blacklistEntry)
        {
            await _mergeBlacklistDatabase.MergeBlacklist.InsertOneAsync(blacklistEntry);

            return(blacklistEntry);
        }