Example #1
0
        public async Task DeleteContact_RowNotFound()
        {
            // Arrange
            ICore                core       = new MockCore();
            ILogger              logger     = new Logger();
            ContactsController   controller = new ContactsController(core, logger);
            DeleteContactRequest request    = new DeleteContactRequest();

            request.ContactID = 1000;

            // Act
            DeleteContactResponse response = await(controller.DeleteContact(request));

            // Assert
            Assert.IsNotNull(response);
            Assert.AreEqual(response.ReturnValueInt, BaseResponse.RESPONSE_RUNTIMEEXCEPTION);
            Assert.AreEqual(response.ReturnValueString, "Row not found");
            Assert.AreEqual(response.ReturnValueCustomString, "Exception in Delete");
        }
Example #2
0
        public async Task AddContact_InValidInput()
        {
            // Arrange
            ICore              core       = new MockCore();
            ILogger            logger     = new Logger();
            ContactsController controller = new ContactsController(core, logger);
            AddContactRequest  request    = new AddContactRequest();

            request.FirstName    = "";
            request.LastName     = "Lonkar6";
            request.EmailAddress = "v.l4a.in";
            request.PhoneNumber  = "+91 611.111.111";

            // Act
            AddContactResponse response = await(controller.AddContact(request));

            // Assert
            Assert.IsNotNull(response);
            Assert.AreEqual(response.ReturnValueInt, BaseResponse.RESPONSE_INVALIDREQUEST);
            Assert.AreEqual(response.ReturnValueCustomString, "FirstName is empty.InValid Email Address.");
        }
Example #3
0
        public void TestExternalMediaItem()
        {
            MockDBUtils.Reset();
            MockCore.SetupLibrary();

            SingleTestMIA mia1 = TestCommonUtils.CreateSingleMIA("SINGLE1", Cardinality.Inline, true, true);

            MockCore.Management.AddMediaItemAspectStorage(mia1.Metadata);

            MockCore.Management.AddMediaItemAspectStorage(ProviderResourceAspect.Metadata);
            MockCore.Management.AddMediaItemAspectStorage(ImporterAspect.Metadata);
            MockCore.Management.AddMediaItemAspectStorage(ExternalIdentifierAspect.Metadata);
            MockCore.Management.AddMediaItemAspectStorage(MediaAspect.Metadata);

            IDictionary <Guid, IList <MediaItemAspect> > aspects = new Dictionary <Guid, IList <MediaItemAspect> >();

            SingleMediaItemAspect aspect1 = new SingleMediaItemAspect(mia1.Metadata);

            aspect1.SetAttribute(mia1.ATTR_INTEGER, 1);
            aspect1.SetAttribute(mia1.ATTR_STRING, "one");
            MediaItemAspect.SetAspect(aspects, aspect1);

            MediaItemAspect.AddOrUpdateExternalIdentifier(aspects, "test", ExternalIdentifierAspect.TYPE_EPISODE, "123");
            MediaItemAspect.AddOrUpdateExternalIdentifier(aspects, "test", ExternalIdentifierAspect.TYPE_SERIES, "456");

            MockDBUtils.AddReader(1, "SELECT MEDIA_ITEM_ID FROM M_PROVIDERRESOURCE WHERE SYSTEM_ID = @SYSTEM_ID AND PATH = @PATH", "MEDIA_ITEM_ID");
            MockDBUtils.AddReader(2, "SELECT T5.MEDIA_ITEM_ID A23, T0.MEDIA_ITEM_ID A24, T1.MEDIA_ITEM_ID A25, T2.MEDIA_ITEM_ID A26, T3.MEDIA_ITEM_ID A27, T4.MEDIA_ITEM_ID A28, T0.ATTR_STRING A0, " +
                                  "T0.ATTR_INTEGER A1, T1.SYSTEM_ID A2, T1.RESOURCEINDEX A3, T1.ISPRIMARY A4, T1.MIMETYPE A5, T1.SIZE A6, T1.PATH A7, T1.PARENTDIRECTORY A8, T2.LASTIMPORTDATE A9, T2.DIRTY A10, T2.DATEADDED A11, " +
                                  "T3.SOURCE A12, T3.TYPE A13, T3.ID A14, T4.TITLE A15, T4.SORTTITLE A16, T4.RECORDINGTIME A17, T4.RATING A18, T4.COMMENT A19, T4.PLAYCOUNT A20, T4.LASTPLAYED A21, T4.ISVIRTUAL A22 FROM MEDIA_ITEMS T5 " +
                                  "LEFT OUTER JOIN M_SINGLE1 T0 ON T0.MEDIA_ITEM_ID = T5.MEDIA_ITEM_ID LEFT OUTER JOIN M_PROVIDERRESOURCE T1 ON T1.MEDIA_ITEM_ID = T5.MEDIA_ITEM_ID " +
                                  "LEFT OUTER JOIN M_IMPORTEDITEM T2 ON T2.MEDIA_ITEM_ID = T5.MEDIA_ITEM_ID LEFT OUTER JOIN M_EXTERNALIDENTIFIER T3 ON T3.MEDIA_ITEM_ID = T5.MEDIA_ITEM_ID " +
                                  "LEFT OUTER JOIN M_MEDIAITEM T4 ON T4.MEDIA_ITEM_ID = T5.MEDIA_ITEM_ID  WHERE T5.MEDIA_ITEM_ID = @V0", "@V0");

            string       pathStr = "c:\\item.mp3";
            ResourcePath path    = LocalFsResourceProviderBase.ToResourcePath(pathStr);

            MockCore.Library.AddOrUpdateMediaItem(Guid.Empty, null, path, aspects.Values.SelectMany(x => x), false);

            MockCore.ShutdownLibrary();
        }
Example #4
0
        public void TestRelationshipFilter()
        {
            // Use the real RelationshipFilter because CompiledFilter is hard coded to look for it
            MockCore.AddMediaItemAspectStorage(RelationshipAspect.Metadata);

            Guid    movieId   = new Guid("aaaaaaaa-1111-1111-1111-aaaaaaaaaaaa");
            Guid    movieType = new Guid("bbbbbbbb-2222-2222-2222-bbbbbbbbbbbb");
            Guid    actorType = new Guid("cccccccc-3333-3333-3333-cccccccccccc");
            IFilter filter    = new RelationshipFilter(actorType, movieType, movieId);

            ICollection <MediaItemAspectMetadata> requiredMIATypes = new List <MediaItemAspectMetadata>();

            IList <object>          parts      = new List <object>();
            IList <BindVar>         bindVars   = new List <BindVar>();
            ICollection <TableJoin> tableJoins = new List <TableJoin>();

            MockCompiledFilter compiledFilter = new MockCompiledFilter();

            compiledFilter.test(MockCore.Management, filter, null, requiredMIATypes, "test", tableJoins, parts, bindVars);

            //Console.WriteLine("Parts [{0}]", string.Join(",", parts));
            //Console.WriteLine("Bind vars [{0}]", string.Join(",", bindVars));
            //Console.WriteLine("Table joins [{0}]", string.Join(",", tableJoins));

            Assert.AreEqual(new List <object> {
                "test", " IN(",
                "SELECT R1.", "MEDIA_ITEM_ID", " FROM ", "M_RELATIONSHIP", " R1", " WHERE", " R1.", "LINKEDID", "=@V0", " AND", " R1.", "ROLE", "=@V1", " AND", " R1.", "LINKEDROLE", "=@V2",
                " UNION ",
                "SELECT R1.", "LINKEDID", " FROM ", "M_RELATIONSHIP", " R1", " WHERE", " R1.", "MEDIA_ITEM_ID", "=@V0", " AND", " R1.", "LINKEDROLE", "=@V1", " AND", " R1.", "ROLE", "=@V2", ")"
            }, parts, "Parts");

            Assert.AreEqual(new List <BindVar>
            {
                new BindVar("V0", movieId, typeof(Guid)),
                new BindVar("V1", actorType, typeof(Guid)),
                new BindVar("V2", movieType, typeof(Guid))
            }, bindVars, "Bind vars");
            Assert.AreEqual(new List <TableJoin> {
            }, tableJoins, "Tables joins");
        }
Example #5
0
        public void TestExternalQueryBuilder()
        {
            SingleTestMIA mia1 = TestBackendUtils.CreateSingleMIA("Meta1", Cardinality.Inline, true, true);
            SingleTestMIA mia2 = TestBackendUtils.CreateSingleMIA("Meta2", Cardinality.Inline, true, true);

            MockCore.AddMediaItemAspectStorage(ExternalIdentifierAspect.Metadata);

            string source = "test";
            string type   = "series";
            string id     = "123";

            // Search using external identifiers
            BooleanCombinationFilter filter = new BooleanCombinationFilter(BooleanOperator.And, new[]
            {
                new RelationalFilter(ExternalIdentifierAspect.ATTR_SOURCE, RelationalOperator.EQ, source),
                new RelationalFilter(ExternalIdentifierAspect.ATTR_TYPE, RelationalOperator.EQ, type),
                new RelationalFilter(ExternalIdentifierAspect.ATTR_ID, RelationalOperator.EQ, id),
            });

            ICollection <MediaItemAspectMetadata> requiredMIATypes = new List <MediaItemAspectMetadata>();

            requiredMIATypes.Add(mia1.Metadata);
            requiredMIATypes.Add(mia2.Metadata);

            MIAQueryBuilder builder = new MIAQueryBuilder(MockCore.Management, new List <QueryAttribute>(), null, requiredMIATypes, new List <MediaItemAspectMetadata>(), filter, null, null);

            string mediaItemIdAlias = null;
            IDictionary <MediaItemAspectMetadata, string> miamAliases      = null;
            IDictionary <QueryAttribute, string>          attributeAliases = null;
            string          statementStr = null;
            IList <BindVar> bindVars     = null;

            builder.GenerateSqlStatement(out mediaItemIdAlias, out miamAliases, out attributeAliases, out statementStr, out bindVars);
            Console.WriteLine("mediaItemIdAlias: {0}", mediaItemIdAlias);
            Console.WriteLine("miamAliases: [{0}]", string.Join(",", miamAliases));
            Console.WriteLine("attributeAliases: [{0}]", string.Join(",", attributeAliases));
            Console.WriteLine("statementStr: {0}", statementStr);
            Console.WriteLine("bindVars: [{0}]", string.Join(",", bindVars));
        }
