Пример #1
0
        public void Adding_new_contact_works()
        {
            var firstname         = NonEmptyStringOO.CreateBang("Homer");
            var lastname          = NonEmptyStringOO.CreateBang("Simpson");
            var id                = Guid.NewGuid();
            var dob               = Some(new DateTime(1956, 5, 12));
            var twitterProfileUrl = NonEmptyStringOO.Create("https://twitter.com/homerjsimpson");
            var address           = None;

            var contact = new ContactOO(
                id,
                firstname,
                lastname,
                dob,
                twitterProfileUrl,
                address,
                new EmailContact());

            var sut = new AddressbookOO();

            // important design decision: do we have state in Addressbook or not?
            // should the following code return a modified list or have internal state?
            //
            // with state
            sut.Contacts.Should().BeEmpty();
            sut.AddContact(contact);
            sut.Contacts.Should().HaveCount(1, "we added 1 contact");
        }
Пример #2
0
        private static AddressOO CreateAddress()
        {
            var zipCode = ZipcodeOO.CreateBang("58008");
            var street  = NonEmptyStringOO.CreateBang("742 Evergreen Terrace");
            var city    = NonEmptyStringOO.CreateBang("Springfield");

            var address = AddressOO.Create(street, city, zipCode);

            return(address);
        }
        public void Two_addresses_with_same_content_are_equal()
        {
            var zipCode = ZipcodeOO.CreateBang("12345");
            var street  = NonEmptyStringOO.CreateBang("742 Evergreen Terrace");
            var city    = NonEmptyStringOO.CreateBang("Springfield");

            var address1 = AddressOO.Create(street, city, zipCode);
            var address2 = AddressOO.Create(street, city, zipCode);

            address1.Should().Be(address2);
        }
Пример #4
0
        public void Creating_a_new_contact_happy_path()
        {
            var contact = CreateHomer();

            contact.FirstName.Value.Should().Be("Homer");
            contact.LastName.Value.Should().Be("Simpson");
            contact.DateOfBirth.Should().BeEquivalentTo(F.Some(new DateTime(1956, 5, 12)));
            contact.TwitterProfileUrl.Should()
            .BeEquivalentTo(F.Some(NonEmptyStringOO.CreateBang("https://twitter.com/homerjsimpson")));
            contact.ContactMethod.Should().BeOfType <EmailContact>();
        }
        public void Creating_address_works()
        {
            var zipCode = ZipcodeOO.CreateBang("12345");
            var street  = NonEmptyStringOO.CreateBang("742 Evergreen Terrace");
            var city    = NonEmptyStringOO.CreateBang("Springfield");

            var addressOO = AddressOO.Create(street, city, zipCode);

            addressOO.City.Value.Should().Be("Springfield");
            addressOO.Street.Value.Should().Be("742 Evergreen Terrace");
            addressOO.Zipcode.Value.Should().Be("12345");
        }
        public void Two_addresses_with_different_content_are_not_equal()
        {
            var zipCode = ZipcodeOO.CreateBang("12345");
            var street  = NonEmptyStringOO.CreateBang("742 Evergreen Terrace");
            var city1   = NonEmptyStringOO.CreateBang("Springfield");
            var city2   = NonEmptyStringOO.CreateBang("Shelbyville");

            var address1 = AddressOO.Create(street, city1, zipCode);
            var address2 = AddressOO.Create(street, city2, zipCode);

            address1.Should().NotBe(address2);
        }
Пример #7
0
        public void Changing_optional_twitter_url_works_and_does_not_modify_id(string newTwitterUrl, bool isValid)
        {
            // Arrange
            var contact    = CreateHomer();
            var twitterUrl = NonEmptyStringOO.Create(newTwitterUrl);

            // Act
            var result = contact.ChangeTwitterUrl(twitterUrl);

            // Assert
            result.TwitterProfileUrl.Should().Be(isValid ? twitterUrl : F.None);
            result.Id.Should().Be(contact.Id);
        }
        public void NonEmptyStringOO_extension_handles_input_as_expected(string input, bool shouldPass)
        {
            var result = NonEmptyStringOO.Create(input);

            if (shouldPass)
            {
                result.Should().BeEqualToNonEmptyString(input);
                result.Should().NotBeEqualNonEmptyString(input + "x");
            }
            else
            {
                result.Should().BeNone();
            }
        }
        public void NonEmptyStringOO_creation_works(string input, bool isValid)
        {
            // Act
            var result = NonEmptyStringOO.Create(input);

            // Assert
            result.Should()
            .NotBeNull()
            .And.BeOfType <Option <NonEmptyStringOO> >();

            result.Match(
                () => isValid.Should().BeFalse(),
                x => x.Value.Should().Be(isValid ? input : null));
        }
Пример #10
0
 public ContactOO(Guid id,
                  NonEmptyStringOO firstname,
                  NonEmptyStringOO lastname,
                  Option <DateTime> dateOfBirth,
                  Option <NonEmptyStringOO> twitterProfileUrl,
                  Option <AddressOO> address,
                  ContactMethod contactMethod)
 {
     Id                = id;
     FirstName         = firstname;
     LastName          = lastname;
     DateOfBirth       = dateOfBirth;
     TwitterProfileUrl = twitterProfileUrl;
     Address           = address;
     ContactMethod     = contactMethod;
 }
Пример #11
0
        public void Changing_name_works_and_does_not_modify_id(
            string newFirstName, string newLastName,
            bool isFirstNameValid, bool isLastNameValid)
        {
            // Arrange
            var contact = CreateHomer();

            // Act
            var result = contact
                         .ChangeFirstName(NonEmptyStringOO.Create(newFirstName))
                         .ChangeLastName(NonEmptyStringOO.Create(newLastName));

            // Assert
            result.FirstName.Value.Should().Be(isFirstNameValid ? newFirstName : contact.FirstName.Value);
            result.LastName.Value.Should().Be(isLastNameValid ? newLastName : contact.LastName.Value);
            result.Id.Should().Be(contact.Id);
        }
        public void Creating_a_zipcode_from_NonEmptyString_works(string input, bool isValid)
        {
            var result = ZipcodeOO.Create(NonEmptyStringOO.CreateBang(input));

            if (isValid)
            {
                result.Match(
                    AssertionHelper.NoneFails,
                    SomeWithStringValueShouldBe(input));
            }
            else
            {
                result.Match(
                    AssertionHelper.NoneIsTrue,
                    SomeWithStringValueShouldFail());
            }
        }
Пример #13
0
        private static ContactOO CreateHomer()
        {
            var firstname = NonEmptyStringOO.CreateBang("Homer");
            var lastname  = NonEmptyStringOO.CreateBang("Simpson");

            var id = Guid.NewGuid();

            var dateOfBirth = new DateTime(1956, 5, 12);
            var dob         = F.Some(dateOfBirth);

            var twitterProfileUrl = NonEmptyStringOO.Create("https://twitter.com/homerjsimpson");

            var address = F.None;

            var contact = new ContactOO(id, firstname, lastname,
                                        dob, twitterProfileUrl, address, new EmailContact());

            return(contact);
        }
        public void NonEmptyStringOO_creation_with_bang_works(string input, bool isValid)
        {
            if (isValid)
            {
                var result = NonEmptyStringOO.CreateBang(input);

                // Assert
                result.Should()
                .NotBeNull()
                .And.BeOfType <NonEmptyStringOO>();

                result.Value.Should().Be(input);
            }
            else
            {
                Action action = () => NonEmptyStringOO.CreateBang(input);
                action.Should().Throw <ArgumentException>().WithMessage("String may not be empty or null!");
            }
        }