Ejemplo n.º 1
0
        public void AddComponent_HappyDays_SendsComponentToArdoqAndCaches()
        {
            // Arrange
            var componentModel = "my-comp-model";
            var workspace      = new Workspace("MyWorkspace", null)
            {
                Id             = "454923f0-b1b0-48b3-9015-251dad9b4cea",
                ComponentModel = componentModel
            };

            var componentType   = "MyType";
            var componentTypeId = "3a1949ef-8b44-4af3-939f-a49d24376248";

            var internalmodel = new global::Ardoq.Models.Model(
                "model-id",
                "MyModel",
                null,
                new Dictionary <string, string> {
                [componentType] = componentTypeId
            },
                null);

            IArdoqModel model = new ArdoqModel(internalmodel);


            var componentName = "MyNewComponent";
            var parentName    = "parentCompName";
            var vals          = new Dictionary <string, object>
            {
                ["k1"] = "v1",
                ["k2"] = "v2"
            };

            _readerMock.Setup(r => r.GetWorkspaceById(workspace.Id))
            .Returns(Task.FromResult(workspace));
            _readerMock.Setup(r => r.GetModelById(componentModel))
            .Returns(Task.FromResult(model));

            var parentComponentId = "f7e4256e-1d84-4fba-96b7-35ed16234b45";
            var parentComponent   = new Component(parentName, workspace.Id, null)
            {
                Id = parentComponentId
            };

            _readerMock.Setup(r => r.GetAllComponents(workspace.Id))
            .Returns(Task.FromResult <IEnumerable <Component> >(new List <Component> {
                parentComponent
            }));

            _writerMock.Setup(w => w.CreateComponent(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(),
                                                     It.IsAny <string>(), It.IsAny <string>(), It.IsAny <IDictionary <string, object> >()))
            .Returns(Task.FromResult(new Component(componentName, null, null)
            {
                Type = componentType
            }));

            var session = new ArdoqSession(workspace.Id, _readerMock.Object, _writerMock.Object);

            // Act
            session.AddComponent(componentName, vals, componentType, parentName);

            // Assert
            _writerMock.Verify(w => w.CreateComponent(componentName, workspace.Id, componentType, componentTypeId, parentComponentId, vals));
            Assert.True(session.GetComponentsOfType(componentType).Count() == 1);
        }