Example #6
0
        public async Task AddContact_Success()
        {
            // Arrange
            ICore              core       = new MockCore();
            ILogger            logger     = new Logger();
            ContactsController controller = new ContactsController(core, logger);
            AddContactRequest  request    = new AddContactRequest();

            request.FirstName    = "Vijay6";
            request.LastName     = "Lonkar6";
            request.EmailAddress = "*****@*****.**";
            request.PhoneNumber  = "+91 611.111.111";

            // Act
            AddContactResponse response = await(controller.AddContact(request));

            // Assert
            Assert.IsNotNull(response);
            Assert.AreEqual(response.NewContactID, 6);
            Assert.AreEqual(response.ReturnValueInt, BaseResponse.RESPONSE_SUCCESS);
            Assert.AreEqual(response.ReturnValueCustomString, "Contact added Successfully.");
        }
Example #7
0
        public async Task AddContact_EmailDuplicate()
        {
            // Arrange
            ICore              core       = new MockCore();
            ILogger            logger     = new Logger();
            ContactsController controller = new ContactsController(core, logger);
            AddContactRequest  request    = new AddContactRequest();

            request.FirstName    = "Vijay6";
            request.LastName     = "Lonkar6";
            request.EmailAddress = "*****@*****.**";
            request.PhoneNumber  = "+91 611.111.111";

            // Act
            AddContactResponse response = await(controller.AddContact(request));

            // Assert
            Assert.IsNotNull(response);
            Assert.AreEqual(response.ReturnValueInt, BaseResponse.RESPONSE_RUNTIMEEXCEPTION);
            Assert.AreEqual(response.ReturnValueString, "Email Address already Exists");
            Assert.AreEqual(response.ReturnValueCustomString, "Exception in Add");
        }
Example #8
0
        public async Task EditContact_RowNotFound()
        {
            // Arrange
            ICore              core       = new MockCore();
            ILogger            logger     = new Logger();
            ContactsController controller = new ContactsController(core, logger);
            EditContactRequest request    = new EditContactRequest();

            request.ContactID    = 1000;
            request.FirstName    = "Vijay6";
            request.LastName     = "Lonkar6";
            request.EmailAddress = "*****@*****.**";
            request.PhoneNumber  = "+91 611.111.111";

            // Act
            EditContactResponse response = await(controller.EditContact(request));

            // Assert
            Assert.IsNotNull(response);
            Assert.AreEqual(response.ReturnValueInt, BaseResponse.RESPONSE_RUNTIMEEXCEPTION);
            Assert.AreEqual(response.ReturnValueString, "Row not found");
            Assert.AreEqual(response.ReturnValueCustomString, "Exception in Edit");
        }
