public void can_parse_who_are_with_1_parameter_but_returning_nothing()
        {
            var ids = new long[] { 1 };
            var twitter = new Mock<ITwitter>();
            twitter.Setup(x => x.UserLookup(ids)).Returns(@"<users></users>");

            var parser = new TwitterParser(twitter.Object);
            parser.WhoAre(ids).Should().Be.Empty();

            twitter.VerifyAll();
        }
        public void can_parse_who_are_with_1_user_with_followers_count()
        {
            var ids = new long[] { 42 };
            var twitter = new Mock<ITwitter>();
            twitter.Setup(x => x.UserLookup(ids)).Returns(
                @"<users>
                    <user><id>42</id><name>Ford Prefect</name><screen_name>ford42</screen_name><followers_count>421</followers_count><friends_count>422</friends_count></user>
                </users>");

            var parser = new TwitterParser(twitter.Object);
            parser.WhoAre(ids).Should().Have.SameSequenceAs(new UserProfile(42, "Ford Prefect", "ford42", 421, 422));

            twitter.VerifyAll();
        }
        public void cannot_parse_who_are_with_4_users_using_max_per_request_equals_1_and_max_requests_per_call_equals_3()
        {
            var twitter = new Mock<ITwitter>();
            twitter.Setup(x => x.UserLookup(new long[] { 42 })).Returns(@"<users></users>");
            twitter.Setup(x => x.UserLookup(new long[] { 43 })).Returns(@"<users></users>");
            twitter.Setup(x => x.UserLookup(new long[] { 44 })).Returns(@"<users></users>");

            var parser = new TwitterParser(twitter.Object, 3);

            Executing.This(()=> {
                parser.WhoAre(new long[] { 42, 43, 44, 45 }, 1).ToList();
            }).Should().Throw<InvalidOperationException>();

            twitter.VerifyAll();
        }
        public void can_parse_who_are_with_2_users()
        {
            var ids = new long[] { 42, 43 };
            var twitter = new Mock<ITwitter>();
            twitter.Setup(x => x.UserLookup(ids)).Returns(
                @"<users>
                    <user><id>42</id><name>Ford Prefect</name><screen_name>ford42</screen_name></user>
                    <user><id>43</id><name>Arthur Dent</name><screen_name>arthur</screen_name></user>
                </users>");

            var parser = new TwitterParser(twitter.Object);
            parser.WhoAre(ids).Should().Have.SameSequenceAs(
                new UserProfile(42, "Ford Prefect", "ford42"),
                new UserProfile(43, "Arthur Dent", "arthur"));

            twitter.VerifyAll();
        }
 public void can_parse_who_are_with_no_parameter()
 {
     var ids = new long [] {  };
     var twitter = new Mock<ITwitter>();
     var parser = new TwitterParser(twitter.Object);
     parser.WhoAre(ids).Should().Be.Empty();
 }
        public void can_parse_who_are_with_4_users_using_max_per_request_equals_2()
        {
            var twitter = new Mock<ITwitter>();
            twitter.Setup(x => x.UserLookup(new long[] { 42, 43 })).Returns(
                @"<users>
                    <user><id>42</id><name>Ford Prefect</name><screen_name>ford42</screen_name></user>
                    <user><id>43</id><name>Arthur Dent</name><screen_name>arthur</screen_name></user>
                </users>");

            twitter.Setup(x => x.UserLookup(new long[] { 44, 45 })).Returns(
            @"<users>
                    <user><id>44</id><name>Ford Prefect</name><screen_name>ford42</screen_name></user>
                    <user><id>45</id><name>Arthur Dent</name><screen_name>arthur</screen_name></user>
                </users>");

            var parser = new TwitterParser(twitter.Object);
            parser.WhoAre(new long [] { 42, 43, 44, 45 }, 2).Should().Have.SameSequenceAs(
                new UserProfile(42, "Ford Prefect", "ford42"),
                new UserProfile(43, "Arthur Dent", "arthur"),
                new UserProfile(44, "Ford Prefect", "ford42"),
                new UserProfile(45, "Arthur Dent", "arthur"));

            twitter.VerifyAll();
        }