コード例 #1
0
        public async Task ScrobbleTest()
        {
            //given: FriendScrobbleViewModel with mocked userapi
            List <Scrobble> expected = new List <Scrobble>
            {
                new Scrobble("TestArtist", "TestAlbum", "TestTrack", DateTime.Now)
                {
                    Duration = TimeSpan.FromSeconds(30)
                },
                new Scrobble("TestArtist2", "TestAlbum2", "TestTrack2", DateTime.Now.AddSeconds(1))
                {
                    Duration = TimeSpan.FromSeconds(30)
                },
                new Scrobble("TestArtist3", "TestAlbum3", "TestTrack3", DateTime.Now.AddSeconds(2))
                {
                    Duration = TimeSpan.FromSeconds(30)
                }
            };

            IEnumerable <Scrobble> actual        = null;
            Mock <IUserScrobbler>  scrobblerMock = new Mock <IUserScrobbler>(MockBehavior.Strict);

            scrobblerMock.Setup(u => u.ScrobbleAsync(It.IsAny <IEnumerable <Scrobble> >(), false)).Callback <IEnumerable <Scrobble>, bool>((s, c) => actual = s)
            .Returns(Task.Run(() => new ScrobbleResponse()));
            scrobblerMock.Setup(u => u.IsAuthenticated).Returns(true);


            Mock <IUserApi> userApiMock = new Mock <IUserApi>();

            userApiMock.Setup(i => i.GetRecentScrobbles(It.IsAny <string>(), It.IsAny <DateTimeOffset?>(), It.IsAny <int>(), It.IsAny <int>())).Returns(()
                                                                                                                                                        => Task.Run(() => PageResponse <LastTrack> .CreateSuccessResponse(expected.ToLastTracks())));

            FriendScrobbleViewModel vm = new FriendScrobbleViewModel(null, userApiMock.Object)
            {
                Scrobbler = scrobblerMock.Object,
                Username  = "******"
            };

            await vm.FetchScrobbles();

            vm.SelectAll();

            // when: scrobbling the fetched tracks.
            await vm.Scrobble();

            // we add 1 second to each TimePlayed of the expected because the vm does this too so you can scrobble from yourself...
            for (int i = 0; i < expected.Count; i++)
            {
                expected[i] = expected[i].CloneWithAddedSecond();
            }

            // then: scrobbled tracks should be equal to the given tracks.
            Assert.That(actual.IsEqualScrobble(expected), Is.True);
        }
コード例 #2
0
        public async Task ScrobbleTest()
        {
            //given: FriendScrobbleViewModel with mocked userapi
            var expected = TestHelper.CreateGenericScrobbles(3);

            IEnumerable <Scrobble> actual        = null;
            Mock <IUserScrobbler>  scrobblerMock = new Mock <IUserScrobbler>(MockBehavior.Strict);

            scrobblerMock.Setup(u => u.ScrobbleAsync(It.IsAny <IEnumerable <Scrobble> >(), false)).Callback <IEnumerable <Scrobble>, bool>((s, c) => actual = s)
            .Returns(Task.Run(() => new ScrobbleResponse()));
            scrobblerMock.Setup(u => u.IsAuthenticated).Returns(true);


            Mock <IUserApi> userApiMock = new Mock <IUserApi>();

            userApiMock.Setup(i => i.GetRecentScrobbles(It.IsAny <string>(), It.IsAny <DateTimeOffset?>(), It.IsAny <DateTimeOffset?>(), It.IsAny <bool>(),
                                                        It.IsAny <int>(), It.IsAny <int>())).Returns(()
                                                                                                     => Task.Run(() => PageResponse <LastTrack> .CreateSuccessResponse(expected.ToLastTracks())));

            Mock <IExtendedWindowManager> windowManagerMock = new Mock <IExtendedWindowManager>(MockBehavior.Strict);

            FriendScrobbleViewModel vm = new FriendScrobbleViewModel(windowManagerMock.Object, userApiMock.Object)
            {
                Scrobbler = scrobblerMock.Object,
                Username  = "******"
            };

            await vm.FetchScrobbles();

            vm.CheckAll();

            // when: scrobbling the fetched tracks.
            await vm.Scrobble();

            // we add 1 second to each TimePlayed of the expected because the vm does this too so you can scrobble from yourself...
            for (int i = 0; i < expected.Length; i++)
            {
                expected[i] = expected[i].CloneWithAddedTime(TimeSpan.FromSeconds(1));
            }

            // then: scrobbled tracks should be equal to the given tracks.
            Assert.That(actual.IsEqualScrobble(expected), Is.True);
        }