Example #9
0
        public void TestReconcileMediaItem()
        {
            //TODO: Update below code to work with ML changes
            return;

            MockCore.SetupLibrary(true);

            ServiceRegistration.Set <IPluginManager>(new MockPluginManager());

            MockRelationshipExtractor extractor = new MockRelationshipExtractor();

            MockMediaAccessor accessor = new MockMediaAccessor();

            accessor.AddRelationshipExtractor(extractor);
            ServiceRegistration.Set <IMediaAccessor>(accessor);
            ServiceRegistration.Get <IMediaAccessor>().Initialize();

            MockCore.Management.AddMediaItemAspectStorage(EpisodeAspect.Metadata);
            MockCore.Management.AddMediaItemAspectStorage(ExternalIdentifierAspect.Metadata);
            MockCore.Management.AddMediaItemAspectStorage(ImporterAspect.Metadata);
            MockCore.Management.AddMediaItemAspectStorage(MediaAspect.Metadata);
            MockCore.Management.AddMediaItemAspectStorage(ProviderResourceAspect.Metadata);
            MockCore.Management.AddMediaItemAspectStorage(RelationshipAspect.Metadata);
            MockCore.Management.AddMediaItemAspectStorage(SeasonAspect.Metadata);
            MockCore.Management.AddMediaItemAspectStorage(SeriesAspect.Metadata);

            Guid episodeItemId = new Guid("aaaaaaaa-1111-1111-1111-aaaaaaaaaaaa");
            Guid seasonItemId  = new Guid("bbbbbbbb-2222-2222-2222-bbbbbbbbbbbb");
            Guid seriesItemId  = new Guid("cccccccc-3333-3333-3333-cccccccccccc");

            string seriesName        = "The Series";
            string seriesDescription = "The adventures of some characters";

            int    episode           = 1;
            string episodeName       = "The Episode";
            string episodeTitle      = seriesName + ": " + episodeName;
            Guid   parentDirectoryId = new Guid("dddddddd-4444-4444-4444-dddddddddddd");

            int    season            = 2;
            string seriesSeasonName  = seriesName + " " + season;
            string seasonDescription = "Continuing adventures of some characters, several story arcs etc";

            string externalSource   = "TEST";
            string externalSeriesId = "345";

            MockCore.Library.AddMediaItemId(episodeItemId);
            MockCore.Library.AddMediaItemId(seasonItemId);
            MockCore.Library.AddMediaItemId(seriesItemId);

            string       systemId = "local";
            string       mimeType = "video/mkv";
            string       pathStr  = @"c:\item.mkv";
            ResourcePath path     = LocalFsResourceProviderBase.ToResourcePath(pathStr);
            DateTime     importDate;

            DateTime.TryParse("2014-10-11 12:34:56", out importDate);

            IDictionary <Guid, IList <MediaItemAspect> > episodeAspects = new Dictionary <Guid, IList <MediaItemAspect> >();

            MediaItemAspect.SetAttribute(episodeAspects, MediaAspect.ATTR_TITLE, episodeTitle);
            MediaItemAspect.SetCollectionAttribute(episodeAspects, EpisodeAspect.ATTR_EPISODE, new[] { episode });
            MediaItemAspect.SetAttribute(episodeAspects, EpisodeAspect.ATTR_SEASON, season);
            MultipleMediaItemAspect providerResourceAspect = MediaItemAspect.CreateAspect(episodeAspects, ProviderResourceAspect.Metadata);

            providerResourceAspect.SetAttribute(ProviderResourceAspect.ATTR_MIME_TYPE, mimeType);
            MediaItemAspect.AddOrUpdateExternalIdentifier(episodeAspects, externalSource, ExternalIdentifierAspect.TYPE_SERIES, externalSeriesId);
            ServiceRegistration.Get <ILogger>().Debug("Episode:");
            MockCore.ShowMediaAspects(episodeAspects, MockCore.Library.GetManagedMediaItemAspectMetadata());

            IDictionary <Guid, IList <MediaItemAspect> > seasonAspects = new Dictionary <Guid, IList <MediaItemAspect> >();

            MediaItemAspect.SetAttribute(seasonAspects, SeasonAspect.ATTR_SERIES_NAME, seriesName);
            MediaItemAspect.SetAttribute(seasonAspects, SeasonAspect.ATTR_SEASON, season);
            MediaItemAspect.SetAttribute(seasonAspects, SeasonAspect.ATTR_DESCRIPTION, seasonDescription);
            MediaItemAspect.AddOrUpdateExternalIdentifier(seasonAspects, externalSource, ExternalIdentifierAspect.TYPE_SERIES, externalSeriesId);
            ServiceRegistration.Get <ILogger>().Debug("Season:");
            MockCore.ShowMediaAspects(seasonAspects, MockCore.Library.GetManagedMediaItemAspectMetadata());

            Guid[] matchAspects = new[] { SeasonAspect.ASPECT_ID, ExternalIdentifierAspect.ASPECT_ID, MediaAspect.ASPECT_ID };
            extractor.AddRelationship(EpisodeAspect.ROLE_EPISODE, new[] { EpisodeAspect.ASPECT_ID }, SeasonAspect.ROLE_SEASON, new[] { SeasonAspect.ASPECT_ID }, matchAspects, externalSource, ExternalIdentifierAspect.TYPE_SERIES, externalSeriesId, new List <IDictionary <Guid, IList <MediaItemAspect> > >()
            {
                seasonAspects
            }, EpisodeSeasonMatcher, episode);

            IDictionary <Guid, IList <MediaItemAspect> > seriesAspects = new Dictionary <Guid, IList <MediaItemAspect> >();

            MediaItemAspect.SetAttribute(seriesAspects, SeasonAspect.ATTR_SERIES_NAME, seriesName);
            MediaItemAspect.SetAttribute(seriesAspects, SeasonAspect.ATTR_DESCRIPTION, seriesDescription);
            MediaItemAspect.AddOrUpdateExternalIdentifier(seriesAspects, externalSource, ExternalIdentifierAspect.TYPE_SERIES, externalSeriesId);
            ServiceRegistration.Get <ILogger>().Debug("Series:");
            MockCore.ShowMediaAspects(seriesAspects, MockCore.Library.GetManagedMediaItemAspectMetadata());

            matchAspects = new[] { SeriesAspect.ASPECT_ID, ExternalIdentifierAspect.ASPECT_ID, MediaAspect.ASPECT_ID };
            extractor.AddRelationship(SeasonAspect.ROLE_SEASON, new[] { SeasonAspect.ASPECT_ID }, SeriesAspect.ROLE_SERIES, new[] { SeriesAspect.ASPECT_ID }, matchAspects, externalSource, ExternalIdentifierAspect.TYPE_SERIES, externalSeriesId, new List <IDictionary <Guid, IList <MediaItemAspect> > >()
            {
                seriesAspects
            }, null, season);

            MockDBUtils.AddReader(1, "SELECT MEDIA_ITEM_ID FROM M_PROVIDERRESOURCE WHERE SYSTEM_ID = @SYSTEM_ID AND PATH = @PATH", "MEDIA_ITEM_ID");

            MockDBUtils.AddReader(2, "SELECT MEDIA_ITEM_ID FROM M_PROVIDERRESOURCE WHERE MEDIA_ITEM_ID = @MEDIA_ITEM_ID", "MEDIA_ITEM_ID");

            // Readers used by UpdateRelationships to find episode item

            MockReader reader2 = MockDBUtils.AddReader(3,
                                                       "SELECT T6.MEDIA_ITEM_ID A30, T0.MEDIA_ITEM_ID A31, T1.MEDIA_ITEM_ID A32, T2.MEDIA_ITEM_ID A33, T3.MEDIA_ITEM_ID A34, T4.MEDIA_ITEM_ID A35, T5.MEDIA_ITEM_ID A36, " +
                                                       "T0.SERIESNAME A0, T0.SEASON A1, T0.SERIESSEASONNAME A2, T0.EPISODENAME A3, T0.FIRSTAIRED A4, T0.TOTALRATING A5, T0.RATINGCOUNT A6, " +
                                                       "T1.LASTIMPORTDATE A7, T1.DIRTY A8, T1.DATEADDED A9, " +
                                                       "T2.TITLE A10, T2.RECORDINGTIME A11, T2.RATING A12, T2.COMMENT A13, T2.PLAYCOUNT A14, T2.LASTPLAYED A15, " +
                                                       "T3.SYSTEM_ID A16, T3.MIMETYPE A17, T3.SIZE A18, T3.PATH A19, T3.PARENTDIRECTORY A20, " +
                                                       "T4.SERIESNAME_0 A21, T4.SEASON_0 A22, T4.SERIESSEASONNAME_0 A23, T4.DESCRIPTION A24, T4.FIRSTAIRED_0 A25, T4.TOTALRATING_0 A26, T4.RATINGCOUNT_0 A27, " +
                                                       "T5.SERIESNAME_1 A28, T5.DESCRIPTION_0 A29 " +
                                                       "FROM MEDIA_ITEMS T6 " +
                                                       "LEFT OUTER JOIN M_EPISODEITEM T0 ON T0.MEDIA_ITEM_ID = T6.MEDIA_ITEM_ID " +
                                                       "LEFT OUTER JOIN M_IMPORTEDITEM T1 ON T1.MEDIA_ITEM_ID = T6.MEDIA_ITEM_ID " +
                                                       "LEFT OUTER JOIN M_MEDIAITEM T2 ON T2.MEDIA_ITEM_ID = T6.MEDIA_ITEM_ID " +
                                                       "LEFT OUTER JOIN M_PROVIDERRESOURCE T3 ON T3.MEDIA_ITEM_ID = T6.MEDIA_ITEM_ID " +
                                                       "LEFT OUTER JOIN M_SEASONITEM T4 ON T4.MEDIA_ITEM_ID = T6.MEDIA_ITEM_ID " +
                                                       "LEFT OUTER JOIN M_SERIESITEM T5 ON T5.MEDIA_ITEM_ID = T6.MEDIA_ITEM_ID  " +
                                                       "WHERE T6.MEDIA_ITEM_ID = @V0",
                                                       CreateAttributeIdList(30, 36));

            reader2.AddResult(
                episodeItemId, episodeItemId, episodeItemId, episodeItemId, episodeItemId, null, null,
                null, season, null, null, null, null, null,
                importDate, false, importDate,
                episodeTitle, null, null, null, null, null,
                systemId, mimeType, 100, @"c:\", parentDirectoryId,
                null, null, null, null, null, null, null,
                null, null
                );

            MockReader reader3 = MockDBUtils.AddReader(4,
                                                       "SELECT T0.MEDIA_ITEM_ID A0, " +
                                                       "T1.VALUE A1 " +
                                                       "FROM NM_EPISODE T0 " +
                                                       "INNER JOIN V_EPISODE T1 ON T0.VALUE_ID = T1.VALUE_ID " +
                                                       "WHERE T0.MEDIA_ITEM_ID = @V0",
                                                       "A0", "A1");

            reader3.AddResult(
                episodeItemId,
                episode);

            MockDBUtils.AddReader(5, "SELECT T0.MEDIA_ITEM_ID A0, T1.VALUE A1 FROM NM_DVDEPISODE T0 INNER JOIN V_DVDEPISODE T1 ON T0.VALUE_ID = T1.VALUE_ID WHERE T0.MEDIA_ITEM_ID = @V0", "A0", "A1");

            MockReader reader5 = MockDBUtils.AddReader(6,
                                                       "SELECT T0.MEDIA_ITEM_ID A3, T0.MEDIA_ITEM_ID A4, " +
                                                       "T0.SOURCE A0, T0.TYPE A1, T0.ID A2 " +
                                                       "FROM M_EXTERNALIDENTIFIER T0  " +
                                                       "WHERE T0.MEDIA_ITEM_ID = @V0",
                                                       CreateAttributeIdList(3, 4));

            reader5.AddResult(
                episodeItemId, episodeItemId,
                externalSource, ExternalIdentifierAspect.TYPE_SERIES, externalSeriesId);

            MockDBUtils.AddReader(7,
                                  "SELECT T0.MEDIA_ITEM_ID A4, T0.MEDIA_ITEM_ID A5, " +
                                  "T0.ROLE A0, T0.LINKEDROLE A1, T0.LINKEDID A2, T0.RELATIONSHIPINDEX A3 " +
                                  "FROM M_RELATIONSHIP T0  " +
                                  "WHERE T0.MEDIA_ITEM_ID = @V0",
                                  CreateAttributeIdList(3, 4));

            MockDBUtils.AddReader(8,
                                  "SELECT T0.MEDIA_ITEM_ID A4, T0.MEDIA_ITEM_ID A5, T0.ROLE A0, T0.LINKEDROLE A1, T0.LINKEDID A2, T0.RELATIONSHIPINDEX A3 FROM M_RELATIONSHIP T0  WHERE T0.LINKEDID IN (@V0)");

            // Readers used by UpdateRelationships to find season item

            MockDBUtils.AddReader(9,
                                  "SELECT T0.MEDIA_ITEM_ID A30, T0.MEDIA_ITEM_ID A31, T1.MEDIA_ITEM_ID A32, T2.MEDIA_ITEM_ID A33, T3.MEDIA_ITEM_ID A34, T4.MEDIA_ITEM_ID A35, T5.MEDIA_ITEM_ID A36, " +
                                  "T0.SERIESNAME_0 A0, T0.SEASON_0 A1, T0.SERIESSEASONNAME_0 A2, T0.DESCRIPTION A3, T0.FIRSTAIRED_0 A4, T0.TOTALRATING_0 A5, T0.RATINGCOUNT_0 A6, " +
                                  "T1.TITLE A7, T1.RECORDINGTIME A8, T1.RATING A9, T1.COMMENT A10, T1.PLAYCOUNT A11, T1.LASTPLAYED A12, " +
                                  "T2.SERIESNAME A13, T2.SEASON A14, T2.SERIESSEASONNAME A15, T2.EPISODENAME A16, T2.FIRSTAIRED A17, T2.TOTALRATING A18, T2.RATINGCOUNT A19, " +
                                  "T3.LASTIMPORTDATE A20, T3.DIRTY A21, T3.DATEADDED A22, " +
                                  "T4.SYSTEM_ID A23, T4.MIMETYPE A24, T4.SIZE A25, T4.PATH A26, T4.PARENTDIRECTORY A27, " +
                                  "T5.SERIESNAME_1 A28, T5.DESCRIPTION_0 A29 " +
                                  "FROM M_SEASONITEM T0 " +
                                  "INNER JOIN M_MEDIAITEM T1 ON T1.MEDIA_ITEM_ID = T0.MEDIA_ITEM_ID " +
                                  "LEFT OUTER JOIN M_EPISODEITEM T2 ON T2.MEDIA_ITEM_ID = T0.MEDIA_ITEM_ID " +
                                  "LEFT OUTER JOIN M_IMPORTEDITEM T3 ON T3.MEDIA_ITEM_ID = T0.MEDIA_ITEM_ID " +
                                  "LEFT OUTER JOIN M_PROVIDERRESOURCE T4 ON T4.MEDIA_ITEM_ID = T0.MEDIA_ITEM_ID " +
                                  "LEFT OUTER JOIN M_SERIESITEM T5 ON T5.MEDIA_ITEM_ID = T0.MEDIA_ITEM_ID  " +
                                  "WHERE T0.MEDIA_ITEM_ID IN(SELECT MEDIA_ITEM_ID FROM M_EXTERNALIDENTIFIER WHERE SOURCE = @V0 AND TYPE = @V1 AND ID = @V2)",
                                  CreateAttributeIdList(30, 36));

            MockDBUtils.AddReader(10, "SELECT MEDIA_ITEM_ID FROM M_PROVIDERRESOURCE WHERE SYSTEM_ID = @SYSTEM_ID AND PATH = @PATH", "MEDIA_ITEM_ID");

            MockReader reader10 = MockDBUtils.AddReader(11,
                                                        "SELECT T6.MEDIA_ITEM_ID A30, T0.MEDIA_ITEM_ID A31, T1.MEDIA_ITEM_ID A32, T2.MEDIA_ITEM_ID A33, T3.MEDIA_ITEM_ID A34, T4.MEDIA_ITEM_ID A35, T5.MEDIA_ITEM_ID A36, " +
                                                        "T0.SERIESNAME A0, T0.SEASON A1, T0.SERIESSEASONNAME A2, T0.EPISODENAME A3, T0.FIRSTAIRED A4, T0.TOTALRATING A5, T0.RATINGCOUNT A6, " +
                                                        "T1.LASTIMPORTDATE A7, T1.DIRTY A8, T1.DATEADDED A9, " +
                                                        "T2.TITLE A10, T2.RECORDINGTIME A11, T2.RATING A12, T2.COMMENT A13, T2.PLAYCOUNT A14, T2.LASTPLAYED A15, " +
                                                        "T3.SYSTEM_ID A16, T3.MIMETYPE A17, T3.SIZE A18, T3.PATH A19, T3.PARENTDIRECTORY A20, " +
                                                        "T4.SERIESNAME_0 A21, T4.SEASON_0 A22, T4.SERIESSEASONNAME_0 A23, T4.DESCRIPTION A24, T4.FIRSTAIRED_0 A25, T4.TOTALRATING_0 A26, T4.RATINGCOUNT_0 A27, " +
                                                        "T5.SERIESNAME_1 A28, T5.DESCRIPTION_0 A29 " +
                                                        "FROM MEDIA_ITEMS T6 " +
                                                        "LEFT OUTER JOIN M_EPISODEITEM T0 ON T0.MEDIA_ITEM_ID = T6.MEDIA_ITEM_ID " +
                                                        "LEFT OUTER JOIN M_IMPORTEDITEM T1 ON T1.MEDIA_ITEM_ID = T6.MEDIA_ITEM_ID " +
                                                        "LEFT OUTER JOIN M_MEDIAITEM T2 ON T2.MEDIA_ITEM_ID = T6.MEDIA_ITEM_ID " +
                                                        "LEFT OUTER JOIN M_PROVIDERRESOURCE T3 ON T3.MEDIA_ITEM_ID = T6.MEDIA_ITEM_ID " +
                                                        "LEFT OUTER JOIN M_SEASONITEM T4 ON T4.MEDIA_ITEM_ID = T6.MEDIA_ITEM_ID " +
                                                        "LEFT OUTER JOIN M_SERIESITEM T5 ON T5.MEDIA_ITEM_ID = T6.MEDIA_ITEM_ID  " +
                                                        "WHERE T6.MEDIA_ITEM_ID = @V0",
                                                        CreateAttributeIdList(30, 36));

            reader10.AddResult(
                seasonItemId, null, seasonItemId, seasonItemId, seasonItemId, seasonItemId, null,
                null, null, null, null, null, null, null,
                importDate, false, importDate,
                seriesSeasonName, null, null, null, null, null,
                null, null, 0, null, Guid.Empty,
                seriesName, season, seriesSeasonName, seasonDescription, null, null, null,
                null, null
                );

            MockReader reader11 = MockDBUtils.AddReader(12,
                                                        "SELECT T0.MEDIA_ITEM_ID A3, T0.MEDIA_ITEM_ID A4, " +
                                                        "T0.SOURCE A0, T0.TYPE A1, T0.ID A2 " +
                                                        "FROM M_EXTERNALIDENTIFIER T0  " +
                                                        "WHERE T0.MEDIA_ITEM_ID = @V0",
                                                        CreateAttributeIdList(3, 4));

            reader11.AddResult(
                seasonItemId, seasonItemId,
                externalSource, ExternalIdentifierAspect.TYPE_SERIES, externalSeriesId);

            MockDBUtils.AddReader(13,
                                  "SELECT T0.MEDIA_ITEM_ID A4, T0.MEDIA_ITEM_ID A5, " +
                                  "T0.ROLE A0, T0.LINKEDROLE A1, T0.LINKEDID A2, T0.RELATIONSHIPINDEX A3 " +
                                  "FROM M_RELATIONSHIP T0  " +
                                  "WHERE T0.MEDIA_ITEM_ID = @V0",
                                  CreateAttributeIdList(3, 4));

            MockDBUtils.AddReader(14,
                                  "SELECT T0.MEDIA_ITEM_ID A4, T0.MEDIA_ITEM_ID A5, T0.ROLE A0, T0.LINKEDROLE A1, T0.LINKEDID A2, T0.RELATIONSHIPINDEX A3 FROM M_RELATIONSHIP T0  WHERE T0.LINKEDID IN (@V0)");

            MockDBUtils.AddReader(15,
                                  "SELECT T0.MEDIA_ITEM_ID A30, T0.MEDIA_ITEM_ID A31, T1.MEDIA_ITEM_ID A32, T2.MEDIA_ITEM_ID A33, T3.MEDIA_ITEM_ID A34, T4.MEDIA_ITEM_ID A35, T5.MEDIA_ITEM_ID A36, " +
                                  "T0.SERIESNAME_1 A0, T0.DESCRIPTION_0 A1, " +
                                  "T1.TITLE A2, T1.RECORDINGTIME A3, T1.RATING A4, T1.COMMENT A5, T1.PLAYCOUNT A6, T1.LASTPLAYED A7, " +
                                  "T2.SERIESNAME A8, T2.SEASON A9, T2.SERIESSEASONNAME A10, T2.EPISODENAME A11, T2.FIRSTAIRED A12, T2.TOTALRATING A13, T2.RATINGCOUNT A14, " +
                                  "T3.LASTIMPORTDATE A15, T3.DIRTY A16, T3.DATEADDED A17, " +
                                  "T4.SYSTEM_ID A18, T4.MIMETYPE A19, T4.SIZE A20, T4.PATH A21, T4.PARENTDIRECTORY A22, " +
                                  "T5.SERIESNAME_0 A23, T5.SEASON_0 A24, T5.SERIESSEASONNAME_0 A25, T5.DESCRIPTION A26, T5.FIRSTAIRED_0 A27, T5.TOTALRATING_0 A28, T5.RATINGCOUNT_0 A29 " +
                                  "FROM M_SERIESITEM T0 " +
                                  "INNER JOIN M_MEDIAITEM T1 ON T1.MEDIA_ITEM_ID = T0.MEDIA_ITEM_ID " +
                                  "LEFT OUTER JOIN M_EPISODEITEM T2 ON T2.MEDIA_ITEM_ID = T0.MEDIA_ITEM_ID " +
                                  "LEFT OUTER JOIN M_IMPORTEDITEM T3 ON T3.MEDIA_ITEM_ID = T0.MEDIA_ITEM_ID " +
                                  "LEFT OUTER JOIN M_PROVIDERRESOURCE T4 ON T4.MEDIA_ITEM_ID = T0.MEDIA_ITEM_ID " +
                                  "LEFT OUTER JOIN M_SEASONITEM T5 ON T5.MEDIA_ITEM_ID = T0.MEDIA_ITEM_ID  " +
                                  "WHERE T0.MEDIA_ITEM_ID IN(SELECT MEDIA_ITEM_ID FROM M_EXTERNALIDENTIFIER WHERE SOURCE = @V0 AND TYPE = @V1 AND ID = @V2)",
                                  CreateAttributeIdList(30, 36));

            MockDBUtils.AddReader(16, "SELECT MEDIA_ITEM_ID FROM M_PROVIDERRESOURCE WHERE SYSTEM_ID = @SYSTEM_ID AND PATH = @PATH", "MEDIA_ITEM_ID");

            // Readers used by UpdateRelationships to find series item

            MockReader reader16 = MockDBUtils.AddReader(17,
                                                        "SELECT T6.MEDIA_ITEM_ID A30, T0.MEDIA_ITEM_ID A31, T1.MEDIA_ITEM_ID A32, T2.MEDIA_ITEM_ID A33, T3.MEDIA_ITEM_ID A34, T4.MEDIA_ITEM_ID A35, T5.MEDIA_ITEM_ID A36, " +
                                                        "T0.SERIESNAME A0, T0.SEASON A1, T0.SERIESSEASONNAME A2, T0.EPISODENAME A3, T0.FIRSTAIRED A4, T0.TOTALRATING A5, T0.RATINGCOUNT A6, " +
                                                        "T1.LASTIMPORTDATE A7, T1.DIRTY A8, T1.DATEADDED A9, " +
                                                        "T2.TITLE A10, T2.RECORDINGTIME A11, T2.RATING A12, T2.COMMENT A13, T2.PLAYCOUNT A14, T2.LASTPLAYED A15, " +
                                                        "T3.SYSTEM_ID A16, T3.MIMETYPE A17, T3.SIZE A18, T3.PATH A19, T3.PARENTDIRECTORY A20, " +
                                                        "T4.SERIESNAME_0 A21, T4.SEASON_0 A22, T4.SERIESSEASONNAME_0 A23, T4.DESCRIPTION A24, T4.FIRSTAIRED_0 A25, T4.TOTALRATING_0 A26, T4.RATINGCOUNT_0 A27, " +
                                                        "T5.SERIESNAME_1 A28, T5.DESCRIPTION_0 A29 " +
                                                        "FROM MEDIA_ITEMS T6 " +
                                                        "LEFT OUTER JOIN M_EPISODEITEM T0 ON T0.MEDIA_ITEM_ID = T6.MEDIA_ITEM_ID " +
                                                        "LEFT OUTER JOIN M_IMPORTEDITEM T1 ON T1.MEDIA_ITEM_ID = T6.MEDIA_ITEM_ID " +
                                                        "LEFT OUTER JOIN M_MEDIAITEM T2 ON T2.MEDIA_ITEM_ID = T6.MEDIA_ITEM_ID " +
                                                        "LEFT OUTER JOIN M_PROVIDERRESOURCE T3 ON T3.MEDIA_ITEM_ID = T6.MEDIA_ITEM_ID " +
                                                        "LEFT OUTER JOIN M_SEASONITEM T4 ON T4.MEDIA_ITEM_ID = T6.MEDIA_ITEM_ID " +
                                                        "LEFT OUTER JOIN M_SERIESITEM T5 ON T5.MEDIA_ITEM_ID = T6.MEDIA_ITEM_ID  " +
                                                        "WHERE T6.MEDIA_ITEM_ID = @V0",
                                                        CreateAttributeIdList(30, 36));

            reader16.AddResult(
                seriesItemId, null, seasonItemId, seasonItemId, seasonItemId, null, seriesItemId,
                null, null, null, null, null, null, null,
                importDate, false, importDate,
                seriesName, null, null, null, null, null,
                null, null, 0, null, Guid.Empty,
                null, null, null, null, null, null, null,
                seriesName, seriesDescription
                );

            MockReader reader17 = MockDBUtils.AddReader(18,
                                                        "SELECT T0.MEDIA_ITEM_ID A3, T0.MEDIA_ITEM_ID A4, " +
                                                        "T0.SOURCE A0, T0.TYPE A1, T0.ID A2 " +
                                                        "FROM M_EXTERNALIDENTIFIER T0  " +
                                                        "WHERE T0.MEDIA_ITEM_ID = @V0",
                                                        CreateAttributeIdList(3, 4));

            reader17.AddResult(
                seriesItemId, seriesItemId,
                externalSource, ExternalIdentifierAspect.TYPE_SERIES, externalSeriesId);

            MockDBUtils.AddReader(19,
                                  "SELECT T0.MEDIA_ITEM_ID A4, T0.MEDIA_ITEM_ID A5, " +
                                  "T0.ROLE A0, T0.LINKEDROLE A1, T0.LINKEDID A2, T0.RELATIONSHIPINDEX A3 " +
                                  "FROM M_RELATIONSHIP T0  " +
                                  "WHERE T0.MEDIA_ITEM_ID = @V0",
                                  CreateAttributeIdList(4, 5));

            MockDBUtils.AddReader(20,
                                  "SELECT T0.MEDIA_ITEM_ID A4, T0.MEDIA_ITEM_ID A5, T0.ROLE A0, T0.LINKEDROLE A1, T0.LINKEDID A2, T0.RELATIONSHIPINDEX A3 FROM M_RELATIONSHIP T0  WHERE T0.LINKEDID IN (@V0)");

            MockReader reader20 = MockDBUtils.AddReader(21,
                                                        "SELECT MEDIA_ITEM_ID " +
                                                        "FROM M_EXTERNALIDENTIFIER " +
                                                        "WHERE MEDIA_ITEM_ID = @MEDIA_ITEM_ID AND SOURCE = @SOURCE AND TYPE = @TYPE",
                                                        "MEDIA_ITEM_ID");

            reader20.AddResult(
                seasonItemId,
                externalSource, ExternalIdentifierAspect.TYPE_SERIES, externalSeriesId);

            MockDBUtils.AddReader(22,
                                  "SELECT MEDIA_ITEM_ID " +
                                  "FROM M_RELATIONSHIP " +
                                  "WHERE MEDIA_ITEM_ID = @MEDIA_ITEM_ID AND ROLE = @ROLE AND LINKEDROLE = @LINKEDROLE AND LINKEDID = @LINKEDID",
                                  "MEDIA_ITEM_ID");

            MockReader reader22 = MockDBUtils.AddReader(23,
                                                        "SELECT MEDIA_ITEM_ID " +
                                                        "FROM M_EXTERNALIDENTIFIER " +
                                                        "WHERE MEDIA_ITEM_ID = @MEDIA_ITEM_ID AND SOURCE = @SOURCE AND TYPE = @TYPE",
                                                        "MEDIA_ITEM_ID");

            reader22.AddResult(
                seasonItemId,
                externalSource, ExternalIdentifierAspect.TYPE_SERIES, externalSeriesId);

            MockDBUtils.AddReader(24,
                                  "SELECT MEDIA_ITEM_ID " +
                                  "FROM M_RELATIONSHIP " +
                                  "WHERE MEDIA_ITEM_ID = @MEDIA_ITEM_ID AND ROLE = @ROLE AND LINKEDROLE = @LINKEDROLE AND LINKEDID = @LINKEDID",
                                  "MEDIA_ITEM_ID");

            MockCore.Library.AddOrUpdateMediaItem(parentDirectoryId, systemId, path, episodeAspects.Values.SelectMany(x => x), true);

            MockCore.ShutdownLibrary();
        }
