public void Insert_CallsHelperAndRepository(CollectionDirection direction)
        {
            var helperMock     = new Mock <ICardsHelper>();
            var repositoryMock = new Mock <IDeckRepository>();

            repositoryMock.Setup(x => x.GetDeck(It.IsAny <string>()))
            .Returns(new Deck {
                Piles = new List <Pile> {
                    new Pile {
                        Hash  = "First",
                        Cards = new List <Card>()
                    }
                }
            });
            var hashidsMock = new Mock <IHashids>();

            var interractor = new PileCardsInterractor(repositoryMock.Object, helperMock.Object, hashidsMock.Object);

            interractor.Insert(It.IsAny <string>(), "First", direction, new Card());

            repositoryMock.Verify(x => x.GetDeck(It.IsAny <string>()));
            helperMock.Verify(x => x.Insert(direction, It.IsAny <List <Card> >(), It.IsAny <Card>()));
            repositoryMock.Verify(x => x.Update(It.IsAny <Deck>()));
        }
        public void Generate_WhenDeckFound__ReturnsEmptyPile()
        {
            var helperMock     = new Mock <ICardsHelper>();
            var repositoryMock = new Mock <IDeckRepository>();

            repositoryMock.Setup(x => x.GetDeck(It.IsAny <string>()))
            .Returns(new Deck {
                Piles = new List <Pile> {
                    new Pile {
                        Hash  = "First",
                        Cards = new List <Card>()
                    }
                }
            });
            var hashidsMock = new Mock <IHashids>();

            var interractor = new PileCardsInterractor(repositoryMock.Object, helperMock.Object, hashidsMock.Object);

            var pile = interractor.Generate("hash");

            Assert.NotNull(pile);
            Assert.IsNotEmpty(pile.Hash);
            Assert.That(pile.Cards.Count == 0);
        }