public void CreateScopes_NullManifest_ArgumentNullException()
        {
            // Arrange

            var factory = new ScopeFactory(new Mock <ILogger <Scope> >().Object,
                                           CreateCollectionFactoryMock());

            // Act/Assert

            Assert.Throws <ArgumentNullException>(() => factory.CreateScopes(CreateBucketMock(factory), null).ToList());
        }
        public void CreateDefaultScopes_WithManifest_ReturnsScopesAndCollections()
        {
            // Arrange

            var factory = new ScopeFactory(new Mock <ILogger <Scope> >().Object,
                                           CreateCollectionFactoryMock());

            var manifest = new Manifest
            {
                scopes = new List <ScopeDef>
                {
                    new ScopeDef
                    {
                        name        = "scope1",
                        uid         = "100",
                        collections = new List <CollectionDef>
                        {
                            new CollectionDef {
                                name = "collection1", uid = "1"
                            },
                            new CollectionDef {
                                name = "collection2", uid = "2"
                            }
                        }
                    },
                    new ScopeDef
                    {
                        name        = "scope2",
                        uid         = "200",
                        collections = new List <CollectionDef>
                        {
                            new CollectionDef {
                                name = "collection3", uid = "fe"
                            },
                            new CollectionDef {
                                name = "collection4", uid = "ff"
                            }
                        }
                    }
                }
            };

            // Act

            var result = factory.CreateScopes(CreateBucketMock(factory), manifest).ToList();

            // Assert

            var scope1 = result.First(p => p.Name == "scope1");

            Assert.Equal("100", scope1.Id);

            var collection1 = scope1["collection1"];

            Assert.Equal("collection1", collection1.Name);
            Assert.Equal((uint?)1, collection1.Cid);

            var collection2 = scope1["collection2"];

            Assert.Equal("collection2", collection2.Name);
            Assert.Equal((uint?)2, collection2.Cid);

            var scope2 = result.First(p => p.Name == "scope2");

            Assert.Equal("100", scope1.Id);

            var collection3 = scope2["collection3"];

            Assert.Equal("collection3", collection3.Name);
            Assert.Equal((uint?)0xfe, collection3.Cid);

            var collection4 = scope2["collection4"];

            Assert.Equal("collection4", collection4.Name);
            Assert.Equal((uint?)0xff, collection4.Cid);
        }