Example #10
0
 public void SetUp()
 {
     MockDBUtils.Reset();
     MockCore.Reset();
 }
Example #11
0
        public void TestEditBigMediaItem()
        {
            MockDBUtils.Reset();
            MockCore.SetupLibrary();

            SingleTestMIA mia1 = TestCommonUtils.CreateSingleMIA("SINGLE1", Cardinality.Inline, true, true);

            MockCore.Management.AddMediaItemAspectStorage(mia1.Metadata);

            MultipleTestMIA mia2 = TestCommonUtils.CreateMultipleMIA("MULTIPLE2", Cardinality.Inline, true, false);

            MockCore.Management.AddMediaItemAspectStorage(mia2.Metadata);

            MultipleTestMIA mia3 = TestCommonUtils.CreateMultipleMIA("MULTIPLE3", Cardinality.Inline, false, true);

            MockCore.Management.AddMediaItemAspectStorage(mia3.Metadata);

            SingleTestMIA mia4 = TestCommonUtils.CreateSingleMIA("SINGLE4", Cardinality.Inline, true, true);

            MockCore.Management.AddMediaItemAspectStorage(mia4.Metadata);

            MockCore.Management.AddMediaItemAspectStorage(ProviderResourceAspect.Metadata);
            MockCore.Management.AddMediaItemAspectStorage(ImporterAspect.Metadata);
            MockCore.Management.AddMediaItemAspectStorage(MediaAspect.Metadata);

            IList <MediaItemAspect> aspects = new List <MediaItemAspect>();

            SingleMediaItemAspect aspect1 = new SingleMediaItemAspect(mia1.Metadata);

            aspect1.SetAttribute(mia1.ATTR_INTEGER, 1);
            aspect1.SetAttribute(mia1.ATTR_STRING, "one");
            aspects.Add(aspect1);

            MultipleMediaItemAspect aspect2_1 = new MultipleMediaItemAspect(mia2.Metadata);

            aspect2_1.SetAttribute(mia2.ATTR_ID, "2_1");
            aspect2_1.SetAttribute(mia2.ATTR_STRING, "two.one");
            aspects.Add(aspect2_1);
            MultipleMediaItemAspect aspect2_2 = new MultipleMediaItemAspect(mia2.Metadata);

            aspect2_2.SetAttribute(mia2.ATTR_ID, "2_2");
            aspect2_2.SetAttribute(mia2.ATTR_STRING, "two.two");
            aspects.Add(aspect2_2);

            MultipleMediaItemAspect aspect3_1 = new MultipleMediaItemAspect(mia3.Metadata);

            aspect3_1.SetAttribute(mia3.ATTR_ID, "3_1");
            aspect3_1.SetAttribute(mia3.ATTR_INTEGER, 31);
            aspects.Add(aspect3_1);
            MultipleMediaItemAspect aspect3_2 = new MultipleMediaItemAspect(mia3.Metadata);

            aspect3_2.SetAttribute(mia3.ATTR_ID, "3_2");
            aspect3_2.SetAttribute(mia3.ATTR_INTEGER, 32);
            aspects.Add(aspect3_2);
            MultipleMediaItemAspect aspect3_3 = new MultipleMediaItemAspect(mia3.Metadata);

            aspect3_3.Deleted = true;
            aspect3_3.SetAttribute(mia3.ATTR_INTEGER, 33);
            aspects.Add(aspect3_3);

            Guid itemId = new Guid("aaaaaaaa-1111-1111-1111-aaaaaaaaaaaa");

            MockReader resourceReader = MockDBUtils.AddReader(1, "SELECT MEDIA_ITEM_ID FROM M_PROVIDERRESOURCE WHERE SYSTEM_ID = @SYSTEM_ID AND PATH = @PATH", "MEDIA_ITEM_ID");

            resourceReader.AddResult(itemId);

            DateTime importDate;

            DateTime.TryParse("2014-10-11 12:34:56", out importDate);
            MockReader importReader = MockDBUtils.AddReader(2, "SELECT LASTIMPORTDATE A0, DIRTY A1, DATEADDED A2 FROM M_IMPORTEDITEM WHERE MEDIA_ITEM_ID = @MEDIA_ITEM_ID", "A0", "A1", "A2");

            importReader.AddResult(importDate, "false", importDate);

            string     pathStr   = @"c:\item.mp3";
            MockReader mraReader = MockDBUtils.AddReader(3, "SELECT SYSTEM_ID A0, RESOURCEINDEX A1, ISPRIMARY A2, MIMETYPE A3, SIZE A4, PATH A5, PARENTDIRECTORY A6 FROM M_PROVIDERRESOURCE WHERE MEDIA_ITEM_ID = @MEDIA_ITEM_ID", "MEDIA_ITEM_ID");

            mraReader.AddResult("00000000-0000-0000-0000-000000000000", 0, true, "audio/mp3", 100, pathStr, Guid.Empty);

            MockReader mia1Reader = MockDBUtils.AddReader(4, "SELECT MEDIA_ITEM_ID FROM M_SINGLE1 WHERE MEDIA_ITEM_ID = @MEDIA_ITEM_ID", "MEDIA_ITEM_ID");

            mia1Reader.AddResult(itemId);

            MockReader mia2Reader1 = MockDBUtils.AddReader(5, "SELECT MEDIA_ITEM_ID FROM M_MULTIPLE2 WHERE MEDIA_ITEM_ID = @MEDIA_ITEM_ID AND ATTR_ID = @ATTR_ID", "MEDIA_ITEM_ID", "ATTR_ID");

            mia2Reader1.AddResult(itemId, "1_1");

            MockReader mia2Reader2 = MockDBUtils.AddReader(6, "SELECT MEDIA_ITEM_ID FROM M_MULTIPLE2 WHERE MEDIA_ITEM_ID = @MEDIA_ITEM_ID AND ATTR_ID = @ATTR_ID", "MEDIA_ITEM_ID", "ATTR_ID");

            mia2Reader2.AddResult(itemId, "1_1");

            MockDBUtils.AddReader(7, "SELECT MEDIA_ITEM_ID FROM M_MULTIPLE2 WHERE MEDIA_ITEM_ID = @MEDIA_ITEM_ID AND ATTR_ID = @ATTR_ID", "MEDIA_ITEM_ID", "ATTR_ID");
            MockDBUtils.AddReader(8, "SELECT MEDIA_ITEM_ID FROM M_MULTIPLE2 WHERE MEDIA_ITEM_ID = @MEDIA_ITEM_ID AND ATTR_ID = @ATTR_ID", "MEDIA_ITEM_ID", "ATTR_ID");
            MockDBUtils.AddReader(9, "SELECT MEDIA_ITEM_ID FROM M_MULTIPLE3 WHERE MEDIA_ITEM_ID = @MEDIA_ITEM_ID AND ATTR_ID = @ATTR_ID", "MEDIA_ITEM_ID", "ATTR_ID");
            MockDBUtils.AddReader(10, "SELECT MEDIA_ITEM_ID FROM M_MULTIPLE3 WHERE MEDIA_ITEM_ID = @MEDIA_ITEM_ID AND ATTR_ID = @ATTR_ID", "MEDIA_ITEM_ID", "ATTR_ID");

            MockDBUtils.AddReader(11, "SELECT T7.MEDIA_ITEM_ID A26, T0.MEDIA_ITEM_ID A27, T1.MEDIA_ITEM_ID A28, T2.MEDIA_ITEM_ID A29, T3.MEDIA_ITEM_ID A30, T4.MEDIA_ITEM_ID A31, " +
                                  "T5.MEDIA_ITEM_ID A32, T6.MEDIA_ITEM_ID A33, T0.ATTR_STRING A0, T0.ATTR_INTEGER A1, T1.ATTR_ID A2, T1.ATTR_STRING A3, T2.ATTR_ID A4, T2.ATTR_INTEGER A5, T3.ATTR_STRING A6, " +
                                  "T3.ATTR_INTEGER A7, T4.SYSTEM_ID A8, T4.RESOURCEINDEX A9, T4.ISPRIMARY A10, T4.MIMETYPE A11, T4.SIZE A12, T4.PATH A13, T4.PARENTDIRECTORY A14, T5.LASTIMPORTDATE A15, T5.DIRTY A16, " +
                                  "T5.DATEADDED A17, T6.TITLE A18, T6.SORTTITLE A19, T6.RECORDINGTIME A20, T6.RATING A21, T6.COMMENT A22, T6.PLAYCOUNT A23, T6.LASTPLAYED A24, T6.ISVIRTUAL A25 FROM MEDIA_ITEMS T7 " +
                                  "LEFT OUTER JOIN M_SINGLE1 T0 ON T0.MEDIA_ITEM_ID = T7.MEDIA_ITEM_ID LEFT OUTER JOIN M_MULTIPLE2 T1 ON T1.MEDIA_ITEM_ID = T7.MEDIA_ITEM_ID " +
                                  "LEFT OUTER JOIN M_MULTIPLE3 T2 ON T2.MEDIA_ITEM_ID = T7.MEDIA_ITEM_ID LEFT OUTER JOIN M_SINGLE4 T3 ON T3.MEDIA_ITEM_ID = T7.MEDIA_ITEM_ID " +
                                  "LEFT OUTER JOIN M_PROVIDERRESOURCE T4 ON T4.MEDIA_ITEM_ID = T7.MEDIA_ITEM_ID LEFT OUTER JOIN M_IMPORTEDITEM T5 ON T5.MEDIA_ITEM_ID = T7.MEDIA_ITEM_ID " +
                                  "LEFT OUTER JOIN M_MEDIAITEM T6 ON T6.MEDIA_ITEM_ID = T7.MEDIA_ITEM_ID  WHERE T7.MEDIA_ITEM_ID = @V0", "V0");

            ResourcePath path = LocalFsResourceProviderBase.ToResourcePath(pathStr);

            MockCore.Library.AddOrUpdateMediaItem(Guid.Empty, null, path, aspects, true);

            MockCore.ShutdownLibrary();
        }
