Ejemplo n.º 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");
        }
Ejemplo n.º 2
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));
        }
Ejemplo n.º 5
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);
        }
Ejemplo n.º 6
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);
        }