public void Resolve_ShouldGiveDefaultValue_WhenNothingRegistered()
        {
            // Arrange
            var resolver = new RegisteringResolver();

            // Act
            var instance = resolver.Resolve <IProductRepository>();

            // Assert
            instance.Should().BeNull("nothing registered");
        }
        private static CheckoutService GetServiceWithMockedRepository()
        {
            var resolver   = new RegisteringResolver();
            var repository = Substitute.For <IProductRepository>();

            repository.FindBy(new BarCode(ValidCode)).Returns(new Product(TestProductName, 0.98M));
            repository.FindBy(Arg.Any <string>()).Returns(Product.NoProduct);
            resolver.Register <IProductRepository>(() => repository);

            return(new CheckoutService(resolver));
        }
        public void Resolve_ShouldGiveRegisteredInstance()
        {
            // Arrange
            var resolver   = new RegisteringResolver();
            var repository = Substitute.For <IProductRepository>();

            resolver.Register <IProductRepository>(() => repository);

            // Act
            var instance = resolver.Resolve <IProductRepository>();

            // Assert
            instance.Should().Be(repository);
        }
        public void Resolve_ShouldGiveRegisteredType()
        {
            // Arrange
            var resolver = new RegisteringResolver();

            resolver.Register <IProductRepository>(() => Substitute.For <IProductRepository>());

            // Act
            var instance = resolver.Resolve <IProductRepository>();

            // Assert
            instance.Should().NotBeNull();
            instance.Should().BeAssignableTo <IProductRepository>();
        }