Example #12
0
        public void TestEditSmallMediaItem()
        {
            MockDBUtils.Reset();
            MockCore.SetupLibrary();

            MultipleTestMIA mia1 = TestCommonUtils.CreateMultipleMIA("MULTIPLE1", Cardinality.Inline, true, false);

            MockCore.Management.AddMediaItemAspectStorage(mia1.Metadata);

            MockCore.Management.AddMediaItemAspectStorage(ProviderResourceAspect.Metadata);
            MockCore.Management.AddMediaItemAspectStorage(ImporterAspect.Metadata);
            MockCore.Management.AddMediaItemAspectStorage(MediaAspect.Metadata);

            IList <MediaItemAspect> aspects = new List <MediaItemAspect>();

            MultipleMediaItemAspect aspect1_1 = new MultipleMediaItemAspect(mia1.Metadata);

            aspect1_1.SetAttribute(mia1.ATTR_STRING, "1_1");
            aspect1_1.SetAttribute(mia1.ATTR_STRING, "one.three");
            aspects.Add(aspect1_1);
            MultipleMediaItemAspect aspect1_2 = new MultipleMediaItemAspect(mia1.Metadata);

            aspect1_2.SetAttribute(mia1.ATTR_STRING, "1_2");
            aspect1_2.SetAttribute(mia1.ATTR_STRING, "one.two");
            aspects.Add(aspect1_2);

            Guid itemId = new Guid("aaaaaaaa-1111-1111-1111-aaaaaaaaaaaa");

            MockReader resourceReader = MockDBUtils.AddReader(1, "SELECT MEDIA_ITEM_ID FROM M_PROVIDERRESOURCE WHERE SYSTEM_ID = @SYSTEM_ID AND PATH = @PATH", "MEDIA_ITEM_ID");

            resourceReader.AddResult(itemId);

            DateTime importDate;

            DateTime.TryParse("2014-10-11 12:34:56", out importDate);
            MockReader importReader = MockDBUtils.AddReader(2, "SELECT LASTIMPORTDATE A0, DIRTY A1, DATEADDED A2 FROM M_IMPORTEDITEM WHERE MEDIA_ITEM_ID = @MEDIA_ITEM_ID", "A0", "A1", "A2");

            importReader.AddResult(importDate, "false", importDate);

            string     pathStr   = @"c:\item.mp3";
            MockReader mraReader = MockDBUtils.AddReader(3, "SELECT SYSTEM_ID A0, RESOURCEINDEX A1, ISPRIMARY A2, MIMETYPE A3, SIZE A4, PATH A5, PARENTDIRECTORY A6 FROM M_PROVIDERRESOURCE WHERE MEDIA_ITEM_ID = @MEDIA_ITEM_ID", "MEDIA_ITEM_ID");

            mraReader.AddResult(null, 0, true, "audio/mp3", 100, pathStr, Guid.Empty);

            MockReader mia1Reader1 = MockDBUtils.AddReader(4, "SELECT MEDIA_ITEM_ID FROM M_MULTIPLE1 WHERE MEDIA_ITEM_ID = @MEDIA_ITEM_ID AND ATTR_ID = @ATTR_ID", "MEDIA_ITEM_ID", "ATTR_ID");

            mia1Reader1.AddResult(itemId, "1_1");

            MockReader mia1Reader2 = MockDBUtils.AddReader(5, "SELECT MEDIA_ITEM_ID FROM M_MULTIPLE1 WHERE MEDIA_ITEM_ID = @MEDIA_ITEM_ID AND ATTR_ID = @ATTR_ID", "MEDIA_ITEM_ID", "ATTR_ID");

            mia1Reader2.AddResult(itemId, "1_1");

            MockDBUtils.AddReader(6, "SELECT T4.MEDIA_ITEM_ID A20, T0.MEDIA_ITEM_ID A21, T1.MEDIA_ITEM_ID A22, T2.MEDIA_ITEM_ID A23, T3.MEDIA_ITEM_ID A24, T0.ATTR_ID A0, T0.ATTR_STRING A1, T1.SYSTEM_ID A2, " +
                                  "T1.RESOURCEINDEX A3, T1.ISPRIMARY A4, T1.MIMETYPE A5, T1.SIZE A6, T1.PATH A7, T1.PARENTDIRECTORY A8, T2.LASTIMPORTDATE A9, T2.DIRTY A10, T2.DATEADDED A11, T3.TITLE A12, T3.SORTTITLE A13, T3.RECORDINGTIME A14, " +
                                  "T3.RATING A15, T3.COMMENT A16, T3.PLAYCOUNT A17, T3.LASTPLAYED A18, T3.ISVIRTUAL A19 FROM MEDIA_ITEMS T4 LEFT OUTER JOIN M_MULTIPLE1 T0 ON T0.MEDIA_ITEM_ID = T4.MEDIA_ITEM_ID " +
                                  "LEFT OUTER JOIN M_PROVIDERRESOURCE T1 ON T1.MEDIA_ITEM_ID = T4.MEDIA_ITEM_ID LEFT OUTER JOIN M_IMPORTEDITEM T2 ON T2.MEDIA_ITEM_ID = T4.MEDIA_ITEM_ID " +
                                  "LEFT OUTER JOIN M_MEDIAITEM T3 ON T3.MEDIA_ITEM_ID = T4.MEDIA_ITEM_ID  WHERE T4.MEDIA_ITEM_ID = @V0", "V0");

            ResourcePath path = LocalFsResourceProviderBase.ToResourcePath(pathStr);

            MockCore.Library.AddOrUpdateMediaItem(Guid.Empty, null, path, aspects, true);

            MockCore.ShutdownLibrary();
        }
