예제 #1
0
        public void PropertyIsDeletedRemainAsTrue_WhenItWasTrue()
        {
            //Arrange
            var dbContextMock    = new Mock <ApplicationDbContext>();
            var httpClientMock   = new Mock <IHttpClientProvider>();
            var emailServiceMock = new Mock <IEmailService>();

            var sensorServices = new Dataflow.DataServices.SensorService(dbContextMock.Object, httpClientMock.Object, emailServiceMock.Object);

            int sensorId = 2;

            List <Sensor> sensors = new List <Sensor>()
            {
                new Sensor()
                {
                    Id              = sensorId,
                    Name            = "termometur",
                    URL             = "theGreatUrl",
                    PollingInterval = 20,
                    IsPublic        = true,
                    OwnerId         = "stringId",
                    IsDeleted       = true
                }
            };

            var sensorsSetMock = new Mock <DbSet <Sensor> >().SetupData(sensors);

            dbContextMock.SetupGet(m => m.Sensors).Returns(sensorsSetMock.Object);

            //Act
            sensorServices.DeleteSensor(sensorId);

            //Assert
            Assert.AreEqual(true, sensors.First().IsDeleted);
        }
예제 #2
0
        public void ReturnListOfValues()
        {
            //Arrange
            var dbContextMock    = new Mock <ApplicationDbContext>();
            var httpClientMock   = new Mock <IHttpClientProvider>();
            var emailServiceMock = new Mock <IEmailService>();
            int id = 1;

            var sensorServices = new Dataflow.DataServices.SensorService(dbContextMock.Object, httpClientMock.Object, emailServiceMock.Object);

            var valueHistory = new List <ValueHistory>()
            {
                new ValueHistory
                {
                    ValueSensorId = id,
                    Date          = DateTime.ParseExact("03/03/2017 11:21:45", "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture),
                    Value         = 21.1
                },

                new ValueHistory
                {
                    ValueSensorId = id,
                    Date          = DateTime.ParseExact("03/03/2017 11:21:50", "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture),
                    Value         = 23.2
                },

                new ValueHistory
                {
                    ValueSensorId = id,
                    Date          = DateTime.ParseExact("03/03/2017 11:21:55", "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture),
                    Value         = 12.2
                }
            };

            var valueSensor = new ValueTypeSensor()
            {
                Id              = id,
                CurrentValue    = 15.1,
                Maxvalue        = 30,
                MinValue        = 10,
                MeasurementType = "temperature",
                ValueHistory    = valueHistory
            };

            var historySetMock = new Mock <DbSet <ValueHistory> >().SetupData(valueHistory);

            dbContextMock.SetupGet(m => m.ValueHistory).Returns(historySetMock.Object);

            //Act
            List <SensorApiUpdate> result = sensorServices.HistoryDataForValueSensorsById(id).ToList();

            //Assert
            Assert.AreEqual(3, result.Count());
            Assert.AreEqual(valueHistory[0].Value.ToString(), result[0].Value);
        }
예제 #3
0
        public void CallValueHistoryOnce_WhenSensorIsExistent()
        {
            //Arrange
            var dbContextMock    = new Mock <ApplicationDbContext>();
            var httpClientMock   = new Mock <IHttpClientProvider>();
            var emailServiceMock = new Mock <IEmailService>();
            int id = 1;

            var sensorServices = new Dataflow.DataServices.SensorService(dbContextMock.Object, httpClientMock.Object, emailServiceMock.Object);

            var valueHistory = new List <ValueHistory>()
            {
                new ValueHistory
                {
                    ValueSensorId = id,
                    Date          = DateTime.ParseExact("03/03/2017 11:21:45", "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture),
                    Value         = 1.0
                },

                new ValueHistory
                {
                    ValueSensorId = id,
                    Date          = DateTime.ParseExact("03/03/2017 11:21:50", "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture),
                    Value         = 0.0
                },

                new ValueHistory
                {
                    ValueSensorId = id,
                    Date          = DateTime.ParseExact("03/03/2017 11:21:55", "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture),
                    Value         = 0.0
                }
            };

            var valueSensor = new ValueTypeSensor()
            {
                Id              = id,
                CurrentValue    = 15.1,
                Maxvalue        = 30,
                MinValue        = 10,
                MeasurementType = "temperature",
                ValueHistory    = valueHistory
            };

            var historySetMock = new Mock <DbSet <ValueHistory> >().SetupData(valueHistory);

            dbContextMock.SetupGet(m => m.ValueHistory).Returns(historySetMock.Object);

            //Act
            sensorServices.HistoryDataForValueSensorsById(id).ToList();

            //Assert
            dbContextMock.Verify(d => d.ValueHistory, Times.Once());
        }
        public void ThrowArgumentNullException_WhenParameterIsNull()
        {
            //Arrange
            var dbContextMock    = new Mock <ApplicationDbContext>();
            var httpClientMock   = new Mock <IHttpClientProvider>();
            var emailServiceMock = new Mock <IEmailService>();

            var sensorServices = new Dataflow.DataServices.SensorService(dbContextMock.Object, httpClientMock.Object, emailServiceMock.Object);

            //Act && Assert
            Assert.ThrowsException <ArgumentNullException>(() => sensorServices.SendEmailToTheUserOfTheOfflineSensor(null));
        }
예제 #5
0
        public void CallSensorsOnce()
        {
            //Arrange
            var dbContextMock    = new Mock <ApplicationDbContext>();
            var httpClientMock   = new Mock <IHttpClientProvider>();
            var emailServiceMock = new Mock <IEmailService>();

            var sensorServices = new Dataflow.DataServices.SensorService(dbContextMock.Object, httpClientMock.Object, emailServiceMock.Object);

            //Act
            sensorServices.UpdateSensors();

            //Assert
            dbContextMock.Verify(d => d.Sensors, Times.Once);
        }
        public void CallSensorsOnce()
        {
            //Arrange
            var    dbContextMock    = new Mock <ApplicationDbContext>();
            var    httpClientMock   = new Mock <IHttpClientProvider>();
            var    emailServiceMock = new Mock <IEmailService>();
            var    userMock         = new Mock <ApplicationUser>();
            string username         = "******";

            userMock.SetupGet(u => u.UserName).Returns(username);

            var termometer = new ValueTypeSensor()
            {
                MinValue        = 15,
                Maxvalue        = 30,
                CurrentValue    = 20,
                MeasurementType = "Temperatura"
            };

            List <Sensor> sensors = new List <Sensor>()
            {
                new Sensor()
                {
                    Id              = 5,
                    Owner           = userMock.Object,
                    Name            = "termometur",
                    URL             = "theGreatUrl",
                    PollingInterval = 20,
                    IsPublic        = true,
                    IsDeleted       = false,
                    OwnerId         = "stringId",
                    ValueTypeSensor = termometer,
                    IsBoolType      = false
                }
            };

            var sensorsSetMock = new Mock <DbSet <Sensor> >().SetupData(sensors);

            dbContextMock.SetupGet(m => m.Sensors).Returns(sensorsSetMock.Object);

            var sensorServices = new Dataflow.DataServices.SensorService(dbContextMock.Object, httpClientMock.Object, emailServiceMock.Object);

            //Act
            sensorServices.GetAllPublicSensors();

            //Assert
            dbContextMock.Verify(d => d.Sensors, Times.Once());
        }
예제 #7
0
        public void MakeValueHasAlreadyBeenChangedForThisInvalidValueToFalse_WhenCurrentValueIsInRange()
        {
            //Arrange
            var    dbContextMock    = new Mock <ApplicationDbContext>();
            var    httpClientMock   = new Mock <IHttpClientProvider>();
            var    emailServiceMock = new Mock <IEmailService>();
            var    userMock         = new Mock <ApplicationUser>();
            string email            = "[email protected]";
            string username         = "******";

            userMock.SetupGet(u => u.Email).Returns(email);
            userMock.SetupGet(u => u.UserName).Returns(username);

            var sensorServices = new Dataflow.DataServices.SensorService(dbContextMock.Object, httpClientMock.Object, emailServiceMock.Object);

            var termometer = new ValueTypeSensor()
            {
                MinValue        = 15,
                Maxvalue        = 30,
                CurrentValue    = 20,
                MeasurementType = "Temperatura"
            };

            Sensor sensor = new Sensor()
            {
                Id              = 5,
                Owner           = userMock.Object,
                Name            = "termometur",
                URL             = "theGreatUrl",
                PollingInterval = 20,
                IsPublic        = true,
                IsDeleted       = false,
                OwnerId         = "stringId",
                ValueTypeSensor = termometer,
                IsBoolType      = false
            };

            //Act
            sensorServices.SendEmailIfNeeded(sensor);

            //Assert
            Assert.AreEqual(false, sensorServices.ValueHasAlreadyBeenChangedForThisInvalidValue);
        }
예제 #8
0
        public void ReturnListOfAllPublicSensorDataModels_WhenIsAdminIsFalse()
        {
            //Arrange
            var  dbContextMock    = new Mock <ApplicationDbContext>();
            var  httpClientMock   = new Mock <IHttpClientProvider>();
            var  emailServiceMock = new Mock <IEmailService>();
            var  userMock         = new Mock <ApplicationUser>();
            bool IsAdmin          = false;

            var termometer = new ValueTypeSensor()
            {
                MinValue        = 15,
                Maxvalue        = 30,
                CurrentValue    = 20,
                MeasurementType = "Temperatura"
            };

            var door = new BoolTypeSensor()
            {
                CurrentValue    = true,
                MeasurementType = "Open/Close"
            };

            List <Sensor> sensors = new List <Sensor>()
            {
                new Sensor()
                {
                    Id              = 5,
                    Name            = "termometur",
                    IsBoolType      = false,
                    URL             = "theGreatUrl",
                    PollingInterval = 20,
                    ValueTypeSensor = termometer,
                    IsPublic        = true,
                    IsShared        = false,
                    OwnerId         = "stringId",
                    Owner           = userMock.Object,
                    IsDeleted       = true
                },

                new Sensor()
                {
                    Id              = 7,
                    Name            = "Door",
                    IsBoolType      = true,
                    URL             = "theGreatUrlPart2",
                    PollingInterval = 25,
                    BoolTypeSensor  = door,
                    IsPublic        = false,
                    IsShared        = false,
                    OwnerId         = "stringId",
                    Owner           = userMock.Object,
                    IsDeleted       = false
                },
            };

            userMock.SetupGet(u => u.UserName).Returns("OwnerOfSensor");

            var sensorsSetMock = new Mock <DbSet <Sensor> >().SetupData(sensors);

            dbContextMock.SetupGet(m => m.Sensors).Returns(sensorsSetMock.Object);

            var sensorServices = new Dataflow.DataServices.SensorService(dbContextMock.Object, httpClientMock.Object, emailServiceMock.Object);

            //Act
            List <SensorDataModel> result = sensorServices.GetAllSensors(IsAdmin).ToList();

            //Assert
            Assert.AreEqual(1, result.Count());
            Assert.AreEqual(sensors[1].Name, result[0].Name);
            dbContextMock.Verify(d => d.Sensors, Times.Once());
        }
예제 #9
0
        public void CallSensorsOnce_WhenSensorIsExistent()
        {
            //Arrange
            var dbContextMock    = new Mock <ApplicationDbContext>();
            var httpClientMock   = new Mock <IHttpClientProvider>();
            var emailServiceMock = new Mock <IEmailService>();
            var sensorMock       = new Mock <ISensorDataModel>();
            int firstSensorId    = 2;
            int secondSensorId   = 7;

            string firstUsername = "******";
            string firstUserId   = "firstUserId";

            string secondUsername = "******";
            string secondUserId   = "secondUserId";

            sensorMock.Setup(x => x.Id).Returns(firstSensorId);

            var firstUserMock = new Mock <ApplicationUser>();

            firstUserMock.Setup(u => u.UserName).Returns(firstUsername);
            firstUserMock.Setup(u => u.Id).Returns(firstUserId);

            var secondUserMock = new Mock <ApplicationUser>();

            secondUserMock.Setup(u => u.UserName).Returns(secondUsername);
            secondUserMock.Setup(u => u.Id).Returns(secondUserId);

            List <ApplicationUser> users = new List <ApplicationUser>()
            {
                firstUserMock.Object,
                secondUserMock.Object
            };

            var termometer = new ValueTypeSensor()
            {
                MinValue        = 15,
                Maxvalue        = 30,
                CurrentValue    = 20,
                MeasurementType = "Temperatura"
            };

            var door = new BoolTypeSensor()
            {
                CurrentValue    = true,
                MeasurementType = "Open/Close"
            };

            List <Sensor> sensors = new List <Sensor>()
            {
                new Sensor()
                {
                    Id              = firstSensorId,
                    Name            = "termometur",
                    IsBoolType      = false,
                    URL             = "theGreatUrl",
                    PollingInterval = 20,
                    ValueTypeSensor = termometer,
                    IsPublic        = true,
                    IsShared        = true,
                    OwnerId         = "stringId",
                    Owner           = firstUserMock.Object,
                    IsDeleted       = false
                },

                new Sensor()
                {
                    Id              = secondSensorId,
                    Name            = "Door",
                    IsBoolType      = true,
                    URL             = "theGreatUrlPart2",
                    PollingInterval = 25,
                    BoolTypeSensor  = door,
                    IsPublic        = false,
                    IsShared        = false,
                    OwnerId         = "stringId",
                    Owner           = firstUserMock.Object,
                    IsDeleted       = false
                },
            };

            var sensorsSetMock = new Mock <DbSet <Sensor> >().SetupData(sensors);

            var usersSetMock = new Mock <DbSet <ApplicationUser> >().SetupData(users);

            dbContextMock.SetupGet(m => m.Sensors).Returns(sensorsSetMock.Object);

            dbContextMock.SetupGet(m => m.Users).Returns(usersSetMock.Object);

            var sensorServices = new Dataflow.DataServices.SensorService(dbContextMock.Object, httpClientMock.Object, emailServiceMock.Object);

            //Act
            sensorServices.ShareSensorWithUser(firstSensorId, secondUsername);

            //Assert
            dbContextMock.Verify(d => d.Users, Times.Once());
            dbContextMock.Verify(d => d.Sensors, Times.Once());
        }
예제 #10
0
        public void CallSensorsOnceAndReturnSensorWithId_WhenSensorIsExistent()
        {
            //Arrange
            var dbContextMock    = new Mock <ApplicationDbContext>();
            var httpClientMock   = new Mock <IHttpClientProvider>();
            var emailServiceMock = new Mock <IEmailService>();
            var sensorMock       = new Mock <ISensorDataModel>();
            int Id = 2;

            sensorMock.Setup(x => x.Id).Returns(Id);

            var userMock = new Mock <ApplicationUser>();

            var termometer = new ValueTypeSensor()
            {
                MinValue        = 15,
                Maxvalue        = 30,
                CurrentValue    = 20,
                MeasurementType = "Temperatura"
            };

            var door = new BoolTypeSensor()
            {
                CurrentValue    = true,
                MeasurementType = "Open/Close"
            };

            List <Sensor> sensors = new List <Sensor>()
            {
                new Sensor()
                {
                    Id              = Id,
                    Name            = "termometur",
                    IsBoolType      = false,
                    URL             = "theGreatUrl",
                    PollingInterval = 20,
                    ValueTypeSensor = termometer,
                    IsPublic        = true,
                    IsShared        = false,
                    OwnerId         = "stringId",
                    Owner           = userMock.Object,
                    IsDeleted       = false
                },

                new Sensor()
                {
                    Id              = 7,
                    Name            = "Door",
                    IsBoolType      = true,
                    URL             = "theGreatUrlPart2",
                    PollingInterval = 25,
                    BoolTypeSensor  = door,
                    IsPublic        = false,
                    IsShared        = false,
                    OwnerId         = "stringId",
                    Owner           = userMock.Object,
                    IsDeleted       = false
                },
            };

            var sensorsSetMock = new Mock <DbSet <Sensor> >().SetupData(sensors);

            dbContextMock.SetupGet(m => m.Sensors).Returns(sensorsSetMock.Object);

            var sensorServices = new Dataflow.DataServices.SensorService(dbContextMock.Object, httpClientMock.Object, emailServiceMock.Object);

            //Act
            var resultSensor = sensorServices.GetUserSensorById(Id);

            //Assert
            Assert.AreEqual(Id, resultSensor.Id);
            dbContextMock.Verify(d => d.Sensors, Times.Once());
        }
        public void ShouldGetUsersSharedSensors()
        {
            //Arrange
            var    dbContextMock       = new Mock <ApplicationDbContext>();
            var    httpClientMock      = new Mock <IHttpClientProvider>();
            var    emailServiceMock    = new Mock <IEmailService>();
            var    ownerMock           = new Mock <ApplicationUser>();
            var    userToShareWithMock = new Mock <ApplicationUser>();
            string username            = "******";
            string email = "*****@*****.**";

            ownerMock.SetupGet(u => u.UserName).Returns(username);
            ownerMock.SetupGet(u => u.Email).Returns(email);

            var sensorServices = new Dataflow.DataServices.SensorService(dbContextMock.Object, httpClientMock.Object, emailServiceMock.Object);

            List <ApplicationUser> users = new List <ApplicationUser>
            {
                new ApplicationUser {
                    UserName = "******", Email = "*****@*****.**"
                },
                new ApplicationUser {
                    UserName = "******", Email = "*****@*****.**"
                },
                new ApplicationUser {
                    UserName = "******", Email = "*****@*****.**"
                },
                ownerMock.Object
            };

            List <string> usernames = new List <string>
            {
                "Ivan",
                "Mariq",
                "Prolet"
            };

            var termometer = new ValueTypeSensor()
            {
                MinValue        = 15,
                Maxvalue        = 30,
                CurrentValue    = 20,
                MeasurementType = "Temperatura",
                IsConnected     = true
            };

            var door = new BoolTypeSensor()
            {
                CurrentValue    = true,
                MeasurementType = "Open/Close",
                IsConnected     = true
            };

            List <Sensor> sensors = new List <Sensor>()
            {
                new Sensor()
                {
                    Id              = 4,
                    Name            = "termometur",
                    Description     = "meresht temperatura",
                    IsBoolType      = false,
                    URL             = "theGreatUrl",
                    PollingInterval = 20,
                    IsPublic        = true,
                    IsShared        = true,
                    OwnerId         = "stringId",
                    Owner           = ownerMock.Object,
                    IsDeleted       = false,
                    SharedWithUsers = users,
                    ValueTypeSensor = termometer,
                },

                new Sensor()
                {
                    Id              = 7,
                    Name            = "Door",
                    Description     = "meresht otvarqne i zatvarqne",
                    IsBoolType      = true,
                    URL             = "theGreatUrlPart2",
                    PollingInterval = 25,
                    IsPublic        = false,
                    IsShared        = false,
                    OwnerId         = "stringId",
                    Owner           = ownerMock.Object,
                    IsDeleted       = false,
                    BoolTypeSensor  = door
                },
            };
            List <Sensor> sharedSensors = new List <Sensor>();

            sharedSensors.Add(sensors[0]);

            ownerMock.SetupGet(u => u.SharedSensors).Returns(sharedSensors);

            var sensorsSetMock = new Mock <DbSet <Sensor> >().SetupData(sensors);

            var usersSetMock = new Mock <DbSet <ApplicationUser> >().SetupData(users);

            dbContextMock.SetupGet(m => m.Sensors).Returns(sensorsSetMock.Object);

            dbContextMock.SetupGet(m => m.Users).Returns(usersSetMock.Object);

            //Act
            List <SensorDataModel> result = sensorServices.GetSharedWithUserSensors(username).ToList();

            //Assert
            Assert.AreEqual(1, result.Count);
            Assert.AreEqual(sensors[0].IsShared, result[0].IsShared);
            dbContextMock.Verify(d => d.Users, Times.Once);
        }
        public void ReturnListOfAllSensorForUser()
        {
            //Arrange
            var dbContextMock    = new Mock <ApplicationDbContext>();
            var httpClientMock   = new Mock <IHttpClientProvider>();
            var emailServiceMock = new Mock <IEmailService>();
            var sensorMock       = new Mock <ISensorDataModel>();
            int Id = 2;

            sensorMock.Setup(x => x.Id).Returns(Id);

            var    userMock = new Mock <ApplicationUser>();
            string username = "******";

            userMock.SetupGet(u => u.UserName).Returns(username);

            var    secondUserMock = new Mock <ApplicationUser>();
            string secondUsername = "******";

            secondUserMock.SetupGet(u => u.UserName).Returns(secondUsername);

            var termometer = new ValueTypeSensor()
            {
                MinValue        = 15,
                Maxvalue        = 30,
                CurrentValue    = 20,
                MeasurementType = "Temperatura",
                IsConnected     = true
            };

            var door = new BoolTypeSensor()
            {
                CurrentValue    = true,
                MeasurementType = "Open/Close",
                IsConnected     = true
            };

            List <Sensor> sensors = new List <Sensor>()
            {
                new Sensor()
                {
                    Id              = Id,
                    Name            = "termometur",
                    IsBoolType      = false,
                    URL             = "theGreatUrl",
                    PollingInterval = 20,
                    ValueTypeSensor = termometer,
                    IsPublic        = true,
                    IsShared        = false,
                    OwnerId         = "stringId",
                    Owner           = userMock.Object,
                    IsDeleted       = true,
                },

                new Sensor()
                {
                    Id              = 7,
                    Name            = "Door",
                    IsBoolType      = true,
                    URL             = "theGreatUrlPart2",
                    PollingInterval = 25,
                    BoolTypeSensor  = door,
                    IsPublic        = false,
                    IsShared        = false,
                    OwnerId         = "stringId",
                    Owner           = userMock.Object,
                    IsDeleted       = false
                },

                new Sensor()
                {
                    Id              = 9,
                    Name            = "Door",
                    IsBoolType      = true,
                    URL             = "theGreatUrlPart2",
                    PollingInterval = 25,
                    BoolTypeSensor  = door,
                    IsPublic        = false,
                    IsShared        = false,
                    OwnerId         = "stringId",
                    Owner           = secondUserMock.Object,
                    IsDeleted       = false
                },
            };

            var sensorsSetMock = new Mock <DbSet <Sensor> >().SetupData(sensors);

            dbContextMock.SetupGet(m => m.Sensors).Returns(sensorsSetMock.Object);

            var sensorServices = new Dataflow.DataServices.SensorService(dbContextMock.Object, httpClientMock.Object, emailServiceMock.Object);

            //Act
            List <SensorDataModel> result = sensorServices.GetAllSensorsForUser(username).ToList();

            //Assert
            Assert.AreEqual(1, result.Count());
            Assert.AreEqual(sensors[1].Id, result[0].Id);
        }
        public void ReturnListOfSensorDataModels()
        {
            //Arrange
            var    dbContextMock    = new Mock <ApplicationDbContext>();
            var    httpClientMock   = new Mock <IHttpClientProvider>();
            var    emailServiceMock = new Mock <IEmailService>();
            var    userMock         = new Mock <ApplicationUser>();
            string username         = "******";

            userMock.SetupGet(u => u.UserName).Returns(username);

            var termometer = new ValueTypeSensor()
            {
                MinValue        = 15,
                Maxvalue        = 30,
                CurrentValue    = 20,
                MeasurementType = "Temperatura"
            };

            var wetness = new ValueTypeSensor()
            {
                MinValue        = 15,
                Maxvalue        = 30,
                CurrentValue    = 20,
                MeasurementType = "Vlajnost"
            };

            List <Sensor> sensors = new List <Sensor>()
            {
                new Sensor()
                {
                    Id              = 5,
                    Owner           = userMock.Object,
                    Name            = "termometur",
                    URL             = "theGreatUrl",
                    PollingInterval = 20,
                    IsPublic        = true,
                    IsDeleted       = false,
                    OwnerId         = "stringId",
                    ValueTypeSensor = termometer,
                    IsBoolType      = false
                },

                new Sensor()
                {
                    Id              = 7,
                    Owner           = userMock.Object,
                    Name            = "vlajnost",
                    URL             = "theGreatUrlPart2",
                    PollingInterval = 25,
                    IsPublic        = false,
                    IsDeleted       = false,
                    OwnerId         = "stringId",
                    ValueTypeSensor = wetness,
                    IsBoolType      = false
                },
            };

            var sensorsSetMock = new Mock <DbSet <Sensor> >().SetupData(sensors);

            dbContextMock.SetupGet(m => m.Sensors).Returns(sensorsSetMock.Object);

            var sensorServices = new Dataflow.DataServices.SensorService(dbContextMock.Object, httpClientMock.Object, emailServiceMock.Object);

            //Act
            List <SensorDataModel> result = sensorServices.GetAllPublicSensors().ToList();

            //Assert
            Assert.AreEqual(1, result.Count());
            Assert.AreEqual(sensors[0].Name, result[0].Name);
        }
        public void ReturnSensorDataModelWithSharedUsersName()
        {
            //Arrange
            var dbContextMock       = new Mock <ApplicationDbContext>();
            var httpClientMock      = new Mock <IHttpClientProvider>();
            var emailServiceMock    = new Mock <IEmailService>();
            var ownerMock           = new Mock <ApplicationUser>();
            var userToShareWithMock = new Mock <ApplicationUser>();
            int Id = 4;

            var sensorServices = new Dataflow.DataServices.SensorService(dbContextMock.Object, httpClientMock.Object, emailServiceMock.Object);

            List <ApplicationUser> users = new List <ApplicationUser>
            {
                new ApplicationUser {
                    UserName = "******", Email = "*****@*****.**"
                },
                new ApplicationUser {
                    UserName = "******", Email = "*****@*****.**"
                },
                new ApplicationUser {
                    UserName = "******", Email = "*****@*****.**"
                }
            };

            List <string> usernames = new List <string>
            {
                "Ivan",
                "Mariq",
                "Prolet"
            };

            List <Sensor> sensors = new List <Sensor>()
            {
                new Sensor()
                {
                    Id              = Id,
                    Name            = "termometur",
                    IsBoolType      = false,
                    URL             = "theGreatUrl",
                    PollingInterval = 20,
                    IsPublic        = true,
                    IsShared        = true,
                    OwnerId         = "stringId",
                    Owner           = ownerMock.Object,
                    IsDeleted       = false,
                    SharedWithUsers = users
                },

                new Sensor()
                {
                    Id              = 7,
                    Name            = "Door",
                    IsBoolType      = true,
                    URL             = "theGreatUrlPart2",
                    PollingInterval = 25,
                    IsPublic        = false,
                    IsShared        = false,
                    OwnerId         = "stringId",
                    Owner           = ownerMock.Object,
                    IsDeleted       = false
                },
            };

            var sensorsSetMock = new Mock <DbSet <Sensor> >().SetupData(sensors);

            dbContextMock.SetupGet(m => m.Sensors).Returns(sensorsSetMock.Object);

            //Act
            SensorDataModel result = sensorServices.GetUsersSharedSensor(Id);

            //Assert
            Assert.AreEqual(usernames.Count, result.SharedWithUsers.Count);
            Assert.AreEqual(usernames.First(), result.SharedWithUsers.First());
            dbContextMock.Verify(d => d.Sensors, Times.Once);
        }