public void HaveFanMailLetter()
        {
            var letter     = new FanMail("Hi", "Bye");
            var subscriber = new NumberFan(letter);

            subscriber.Letter.ToString().ShouldContain("Hi");
        }
        private static NumberFan SetFanBoy()
        {
            var emailTemplate = new FanMail("HEY GUYS GUESS WHAT!", "DON'T FORGET TO SUBSCRIBE TO MY RSS FEED!");
            var fanBoy        = new NumberFan(emailTemplate);

            fanBoy.SubscribeTo(randoNumber);
            return(fanBoy);
        }
        public void WriteEmailBlast()
        {
            var subscriber = new NumberFan();

            var result = subscriber.WriteBlast();

            result.ShouldNotBeEmpty();
        }
        public void AddSubscribers()
        {
            var subject   = new RandomIntsForDays();
            var numberFan = new NumberFan();

            subject.AddSubscriber(numberFan);

            subject.Subscribers.Count.ShouldBe(1);
        }
        public void GetNewFavoriteNumberAfterNotify()
        {
            var subscriber = new NumberFan();
            var newValue   = 3;

            subscriber.Notify(newValue);

            subscriber.FavoriteNumber.ShouldBe(newValue);
        }
        public void UpdateFanMailBodyWithNewFavoriteNumber()
        {
            var letter      = Substitute.For <IWrittenMessage>();
            var subscriber  = new NumberFan(letter);
            var newFavorite = 3;

            subscriber.Notify(newFavorite);

            letter.Received().AddBody(Arg.Is <string>(x => x.Contains("3")));
        }
        public void SubscribeToSubject()
        {
            var      subscriber = new NumberFan();
            ISubject subject    = Substitute.For <ISubject>();

            subscriber.SubscribeTo(subject);

            subject.Received().AddSubscriber(Arg.Is(subscriber));
            subscriber.Subscription.ShouldBe(subject);
        }
        public void RemoveSubscriber()
        {
            var subject   = new RandomIntsForDays();
            var numberFan = new NumberFan();

            subject.AddSubscriber(numberFan);

            subject.RemoveSubscriber(numberFan);

            subject.Subscribers.ShouldBeEmpty();
        }
        public void WriteBlastBasedOnUpdate()
        {
            var subscriber = new NumberFan();
            var testNumber = 5;

            subscriber.Notify(5);

            var result = subscriber.WriteBlast();

            result.ShouldContain(testNumber.ToString());
        }
        public void UnsubscribeFromSubject()
        {
            var subject    = Substitute.For <ISubject>();
            var subscriber = new NumberFan
            {
                Subscription = subject
            };

            subscriber.Unsubscribe(subject);

            subject.Received().RemoveSubscriber(Arg.Is(subscriber));
            subscriber.Subscription.ShouldBeNull();
        }
        public void HaveFavoriteNumber()
        {
            var subscriber = new NumberFan();

            subscriber.FavoriteNumber.ShouldBeOfType <int>();
        }