Example #13
0
        public void TestAddMediaItem()
        {
            MockDBUtils.Reset();
            MockCore.SetupLibrary();

            SingleTestMIA   mia1 = TestCommonUtils.CreateSingleMIA("SINGLE1", Cardinality.Inline, true, true);
            MultipleTestMIA mia2 = TestCommonUtils.CreateMultipleMIA("MULTIPLE2", Cardinality.Inline, true, false);
            MultipleTestMIA mia3 = TestCommonUtils.CreateMultipleMIA("MULTIPLE3", Cardinality.Inline, false, true);

            MockCore.Management.AddMediaItemAspectStorage(mia1.Metadata);
            MockCore.Management.AddMediaItemAspectStorage(mia2.Metadata);
            MockCore.Management.AddMediaItemAspectStorage(mia3.Metadata);
            MockCore.Management.AddMediaItemAspectStorage(ProviderResourceAspect.Metadata);
            MockCore.Management.AddMediaItemAspectStorage(ImporterAspect.Metadata);
            MockCore.Management.AddMediaItemAspectStorage(MediaAspect.Metadata);

            IList <MediaItemAspect> aspects = new List <MediaItemAspect>();

            SingleMediaItemAspect aspect1 = new SingleMediaItemAspect(mia1.Metadata);

            aspect1.SetAttribute(mia1.ATTR_INTEGER, 1);
            aspect1.SetAttribute(mia1.ATTR_STRING, "one");
            aspects.Add(aspect1);

            MultipleMediaItemAspect aspect2_1 = new MultipleMediaItemAspect(mia2.Metadata);

            aspect2_1.SetAttribute(mia2.ATTR_STRING, "two.one");
            aspects.Add(aspect2_1);
            MultipleMediaItemAspect aspect2_2 = new MultipleMediaItemAspect(mia2.Metadata);

            aspect2_2.SetAttribute(mia2.ATTR_STRING, "two.two");
            aspects.Add(aspect2_2);

            MultipleMediaItemAspect aspect3_1 = new MultipleMediaItemAspect(mia3.Metadata);

            aspect3_1.SetAttribute(mia3.ATTR_INTEGER, 31);
            aspects.Add(aspect3_1);
            MultipleMediaItemAspect aspect3_2 = new MultipleMediaItemAspect(mia3.Metadata);

            aspect3_2.SetAttribute(mia3.ATTR_INTEGER, 32);
            aspects.Add(aspect3_2);
            MultipleMediaItemAspect aspect3_3 = new MultipleMediaItemAspect(mia3.Metadata);

            aspect3_3.SetAttribute(mia3.ATTR_INTEGER, 33);
            aspects.Add(aspect3_3);

            MockDBUtils.AddReader(1, "SELECT MEDIA_ITEM_ID FROM M_PROVIDERRESOURCE WHERE SYSTEM_ID = @SYSTEM_ID AND PATH = @PATH", "MEDIA_ITEM_ID");
            MockDBUtils.AddReader(2, "SELECT T6.MEDIA_ITEM_ID A24, T0.MEDIA_ITEM_ID A25, T1.MEDIA_ITEM_ID A26, T2.MEDIA_ITEM_ID A27, T3.MEDIA_ITEM_ID A28, " +
                                  "T4.MEDIA_ITEM_ID A29, T5.MEDIA_ITEM_ID A30, T0.ATTR_STRING A0, T0.ATTR_INTEGER A1, T1.ATTR_ID A2, T1.ATTR_STRING A3, T2.ATTR_ID A4, T2.ATTR_INTEGER A5, " +
                                  "T3.SYSTEM_ID A6, T3.RESOURCEINDEX A7, T3.ISPRIMARY A8, T3.MIMETYPE A9, T3.SIZE A10, T3.PATH A11, T3.PARENTDIRECTORY A12, T4.LASTIMPORTDATE A13, T4.DIRTY A14, " +
                                  "T4.DATEADDED A15, T5.TITLE A16, T5.SORTTITLE A17, T5.RECORDINGTIME A18, T5.RATING A19, T5.COMMENT A20, T5.PLAYCOUNT A21, T5.LASTPLAYED A22, T5.ISVIRTUAL A23 " +
                                  "FROM MEDIA_ITEMS T6 LEFT OUTER JOIN M_SINGLE1 T0 ON T0.MEDIA_ITEM_ID = T6.MEDIA_ITEM_ID LEFT OUTER JOIN M_MULTIPLE2 T1 ON T1.MEDIA_ITEM_ID = T6.MEDIA_ITEM_ID " +
                                  "LEFT OUTER JOIN M_MULTIPLE3 T2 ON T2.MEDIA_ITEM_ID = T6.MEDIA_ITEM_ID LEFT OUTER JOIN M_PROVIDERRESOURCE T3 ON T3.MEDIA_ITEM_ID = T6.MEDIA_ITEM_ID " +
                                  "LEFT OUTER JOIN M_IMPORTEDITEM T4 ON T4.MEDIA_ITEM_ID = T6.MEDIA_ITEM_ID LEFT OUTER JOIN M_MEDIAITEM T5 ON T5.MEDIA_ITEM_ID = T6.MEDIA_ITEM_ID  WHERE T6.MEDIA_ITEM_ID = @V0", "V0");

            string       pathStr = "c:\\item.mp3";
            ResourcePath path    = LocalFsResourceProviderBase.ToResourcePath(pathStr);

            MockCore.Library.AddOrUpdateMediaItem(Guid.Empty, null, path, aspects, false);

            MockCore.ShutdownLibrary();
        }
