From 5422350afd1831e8a1d7ddc841b75d1e8caebd12 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Mon, 23 Apr 2012 11:20:32 -0700 Subject: [PATCH] Unit tests for SearchHistory added. --- NzbDrone.Core.Test/NzbDrone.Core.Test.csproj | 1 + .../SearchHistoryProviderTest.cs | 267 ++++++++++++++++++ .../Providers/SearchHistoryProvider.cs | 14 +- NzbDrone.Web/NzbDrone.Web.csproj | 6 +- .../Views/SearchHistory/Details.cshtml | 2 +- NzbDrone.Web/packages.config | 2 +- .../DataTables.Mvc.0.1.0.67.nupkg | Bin 13931 -> 0 bytes .../lib/DataTables.Mvc.Core.dll | Bin 19968 -> 0 bytes .../Content/App_Start/DataTablesMvc.cs.pp | 17 ++ .../DataTables.Mvc.0.1.0.68.nupkg | Bin 0 -> 13986 bytes .../lib/DataTables.Mvc.Core.dll | Bin 0 -> 19968 bytes .../DataTables.Mvc.0.1.0.68/tools/install.ps1 | 5 + 12 files changed, 304 insertions(+), 10 deletions(-) create mode 100644 NzbDrone.Core.Test/ProviderTests/SearchHistoryProviderTest.cs delete mode 100644 packages/DataTables.Mvc.0.1.0.67/DataTables.Mvc.0.1.0.67.nupkg delete mode 100644 packages/DataTables.Mvc.0.1.0.67/lib/DataTables.Mvc.Core.dll create mode 100644 packages/DataTables.Mvc.0.1.0.68/Content/App_Start/DataTablesMvc.cs.pp create mode 100644 packages/DataTables.Mvc.0.1.0.68/DataTables.Mvc.0.1.0.68.nupkg create mode 100644 packages/DataTables.Mvc.0.1.0.68/lib/DataTables.Mvc.Core.dll create mode 100644 packages/DataTables.Mvc.0.1.0.68/tools/install.ps1 diff --git a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj index eb5cc93dd..ef3eaa129 100644 --- a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj +++ b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj @@ -112,6 +112,7 @@ + diff --git a/NzbDrone.Core.Test/ProviderTests/SearchHistoryProviderTest.cs b/NzbDrone.Core.Test/ProviderTests/SearchHistoryProviderTest.cs new file mode 100644 index 000000000..7f6a80c2e --- /dev/null +++ b/NzbDrone.Core.Test/ProviderTests/SearchHistoryProviderTest.cs @@ -0,0 +1,267 @@ +using System; +using System.IO; +using System.Linq; +using System.Net; +using FizzWare.NBuilder; +using FluentAssertions; +using Moq; +using NUnit.Framework; +using NzbDrone.Common; +using NzbDrone.Core.Model; +using NzbDrone.Core.Model.Notification; +using NzbDrone.Core.Providers; +using NzbDrone.Core.Repository; +using NzbDrone.Core.Repository.Quality; +using NzbDrone.Core.Repository.Search; +using NzbDrone.Core.Test.Framework; +using NzbDrone.Test.Common.AutoMoq; +using NzbDrone.Test.Common; + +namespace NzbDrone.Core.Test.ProviderTests +{ + [TestFixture] + // ReSharper disable InconsistentNaming + public class SearchHistoryProviderTest : CoreTest + { + private SearchHistory _searchHistory; + private Series _series; + private Episode _episode; + + [SetUp] + public void Setup() + { + _series = Builder.CreateNew() + .Build(); + + _episode = Builder.CreateNew() + .Build(); + + var items = Builder.CreateListOfSize(10) + .Build().ToList(); + + _searchHistory = Builder.CreateNew() + .With(h => h.EpisodeId = _episode.EpisodeId) + .With(h => h.SeriesId - _series.SeriesId) + .With(h => h.SearchHistoryItems = items) + .Build(); + } + + private void WithUnsuccessfulSearch() + { + foreach(var item in _searchHistory.SearchHistoryItems) + { + item.Success = false; + } + } + + private void WithSuccessfulSearch() + { + foreach(var item in _searchHistory.SearchHistoryItems) + { + item.Success = false; + } + + var i = _searchHistory.SearchHistoryItems.Last(); + i.Success = true; + i.SearchError = ReportRejectionType.None; + } + + [Test] + public void Add_should_add_history_and_history_items() + { + WithRealDb(); + + Mocker.Resolve().Add(_searchHistory); + + Db.Fetch().Should().HaveCount(1); + Db.Fetch().Should().HaveCount(10); + } + + [Test] + public void Add_should_add_return_id() + { + WithRealDb(); + + var result = Mocker.Resolve().Add(_searchHistory); + + result.Should().NotBe(0); + } + + [Test] + public void Delete_should_delete_history_and_history_items() + { + WithRealDb(); + + Mocker.Resolve().Add(_searchHistory); + + var history = Db.Fetch(); + + Mocker.Resolve().Delete(history.First().Id); + + Db.Fetch().Should().HaveCount(0); + Db.Fetch().Should().HaveCount(0); + } + + [Test] + public void AllSearchHistory_should_return_all_items() + { + WithRealDb(); + Db.Insert(_series); + Db.Insert(_episode); + + Mocker.Resolve().Add(_searchHistory); + + var result = Mocker.Resolve().AllSearchHistory(); + + result.Count.Should().Be(1); + } + + [Test] + public void AllSearchHistory_should_have_series_title() + { + WithRealDb(); + Db.Insert(_series); + Db.Insert(_episode); + + Mocker.Resolve().Add(_searchHistory); + + var result = Mocker.Resolve().AllSearchHistory(); + + result.Count.Should().Be(1); + result.First().SeriesTitle.Should().Be(_series.Title); + } + + [Test] + public void AllSearchHistory_should_have_episode_information() + { + WithRealDb(); + Db.Insert(_series); + Db.Insert(_episode); + + Mocker.Resolve().Add(_searchHistory); + + var result = Mocker.Resolve().AllSearchHistory(); + + result.Count.Should().Be(1); + result.First().EpisodeTitle.Should().Be(_episode.Title); + result.First().EpisodeNumber.Should().Be(_episode.EpisodeNumber); + result.First().SeasonNumber.Should().Be(_episode.SeasonNumber); + } + + [Test] + public void AllSearchHistory_should_have_totalItems_count() + { + WithRealDb(); + Db.Insert(_series); + Db.Insert(_episode); + + Mocker.Resolve().Add(_searchHistory); + + var result = Mocker.Resolve().AllSearchHistory(); + + result.Count.Should().Be(1); + result.First().TotalItems.Should().Be(_searchHistory.SearchHistoryItems.Count); + } + + [Test] + public void AllSearchHistory_should_have_successfulCount_equal_zero_when_all_failed() + { + WithRealDb(); + Db.Insert(_series); + Db.Insert(_episode); + + WithUnsuccessfulSearch(); + + Mocker.Resolve().Add(_searchHistory); + + var result = Mocker.Resolve().AllSearchHistory(); + + result.Count.Should().Be(1); + result.First().SuccessfulCount.Should().Be(0); + } + + [Test] + public void AllSearchHistory_should_have_successfulCount_equal_one_when_one_was_downloaded() + { + WithRealDb(); + Db.Insert(_series); + Db.Insert(_episode); + + WithSuccessfulSearch(); + + Mocker.Resolve().Add(_searchHistory); + + var result = Mocker.Resolve().AllSearchHistory(); + + result.Count.Should().Be(1); + result.First().SuccessfulCount.Should().Be(1); + } + + [Test] + public void GetSearchHistory_should_return_searchHistory_with_items() + { + WithRealDb(); + Db.Insert(_series); + Db.Insert(_episode); + + WithSuccessfulSearch(); + var id = Mocker.Resolve().Add(_searchHistory); + + var result = Mocker.Resolve().GetSearchHistory(id); + + result.SearchHistoryItems.Should().HaveCount(_searchHistory.SearchHistoryItems.Count); + } + + [Test] + public void GetSearchHistory_should_have_episodeDetails() + { + WithRealDb(); + Db.Insert(_series); + Db.Insert(_episode); + + WithSuccessfulSearch(); + var id = Mocker.Resolve().Add(_searchHistory); + + var result = Mocker.Resolve().GetSearchHistory(id); + + result.EpisodeNumber.Should().Be(_episode.EpisodeNumber); + result.SeasonNumber.Should().Be(_episode.SeasonNumber); + result.EpisodeTitle.Should().Be(_episode.Title); + result.AirDate.Should().Be(_episode.AirDate.Value); + } + + [Test] + public void GetSearchHistory_should_not_have_episode_info_if_it_was_a_full_season_search() + { + WithRealDb(); + Db.Insert(_series); + + _searchHistory.EpisodeId = 0; + var id = Mocker.Resolve().Add(_searchHistory); + + var result = Mocker.Resolve().GetSearchHistory(id); + + result.EpisodeNumber.Should().Be(null); + result.SeasonNumber.Should().Be(_searchHistory.SeasonNumber); + result.EpisodeTitle.Should().Be(null); + } + + [Test] + public void ForceDownload_should_download_report() + { + WithRealDb(); + Db.Insert(_series); + Db.Insert(_episode); + + var reportTitle = String.Format("{0} - S{1:00}E{2:00}", _series.Title, _episode.SeasonNumber, _episode.EpisodeNumber); + _searchHistory.SearchHistoryItems.First().ReportTitle = reportTitle; + + Mocker.Resolve().Add(_searchHistory); + var items = Db.Fetch(); + + Mocker.Resolve().ForceDownload(items.First().Id); + + Mocker.GetMock().Verify(v => v.DownloadReport(It.IsAny()), Times.Once()); + } + } +} \ No newline at end of file diff --git a/NzbDrone.Core/Providers/SearchHistoryProvider.cs b/NzbDrone.Core/Providers/SearchHistoryProvider.cs index 3432cf273..b262302ac 100644 --- a/NzbDrone.Core/Providers/SearchHistoryProvider.cs +++ b/NzbDrone.Core/Providers/SearchHistoryProvider.cs @@ -34,15 +34,17 @@ public SearchHistoryProvider() } - public virtual void Add(SearchHistory searchResult) + public virtual int Add(SearchHistory searchHistory) { logger.Trace("Adding new search result"); - searchResult.SuccessfulDownload = searchResult.SearchHistoryItems.Any(s => s.Success); - var id = Convert.ToInt32(_database.Insert(searchResult)); + searchHistory.SuccessfulDownload = searchHistory.SearchHistoryItems.Any(s => s.Success); + var id = Convert.ToInt32(_database.Insert(searchHistory)); - searchResult.SearchHistoryItems.ForEach(s => s.SearchHistoryId = id); + searchHistory.SearchHistoryItems.ForEach(s => s.SearchHistoryId = id); logger.Trace("Adding search result items"); - _database.InsertMany(searchResult.SearchHistoryItems); + _database.InsertMany(searchHistory.SearchHistoryItems); + + return id; } public virtual void Delete(int id) @@ -102,6 +104,7 @@ LEFT JOIN Episodes public virtual void ForceDownload(int itemId) { var item = _database.Single(itemId); + logger.Info("Starting Force Download of: {0}", item.ReportTitle); var searchResult = _database.Single(item.SearchHistoryId); var series = _seriesProvider.GetSeries(searchResult.SeriesId); @@ -111,6 +114,7 @@ public virtual void ForceDownload(int itemId) parseResult.Indexer = item.Indexer; var episodes = _episodeProvider.GetEpisodesByParseResult(parseResult); + logger.Info("Forcing Download of: {0}", item.ReportTitle); _downloadProvider.DownloadReport(parseResult); } } diff --git a/NzbDrone.Web/NzbDrone.Web.csproj b/NzbDrone.Web/NzbDrone.Web.csproj index e64985d2d..a9241eb1d 100644 --- a/NzbDrone.Web/NzbDrone.Web.csproj +++ b/NzbDrone.Web/NzbDrone.Web.csproj @@ -51,9 +51,9 @@ x86 - - ..\packages\DataTables.Mvc.0.1.0.67\lib\DataTables.Mvc.Core.dll - True + + False + ..\packages\DataTables.Mvc.0.1.0.68\lib\DataTables.Mvc.Core.dll ..\packages\DynamicQuery.1.0\lib\35\Dynamic.dll diff --git a/NzbDrone.Web/Views/SearchHistory/Details.cshtml b/NzbDrone.Web/Views/SearchHistory/Details.cshtml index 0546caba1..93ef288fd 100644 --- a/NzbDrone.Web/Views/SearchHistory/Details.cshtml +++ b/NzbDrone.Web/Views/SearchHistory/Details.cshtml @@ -20,7 +20,7 @@ .AddColumn(new Column().DataProperty("Success").Title("Successful").Width("120px")) .AddColumn(new Column().DisplayAndSort("Quality", "QualityInt").Title("Quality").Width("80px")) .AddColumn(new Column().DataProperty("SearchError").Title("Error")) - .AddColumn(new Column().DataProperty("return actionColumn(source, type, val);", true)) + .AddColumn(new Column().DataProperty("return actionColumn(source, type, val);", true).Sortable(false).Searchable(false)) .AddColumn(new Column().DataProperty("Details").RenderFunction("return getDetails(row, val);").Visible(false)) .AddSorting(3, SortDirection.Desc)) diff --git a/NzbDrone.Web/packages.config b/NzbDrone.Web/packages.config index f1a80c99a..d435e4f26 100644 --- a/NzbDrone.Web/packages.config +++ b/NzbDrone.Web/packages.config @@ -1,6 +1,6 @@  - + diff --git a/packages/DataTables.Mvc.0.1.0.67/DataTables.Mvc.0.1.0.67.nupkg b/packages/DataTables.Mvc.0.1.0.67/DataTables.Mvc.0.1.0.67.nupkg deleted file mode 100644 index a3bc6861ce1f1a854564ccd8d315eedebea715e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13931 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 diff --git a/packages/DataTables.Mvc.0.1.0.68/Content/App_Start/DataTablesMvc.cs.pp b/packages/DataTables.Mvc.0.1.0.68/Content/App_Start/DataTablesMvc.cs.pp new file mode 100644 index 000000000..abaaa76f4 --- /dev/null +++ b/packages/DataTables.Mvc.0.1.0.68/Content/App_Start/DataTablesMvc.cs.pp @@ -0,0 +1,17 @@ +using DataTables.Mvc.Core.Helpers; +using DataTables.Mvc.Core.Models; +using System.Web.Mvc; + +[assembly: WebActivator.PreApplicationStartMethod(typeof($rootnamespace$.App_Start.DataTablesModelBinderActivator), "Start")] + +namespace $rootnamespace$.App_Start +{ + public static class DataTablesModelBinderActivator + { + public static void Start() + { + if (!ModelBinders.Binders.ContainsKey(typeof(DataTablesParams))) + ModelBinders.Binders.Add(typeof(DataTablesParams), new DataTablesModelBinder()); + } + } +} \ No newline at end of file diff --git a/packages/DataTables.Mvc.0.1.0.68/DataTables.Mvc.0.1.0.68.nupkg b/packages/DataTables.Mvc.0.1.0.68/DataTables.Mvc.0.1.0.68.nupkg new file mode 100644 index 0000000000000000000000000000000000000000..04747a362203b54455c9113470d5d92a9917cd7a GIT binary patch literal 13986 zcmd6O2~<$iX#Z9 zs8kVe6%i}L5eGn-RKzF<7i9<#AcQ1jxWoAmzP{Jtd+)9HzxA#4|GLP%$vu1DbN1e6 zPiOC?i%t6sH0k*_d+C|k`oft)buSZ>p1(mRpPOKzqM$IoUC-yZOCwFbxbWG>p@02Q zW&>y8w&0*~5u(trK*?qoYkRw?*5gE*eILd7aX)Sk5&aL0!GXS^k}!#XxSg*g_%~!|UI?B2RQ^-}KiFq;puZ?A+<@GNJ5|C&p%H<;qOgAn!{1=< zKV9TERpkH8bO#52N5RY)4t{<dR*Ag*N6ap1 zPt4KP?o{Uf?c@He#3eR53JTZy`}GRyF8jXfY0~&z*Nb>UJd!809t+1RM~HTulesOk z71A4}IqDb6Et=6bu^w+V!4bz(HSMR=SP>Vt<~+FAh;TMb$y4Ge^M%gk?rbsz#m=w7jWQA6?v1 zpRGBLUwiX;`;h^Os#LRBWxV^HIbL@}wWi~eH^l|jl%?JO#%P^JUB!M#Ugfc7jccCR z_4TUC%4tf$OZUvu>o;+y?FtwL4mZ_ZL_Pn+}yJPX7?WgzwhEUH2|94!fEYO~AOR+Sp^s?Rl8dUsP9Q(Pf zt-@hUCGB#GZ z;|9BW!FZvOK;i`9pT%s(07eslRFf@wHVKK@Jjv#8(dKaeoRAP~MYvCB_#d`y&#v_i zvkM9Ne=K%fA<*&G3Z8UXN5yBp{fB7iFJD)yvecocWTigS-ZeyTI(_Eu6NTbxsb#&g zY1o~aKb%mC+~W9?8?`AXU7eHeJ`ufMrPYfPdE_dQeQDJt&%DhU_gQO+yfP>)cU@zp z;k9y=$I9%I5!*AKT{S3YTzw6Mg3+_SzNfT#5_(!TqAPKk(ISg(F4M(5?)|OV`$=Ht zcP(quZT7iU-P!ltA@TISEJ5vRcP2jPomt45;Tb32OKNVpt@U+&vi-g`d&jPXTZZk+ zZL4pro&h}Y;G*|Sx1Xzgd+FD(!rhMUpS@O(#TxX?0&y{1B0)wbaC2C=Pf!rjME3t*a7?uI?i*vxVNr#@$S_ST zPti!lY1e}^x|K7c61*Gq=^yu|^u#{bAbCqbi*6kz2+kXs9QDmYh0+Fi-SxD%aQ_Pb z*B2>^Y$`V_|5|O!s?|ABp0D~`y-s3&gCgzL7nUEMR%jz#*s`cFtx^fCLU1Z|O+xO| z$)eiGE#HiBPl)Z92&yXtsrA!ab;T>!1q3g%O|WP0_t|9|ou3G8{wHC7>fT>@2>oud z#KdGYB5Y9LhCghGk9KSxGA4F@K|%kINt~y@CTx-EGl>|iUZ&sL451FPV#bP)k>ksi z*MtHW;u97M4BlK4)gaSX<88^%8{Wj!1|iJOJ7?*3|9V=qlh@^npkHrPg`Y^(?l?E1 zSkrQbtXSY!TnJQ>^UUUf^^Gm0O6&|BiFT}>fWDlDKja;3Mz6(XRHuv?f}^*OVpWQ# z0r1fg?z_wt>km+bZT{$3gF(#9>-r`Mqh)#**x573Qa#a;%I242^Fs(e(`EKT3GPOY za3)@$S1=1T^|Ff*U`2x>--dO>W2gtTT5th?cGhLHT58KOjqX=$V^^wXm`5>YM-*3+ zIIF|eJdL<$HW+i4c4;B%o%m_j>IR-4^;*3y+vdFuC?Hk*(gt}JF(ju;!C9$ud*+~y z_(-p|899yWW|=WFf%+iRJD$Min&63;!mGO+i-wV1Vzvr2$OFQXORIqrIOT&CG6zK0xvKm z>PPmjrku}cuTw{H<}@g?(c#fpfFdguBT_KHCBEp&(r4bq&5U6R!If@(z4S4U=~DV( zS3Q0XzRkw6X5gtrrC=~HWJrVb2Hq>GQ^^{&E)Vou@8{av0aa|}XHR-V?YU$EX+56s~Ms;}= z37ii5+-9xjW=WtGkn<*m)3#C^NlP~97yVRHwt5msI#5Y^z|+9LzgDLH<%EP71IjV} z%hX18{wT{Rt{6<#oKUEBzuYlo;`V28MWKBiwddGHenU#DG>#-pp<)Wbj^2jBs&2(s zhWaeMV-_wohH1Rm9a`QG=>#k67<%i_9j>92)JE@~m`6vCdPxS4j|v?}RDveNh8uVB zi*xluT4JfDShJLsyg`jb?haZukYX}%6{$$k4`Z~XB8pWQFb{Mm&*Mh@d?ejAT>k>i z`zL+8&>D<%}FMEefQ+^9Wg@JAReHL%2) z_DvHpb`K^Nj|S|NuDFv8l7Z{Q1)4&>!A&pA)}QL5l8wiiC;DdD&4}kGSGGzD&L5(1 z^)V3<-C0geW7Js#A(L)rN0hwHP)NV*r@k1^k;T&EaC;vtqZ`#FcF-j z4C#`&Rzd3Owoj))>j`^>Yu5DLMR@T#;nQ72b;2=2J0r#An5B}55ag<>X{B?66sHqv z4PzK--UlguV05kF$@;akR)CSpqD8Lns22xl!L)ajYVy5LEGIXCvZ<CMo zzps=GZProEaoD#VC66%Ej_2KyE=6VXn}x|t0jMRFb5d5t?kWU7)FPQC*co8Ab~Em> z41(gHoi6i0uy$lRk!#%DSEHyra8sVVJM{Pfwnh_M-f1>O*&q`PoYd*`uDGm>i3g*Y z(}Yfzr%Pa*96r?#2W6zH@Oe2Vt5``m*V4hNT8Vlz-er{W*o9ynYf~NTw}fC@`%lzs zTZM^v7kY7HHI`umS#IYC>FqXfy3h{{!|QbfOLgnGAw*QHeK$9Ej6ET?V9~Zu$M)XY zT<6QiY<32(N9<;`nnWYfHdJHDcn&@KX61%tDu>G?OhZfXF$)W3-UdlII)yBm?bok> z#0ZLJ&)lO%`G=M4+D%CZzZ0qiQ-@M!d)U4pV&20}MT`FFQlw&B^I_(7n{m{D6+X1! z2K3*Nwf%d7ogEK%c%@!YNe&6%F)YD~NxPd*J{p1tllkO$hik-;qxOUv%iggNOP6kJ z9oY?oF;;uM{DmURJ_$>6dZcuyYY_A{hx_Z^Q_-AJn0HodH$;q^jjwq)~8yPuL}M8Qm2E{mBBTKpcLNPwbjvHsDVC`RO=&8BNDdunjGY{??RNvUu}W;p@YTv^&GnJl?ei z{hUG7WwE(L3RNdd`*s(ROVwu?08~O+ma*hR12T6CWrcX_>7T<4i}CklFU+RvN#Q&! zXh_tS17Md>YsSN%`n6O6Et z+ZGThk=J(2i|la%Cb6`Xz1rg%)B_DN{CF01WVtu^hUM<3M>j6mJAxQx|5mx!s4(y8$xWJ>N}KOXP7s!FXW&Aa@iE^h>w06crlxo z0)>}g+$+|Kf2EzAGjCTC=Xg}J^9~!+0)Z*=$6f%!C3tcD%j3)r1c@AX;S7Y3& zdYTH*gv8tkQ1FDLCw;TNout3|Ia#QdEl2=H^zlNX@nRMtIaSqA%_lkUEKwrVn{rOFbevW!D!|HjATjy(7nw(>BBM{iE zE*tQaRJp^e57cK~*nm<}t!MfL`OWU+QEH5YNEs zQ?UA>s{U{R7P+wYK`d(p-jk{XwRAeyA-D**I!ukU_drfz`Dt`rwiK=80Z~&AI4icp z6>77PuQ!s_qDi0i;SOkO5V+aNVMa$HCIB=k=fk`Pf=I^Hg)LMxrnYDae`;whv%{ zfr9%WtJG64dK}W`3%kViI%*GO+x1keo(kr4b+UyC5?Hk>4pxC4zAA-v1U!q;u~!KA zHOG>MO!#A60f043htQz-pd%1!1PKp8R){WjGP4F42iZizl%eYc59EBpbm{u1$;=i; zi5W*nCimBwBO&RKOidvOt)%lb$EFj50ma@@!ub7G2p2mFG`Vwg;B=Or_T&a<0Sbf~ zaqam20B~CO3Jkm^Z@mIsBc`?!6>+m!g;4J(yt2laq9x%Gq-gON;Yw%}X=Ef6GX|rK zyae#QSUrhgBt}Ic9s}H<(G5>8d`!XT$}b7_GL9mps9IHs(39J@t#!cj-O`-vI=ti00zZ_ zNQu7+)rgrlgBO_E|E}N;r z3JApW0u&x_85$Y%fkqh~Q-jr4-epcP_u<%|?fdc9Z!G6GW z#N?e@rk)K*3yEU8Ge#LAEm}vEfj{a+1?DT3X*)HtH^-6mq=H(BPVCA$4%Lv!j25>s zDptez3TY}RILB$DTe2&#`cs_N=D8G2E%_zj)*3tBlJ=E=yN)RlI}N026*N}kxkwl` zX-T44Mtc*bD7+COHWq_gCGwEoBT~dzqN+UM#TNfptI5vE#Q7fJ?n zH;}|0<4zQU`*&Hc;B4?At1m)rVW$$7LeBV9(w)G1B9T8;r=xy?xsTx3POykkuHbZA zdlT=o2TbDtpXfR*3>@%~MB8FK^ORSdT%;r>L;4I-Xv2{vLl-`zW07k34ANv5fW07H zjFc5pC2sgUhOSnFDUi-q17A+J3r0PJTpvi&DqzV-p2BrV9TrIr+H;2(IvLGq64EvK zkh2BjL%3PQydw%;bL0lxvV;b31#=oc1+7tCyiOZ9?2!SOajce@P*9jsd4Q!A$87c5 zIv2+3c@^ORX&Z!h2Ba;~#Szj1bP+(>Tn(TDOJ~D)I1O?V^vxd9SOp+zNkdvQMYSOH zOSpx+j73J!BC5-SjRywu&&03@g`_K+i!TIC5`BU{C{P;3+-cB47{uI2 z@sU}eiLZC#tw_N139c6j9ZDW(Weg)=KggU=u-+X=IgM~QZzmoW#33}o8? z$~Q^z3`#EJ(uh*X3TPHRHpn9N33AX)v0`o>Xz9`Ek3f@}V%ka89L7sYS3Zy(huyE&xWTo+YcrTt84SG|D)du|n#KZ%w?Pj*Mm#0jG01 zaH+fy{l+<71!ZR=e?s=z*AUkv(@!z7g+vT&l#PW}5+X*fp(RM`K1CO_;i@%CWl=JL zTr`PB>B2P}`Q1sQ`kdc}S8A zBoC$+_k0$q^l$Lb63xj=d+asf>sZH5q8pk0DM(M3G*T@qwn43uye zWcMOR1c9h9g&I?|liG6V37?W$A<`W!B-==`i3Ih<(aqGf{#n4o1!8ux2qK)mC zcZq-}Fg1a8+apYIhVdlckXjqolR$|hDO%|u+waFRRcAnVIa5Uxk*tE51NwO(S5h|n z)e-qn7Rp{wjoI)hVN9NcsJ_eNmrcRR6jH+8`i#z+I7}AVJ^E}p-j3-6iY$6~w+>nI z6ru);Be?Ij=~R}LLEcS^KtaWg(ptZ`X_5kL?UF*9m5H$dB7^w+kBvKS9f@MaIX7Fo z1DDAw?*4qqwji}wiws1Loj+5aRlUH_p0lH!`B% zi8a&GG8PPrioQ4l6ex1?N)-IAh;^lS%!29Zt+&rIRwS7)17obPC3yT&=s0qbVIxz6 z@}K8>xqY{H8_!fjZfTl8Z}2|dtTlgw(z0;>7rQCsfWX@u2Xdl?t8;IB^)NSgD0C7h zrJtFbK@pz*Zu2m?{O$c9_v@krel?0DB+(yS1r+jU*p^S%}@BMeuUf5>@u?TG_? zdc*Fl@s)RyZLF6u;`U~>-^>;STTZ+TMdsBGA#N3_U>59OkeEWPddK8}Q;o+bOtaaE|YpF3c zHLxCU7u+iGG{*G%C8r2`nOd%H?E6J_7cS&KJAL((eEF_K+w!kkH`lD1n@)kJc4}Gr zgX`C`7I5L-0ZzvmU9pppUyB??51fq~*;RbwXSmCy*MP$;w{`2*QiSfqZ*faIC^9d$Oyx&$-Jox_HI>g?tsC9Dah;u34E;1g!#|f4V)r ztD`nm_%(mtglEc$i@?T6$cHOh^=#$G>NiHV~N(7*vU*`UhS6^o; ztFT9##y+GX_X`^{DIs>FN+Gzk2R|mOOgkT5bL4XBjcGX>;JP*aQ0xsC+jYlVfBM_9SdqX?x)s4A9`;%epPpfT8ODf8;&jcv2!#ukE}TO=?8v^QXd&w z^+U!=?n_Wasm|n^4PG&7?}aIAq3Ql8r$mq5=Lp|>tA3r4k98%kIOryqn0pXkC&qrg zPP6;b0HTQA;H7nAQ)YScBHPr3`4d0SWmy8+Ox)_w5wKug**n=>u1GiVXBac|D*P#S zVV?_&bp4kebM5_dscZMCN%Xj*dwr+&iOrqThjPvt|6sgay87L%tk94LH^!$-vvJBB zw9U?Ma^bi8S8izQG$1uq-*|?k7^~Ob_O;*F-T16b=%d>=WP9N}3$q1G+|ix4Zx&;F zD=W_5xvcHif02GT_TtQw4-e^)_kMX1KOj*rEq~-gy_Xf031)f7o4eF~oQ}?}Gy5SXQS4K5WOslmnD*+lPtI!o}GqpsDs+TM;9Ro;2>*-+LmYRmDy-cJMSLPPt<+ua^# z)r*V@YB8OxO3Nv!RY_t@Q~A?wRc}~+a)IJFqZu=0_a~)%8@H8B!O80mCazm4?tb4n zJ-}QZn1AF%rR-|W=*|>C>};^r@zC1byVpXpkoTc;tPzU;#JwEe?ln0T?U;bG(ChX%(ot3Eri*KL#Dg1lM$ zDn>hSNW+)~Cui2zqEyS(ysP??bt}^-sIg3+zVz5KeZ=ejBP7@5mBWV&dw6#E<>a^P z9Vpvx2R>CjkyrfiTzGAx>lb}CS51GJsmyb>c{ReJKi4%lzs-GwVYtJ^MXSe>cnNWk z+_o0`Yf~EKZ#PUUJ}*@K zdiPyn+@=V(vhjD$>0%-uIGwb3FEn_}u#0MV>eh5{m;WiE>dmNe&GW=Jnxz+;vZ^Dl zY-<1Rb$?M#xt{hg@IB=*^g4L-rxen|@MAw$+Huze=?AM$MLaR}@{ScPB_8hA2VU$X z#}8h=FLuJ(eZnORdkzMrk&M_6EHsLb4Zm`v5Dy-fpTWxXvWbFfDO8USP!nvcK4;Otq-PrAGYzt@x z4prUft4^q{x{Hk{@ZZf5rIf{4q}k$Ky+XfgVSS&)aq*y=e{o_Z^52j`9UCIN2nAr_ z6WdhHP>~xEgHk;l@+A-N11w zW%&S`+oWduoMhWW-L6R!V)OKDmu$AHSF<5{csJidFYMkEda%3&AX3HX<_{g7>vgF; zw$Lkl(awiqZb>U)b+(`L+45=otCoAMj~!JAqFR^UKH~Z6o&51j*>brwiLnwsWmZ1U zV{^*}w0^bU#W(5jilGyJy?4PL)A-DvH~>SC)eAB50-vWZ$9*) z(?iE7s@*))8bwbaYC)uL!KvGWO|11A-~GPE(Db|GEP#5EM(QvBkP`ALIdZ;cCZc0} z-uA**)7Oq~|J-avb*#|nINRrW(+L<=dVW)t=UHjgS?{qU_k2aA$oB^vJh{rUBX;qu zY37VeUAK|z6Pz@CD}VL=CCzXYtQ2Rn7Wvz)HhvCEmnf*d$C9@@rK(xw7q2Y1=qTyJ zW92P$nH0>*n>G1)5j_?c@$OA)o&7-k>jM-~Q55 z@?|rfT4H+hz?(K>yM5R<;(Dq5*Z5j}`O?Ww8G|e2H~9FFjg{ZzPLIwn8J}kJ(quq_yH++Bc>lceR*|z5`I-v}Fh|%+&YYJBQ*5ndg;z8YWrCJ3%Dw!Qat z&)%~qY=QC9+o>AD%O$*5HWK1JXa=kTfmH`^_(d3ee$sd-TzF z119cKjb0vqhPqi4rl>BZk}qDetccc?O2&4(Co@OqjeITzS02sTQ5X=z4xT`&-jb}v z_HO~dbhJb80*6o1b2-Ng>hrIy&0Brz^41^C>AvCZK3DnN)2aOXCnMc{Ej+iwYR=*= zhop+Ey7?C?hO`U!+jUf@t)8`UT61q=$i;>?hD zj?zboLVXm`l|{i=u9>Qn7+r8E>=Zy*+#-7s(N3f~<4!8s5h}Z=9`s4X9O0A=~ zMuEKj%_uq_fs*iA#TAriN9ZPZ6{3T=R4{|36PP7kYN^q!p%~RuEJ03igX}w`c3PyD z2tA2H6O_x`i>e*yQX&OAaAy6jGNS^$Mk`TO4?9R5B)HeWpk%~sKVXn(6k$^Ity_!+ z^j*g~4nVmGFUB7{k?bl%f$l!oc$CPXb^(1Uk%c82>C)x}fx1};w18y2n492y`zb_iy>N$!f*nc&}&C7S~!5Q3?iy7Pj%$$C}NJaYP(%!eBxzY%YhH z8_P5Sd)(0huOf?a#ETJ;AMwF}<4LD0RpluEh=h{(fKGQ)a zeAE9I;dlhZbSz+Rv=$e z!sGh&<4_u#ove|Q3Fx;cJdLd49k&GJmtnAxP-QX0iARKcz1|H^MUrB3_}W5W)}N~gbHQ^@m$CxFnh3h7Z?Sj1Soe# zze0RTSnq_VA~H6vkrTu)PAAY0>0f-(itU#S<59|KD!#>7aP_lA@vN~el*mCz4=V{C zM?J%@tkGC%T`^P>ik|VXgb_c$)?Jxtlzn?BwgM%iNL8!0LPi<=04QeG0TtwUMf zJ(kO}*umsgHlz~Rv+l-|+`%Z}y3)xHQj0Dt3=^|M??5+C+QIFvQ8>xnkp7?vd`n zn4^=AZsFYL;Z2qexTTXZ%LC6b%^n2&wlci!CS;V=56+#g3AjI1jPKm}$V6;Rhd!`o(5CVT#tq3XW>_3H0`R}=W3 zSNQjot1taWwff&m{GI%K|51}4vNbg5V@_#pB$3=S!rhh}D_@hbKLw{6t~Cp@AVioe!?_f4~1Y?vKxU z#s>N!k_7q(ib7rgTt@$K^dFu&|JH5cI@J!fTiDH*>CFH8FV14ocBv%PFRZ6C;bRBE z?=1OPy8pXa)%K}3b42yjJ%7WHSb6Tue5%A#P?seeE9yY(Aze= zXHKZ)W4_4WXKPUSxCPr#{rBHGPI`J&tjGN}`M-66_=JQ61^RyM72!v0_WMg?iS2J2 zsHeN-_kNPE(0V`iJN%PZ{Jja}U%o`*8!kdkB#7q!1Udw@SNxZdVfOzmC@S^+Z$baw z67nzS{BKD5m!6e>5S9N?2#^H!>TPTCyA1xh?dY%FMSo~Q`WxWC>O1)(;7laWf8IX7 z_3-=^#h-f${)i&EkI8@5VenU!e=czUBT7*}lmA)n{#WonmvR3QJkQMJ-xYQL4bksp y{jY?S+o4{^=f;Qf2L=aF7AuyV`5^4{#zpcZFT7R_J06YFfelf literal 0 HcmV?d00001 diff --git a/packages/DataTables.Mvc.0.1.0.68/lib/DataTables.Mvc.Core.dll b/packages/DataTables.Mvc.0.1.0.68/lib/DataTables.Mvc.Core.dll new file mode 100644 index 0000000000000000000000000000000000000000..abe1a56e11a6e6bf2a43ae8ac1aa047b70b3524f GIT binary patch literal 19968 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 literal 0 HcmV?d00001 diff --git a/packages/DataTables.Mvc.0.1.0.68/tools/install.ps1 b/packages/DataTables.Mvc.0.1.0.68/tools/install.ps1 new file mode 100644 index 000000000..7e1f5357f --- /dev/null +++ b/packages/DataTables.Mvc.0.1.0.68/tools/install.ps1 @@ -0,0 +1,5 @@ +param($installPath, $toolsPath, $package, $project) + +$path = [System.IO.Path] +$appstart = $path::Combine($path::GetDirectoryName($project.FileName), "App_Start\DataTablesMvc.cs") +$DTE.ItemOperations.OpenFile($appstart) \ No newline at end of file