public void GeneratedIdIsConsistent()
        {
            var converter = new FakeSearchQueryConverter();
            var encoder   = new JobAlertIdEncoder(converter);
            var alert     = new JobAlert()
            {
                Email = "*****@*****.**", Query = new JobSearchQuery()
                {
                    Keywords = "test"
                }
            };

            var id1 = encoder.GenerateId(alert);
            var id2 = encoder.GenerateId(alert);

            Assert.AreEqual(id1, id2);
        }
        public void IdIsAddedToTheUrl()
        {
            var url       = new Uri("https://www.example.org");
            var converter = new FakeSearchQueryConverter();
            var encoder   = new JobAlertIdEncoder(converter);
            var id        = encoder.GenerateId(new JobAlert()
            {
                Email = "*****@*****.**", Query = new JobSearchQuery()
                {
                    Keywords = "test"
                }
            });

            var after = encoder.AddIdToUrl(url, id);

            Assert.IsTrue(after.ToString().Contains(id));
        }
        public void IdIsRemovedFromTheUrl()
        {
            var url       = new Uri("https://www.example.org");
            var converter = new FakeSearchQueryConverter();
            var encoder   = new JobAlertIdEncoder(converter);
            var id        = encoder.GenerateId(new JobAlert()
            {
                Email = "*****@*****.**", Query = new JobSearchQuery()
                {
                    Keywords = "test"
                }
            });
            var urlWithId = encoder.AddIdToUrl(url, id);

            var urlWithoutId = encoder.RemoveIdFromUrl(urlWithId);

            Assert.AreEqual(url, urlWithoutId);
        }
        public void GeneratedIdVariesByCriteria()
        {
            var converter = new FakeSearchQueryConverter();
            var encoder   = new JobAlertIdEncoder(converter);
            var alert1    = new JobAlert()
            {
                Email = "*****@*****.**", Query = new JobSearchQuery()
                {
                    Keywords = "test1"
                }
            };
            var alert2 = new JobAlert()
            {
                Email = "*****@*****.**", Query = new JobSearchQuery()
                {
                    Keywords = "test2"
                }
            };

            var id1 = encoder.GenerateId(alert1);
            var id2 = encoder.GenerateId(alert2);

            Assert.AreNotEqual(id1, id2);
        }