Example #14
0
 public void SetUp()
 {
     MockDBUtils.Reset();
     MockCore.Reset();
     ServiceRegistration.Set <ILocalization>(new NoLocalization());
 }
Example #15
0
        public void TestSubqueryQueryBuilder()
        {
            // Use the real RelationshipFilter because CompiledFilter is hard coded to look for it
            MockCore.AddMediaItemAspectStorage(RelationshipAspect.Metadata);

            SingleTestMIA mia1 = TestBackendUtils.CreateSingleMIA("Meta1", Cardinality.Inline, true, true);
            SingleTestMIA mia2 = TestBackendUtils.CreateSingleMIA("Meta2", Cardinality.Inline, true, true);
            SingleTestMIA mia3 = TestBackendUtils.CreateSingleMIA("Meta3", Cardinality.Inline, true, true);
            SingleTestMIA mia4 = TestBackendUtils.CreateSingleMIA("Meta4", Cardinality.Inline, true, true);

            ICollection <MediaItemAspectMetadata> requiredMIATypes = new List <MediaItemAspectMetadata>();

            requiredMIATypes.Add(mia1.Metadata);

            IFilter linkedMovieFilter = new RelationalFilter(mia2.ATTR_INTEGER, RelationalOperator.EQ, 1);

            Guid    movieType               = new Guid("bbbbbbbb-2222-2222-2222-bbbbbbbbbbbb");
            Guid    collectionType          = new Guid("cccccccc-3333-3333-3333-cccccccccccc");
            Guid    actorType               = new Guid("dddddddd-4444-4444-4444-dddddddddddd");
            IFilter movieToCollectionFilter = new FilteredRelationshipFilter(collectionType, movieType, linkedMovieFilter);

            IFilter linkedActorFilter = new RelationalFilter(mia3.ATTR_INTEGER, RelationalOperator.EQ, 1);
            IFilter movieToCollectionToActorFilter = BooleanCombinationFilter.CombineFilters(BooleanOperator.And,
                                                                                             linkedActorFilter, new FilteredRelationshipFilter(actorType, collectionType, movieToCollectionFilter));

            IFilter subQueryFilter = new RelationalFilter(mia4.ATTR_INTEGER, RelationalOperator.EQ, 1);

            MIAQueryBuilder builder = new MIAQueryBuilder(MockCore.Management, new List <QueryAttribute>(), null, requiredMIATypes, new List <MediaItemAspectMetadata>(), movieToCollectionToActorFilter, subQueryFilter, null);

            string mediaItemIdAlias = null;
            IDictionary <MediaItemAspectMetadata, string> miamAliases      = null;
            IDictionary <QueryAttribute, string>          attributeAliases = null;
            string          statementStr = null;
            IList <BindVar> bindVars     = null;

            builder.GenerateSqlStatement(out mediaItemIdAlias, out miamAliases, out attributeAliases, out statementStr, out bindVars);
            Console.WriteLine("mediaItemIdAlias: {0}", mediaItemIdAlias);
            Console.WriteLine("miamAliases: [{0}]", string.Join(",", miamAliases));
            Console.WriteLine("attributeAliases: [{0}]", string.Join(",", attributeAliases));
            Console.WriteLine("statementStr: {0}", statementStr);
            Console.WriteLine("bindVars: [{0}]", string.Join(",", bindVars));

            Assert.AreEqual("A0", mediaItemIdAlias, "Media item ID alias");
            Assert.AreEqual(CreateMIAMAliases(mia1.Metadata, "A1", mia3.Metadata, "A2"), miamAliases, "MIAM aliases");
            Assert.AreEqual(new Dictionary <QueryAttribute, string>(), attributeAliases, "Attribute aliases");
            Assert.AreEqual("SELECT T0.MEDIA_ITEM_ID A0, T0.MEDIA_ITEM_ID A1, T1.MEDIA_ITEM_ID A2 FROM M_META1 T0 LEFT OUTER JOIN M_META3 T1 ON T0.MEDIA_ITEM_ID = T1.MEDIA_ITEM_ID " +
                            " WHERE (T1.ATTR_INTEGER = @V0 AND T0.MEDIA_ITEM_ID" +
                            " IN(SELECT R1.MEDIA_ITEM_ID FROM M_RELATIONSHIP R1 WHERE R1.ROLE=@V1 AND R1.LINKEDROLE=@V2 AND R1.LINKEDID" +
                            " IN( SELECT TS.A0 FROM (SELECT T0.MEDIA_ITEM_ID A0, T1.MEDIA_ITEM_ID A1 FROM MEDIA_ITEMS T0 LEFT OUTER JOIN M_META4 T1 ON T0.MEDIA_ITEM_ID = T1.MEDIA_ITEM_ID " +
                            " WHERE (T0.MEDIA_ITEM_ID IN(SELECT R1.MEDIA_ITEM_ID FROM M_RELATIONSHIP R1 WHERE R1.ROLE=@V3 AND R1.LINKEDROLE=@V4 AND R1.LINKEDID" +
                            " IN( SELECT TS.A0 FROM (SELECT T0.MEDIA_ITEM_ID A0, T1.MEDIA_ITEM_ID A1, T2.MEDIA_ITEM_ID A2 FROM MEDIA_ITEMS T0 LEFT OUTER JOIN M_META2 T1 ON T0.MEDIA_ITEM_ID = T1.MEDIA_ITEM_ID LEFT OUTER JOIN M_META4 T2 ON T0.MEDIA_ITEM_ID = T2.MEDIA_ITEM_ID" +
                            "  WHERE (T1.ATTR_INTEGER = @V5 AND T2.ATTR_INTEGER = @V6)) TS)" +
                            " UNION SELECT R1.LINKEDID FROM M_RELATIONSHIP R1 WHERE R1.LINKEDROLE=@V3 AND R1.ROLE=@V4 AND R1.MEDIA_ITEM_ID" +
                            " IN( SELECT TS.A0 FROM (SELECT T0.MEDIA_ITEM_ID A0, T1.MEDIA_ITEM_ID A1, T2.MEDIA_ITEM_ID A2 FROM MEDIA_ITEMS T0 LEFT OUTER JOIN M_META2 T1 ON T0.MEDIA_ITEM_ID = T1.MEDIA_ITEM_ID LEFT OUTER JOIN M_META4 T2 ON T0.MEDIA_ITEM_ID = T2.MEDIA_ITEM_ID" +
                            "  WHERE (T1.ATTR_INTEGER = @V5 AND T2.ATTR_INTEGER = @V6)) TS)) AND T1.ATTR_INTEGER = @V7)) TS)" +
                            " UNION SELECT R1.LINKEDID FROM M_RELATIONSHIP R1 WHERE R1.LINKEDROLE=@V1 AND R1.ROLE=@V2 AND R1.MEDIA_ITEM_ID" +
                            " IN( SELECT TS.A0 FROM (SELECT T0.MEDIA_ITEM_ID A0, T1.MEDIA_ITEM_ID A1 FROM MEDIA_ITEMS T0 LEFT OUTER JOIN M_META4 T1 ON T0.MEDIA_ITEM_ID = T1.MEDIA_ITEM_ID" +
                            "  WHERE (T0.MEDIA_ITEM_ID IN(SELECT R1.MEDIA_ITEM_ID FROM M_RELATIONSHIP R1 WHERE R1.ROLE=@V3 AND R1.LINKEDROLE=@V4 AND R1.LINKEDID" +
                            " IN( SELECT TS.A0 FROM (SELECT T0.MEDIA_ITEM_ID A0, T1.MEDIA_ITEM_ID A1, T2.MEDIA_ITEM_ID A2 FROM MEDIA_ITEMS T0 LEFT OUTER JOIN M_META2 T1 ON T0.MEDIA_ITEM_ID = T1.MEDIA_ITEM_ID LEFT OUTER JOIN M_META4 T2 ON T0.MEDIA_ITEM_ID = T2.MEDIA_ITEM_ID" +
                            "  WHERE (T1.ATTR_INTEGER = @V5 AND T2.ATTR_INTEGER = @V6)) TS)" +
                            " UNION SELECT R1.LINKEDID FROM M_RELATIONSHIP R1 WHERE R1.LINKEDROLE=@V3 AND R1.ROLE=@V4 AND R1.MEDIA_ITEM_ID" +
                            " IN( SELECT TS.A0 FROM (SELECT T0.MEDIA_ITEM_ID A0, T1.MEDIA_ITEM_ID A1, T2.MEDIA_ITEM_ID A2 FROM MEDIA_ITEMS T0 LEFT OUTER JOIN M_META2 T1 ON T0.MEDIA_ITEM_ID = T1.MEDIA_ITEM_ID LEFT OUTER JOIN M_META4 T2 ON T0.MEDIA_ITEM_ID = T2.MEDIA_ITEM_ID" +
                            "  WHERE (T1.ATTR_INTEGER = @V5 AND T2.ATTR_INTEGER = @V6)) TS)) AND T1.ATTR_INTEGER = @V7)) TS)))", statementStr, "Statement");
            Assert.AreEqual(new List <BindVar>
            {
                new BindVar("V0", 1, typeof(int)),
                new BindVar("V1", actorType, typeof(Guid)),
                new BindVar("V2", collectionType, typeof(Guid)),
                new BindVar("V3", collectionType, typeof(Guid)),
                new BindVar("V4", movieType, typeof(Guid)),
                new BindVar("V5", 1, typeof(int)),
                new BindVar("V6", 1, typeof(int)),
                new BindVar("V7", 1, typeof(int))
            }, bindVars, "Bind vars");
        }