Jak zadat lidi jako obor hledání / Zdroj obsahu pomocí služby SharePoint 2013 REST API

Měl jsem důvod pro práci s SharePoint 2013 Rozhraní API pro vyhledávání pomocí REST prvním. Chtěl jsem se hledat pro lidi, není dokumenty. Klíč učení, zde je, že zadáte zdroje obsahu prostřednictvím identifikátoru GUID (nebo alespoň v tomto případě). Následující úryvek ukazuje jQuery jak:

    loadExpertsAsync: funkce() {

        jQuery.support.cors = pravda;

        $.AJAX({
            Adresa URL: to.CreateFullApiUrl() +
                "?querytext = "portály"&SourceId = "b09a7990-05ea-4af9-81ef-edfab16c4e31"" +
                "&selectproperties ='LinkedInProfileUrl,GoogleCirclesProfileUrl,BALargeProfilePictureUrls,BAGridPictures,WorkEmail,Dovednosti,AboutMe,Zájmy,Pracovní funkce,PastProjects,PictureURL,PreferredName,TwitterHandle,LinkedInProfileUrl,PreferredName,GoogleCirclesProfileUrl'" +
                "&RowLimit = 99",
            Metoda: "ZÍSKAT",
            záhlaví: { "Přijmout": "aplikace/json; OData = verbose" },
            mezipaměť: NEPRAVDA,
            úspěch: funkce (výsledek) {

V mém případě, Já běh API proti SharePoint online. Chcete-li získat identifikátor GUID, Tohoto postupu:

  1. Přístup Centrum správy služby SharePoint
  2. Vyberte "Hledat" z levé ruky navigace
  3. Vyberte výsledek zdroje "spravovat"
  4. Zvolte "Místní lidé výsledky"
  5. Podívejte se na URL.

Moje adresa URL vypadal trochu jako:

https://xyzzy-admin.sharepoint.com/_layouts/15/searchadmin/EditResultSource.aspx?level=tenant&sourceid=b09a7990%2D05ea%2D4af9%2D81ef%2Dedfab16c4e31&view=1

Parametr sourceid je, co pracoval pro mě.

(Chápu, že ID zdroje může být ve skutečnosti jakousi stálou věc s SP, but I’ll always check anyway 🙂 ).

</Konec>

undefinedPřihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Příklad SharePoint ostatní hovory

Zde je sada vzorku REST hovorů, které pracují pro mě a může vám pomoci také. Od 02/2014, there are two examples 🙂

  1. Odkaz na sloupec obsahující mezery v názvu
  2. Referenční sloupec vícenásobného výběru
  3. Vyhledávání lidí přes REST

 

Přidám k tomu, jak plyne čas.

Zde jsou některé užitečné inkousty, našel jsem i:

Odkaz na sloupec obsahující mezery v názvu

Vytvořit vlastní seznam s názvem "Autor blogu" (mezera mezi blogu a autor).

$select odkazovat tento sloupec je:

image

Jednoduše nahradit prostor "_x0020_". _X0020_ v mnoha příkladech vidíme přes Internet a zbytek se neliší.

Pokud to neuděláte, Budeš se chybová zpráva takto:

Výraz “Autor blogu” není platný.

Snadné.

Referenční multi-SELECT vyhledávací sloupec

Nastavit:

  1. Vytvořit vlastní seznam s názvem kategorie.
  2. Přidejte některé kategorie. Přidala jsem thusly kategorie:image
  3. Vytvořit další vlastní seznam s názvem MockBlog a přidejte kategorie jako sloupec vícenásobného výběru (nebo sloupec webu, pokud to je, jak se role).

Přidávat položky do seznamu Mockblog a jste připraveni.

Styl volejte Ajax pomocí jQuery bude vypadat přibližně takto:

serverUrl  = "/_api-web seznamy GetByTitle("MockBlog")/položky" +
             "?$Vyberte = titul,Kategorie/titul,Blog_x0020_Author/titul" + 
             "&$expand = Blog_x0020_Author,Kategorie";

Sdělujeme SharePoint, "Dej mi titul pro všechny kategorie (Kategorie/titul). Skutečné hodnoty pro Titul od $Rozbalitseznam kategorie Ing." (Můj klidný parafráze je asi dost volné, ale to jak jsem výklad, že).

Pokud děláte to přes JavaScript a použití Šumař se podívat na výstup, dostanete něco takového na oplátku:

 

image

(Výše uvedené je JSON objekt)

Vyhledávání lidí přes REST

Jsem blogged o tomto odděleně. Klíčem je určit parametr sourceid, jehož hodnota je identifikátor GUID zdroje obsahu místní lidé. (Zdroje obsahu se kdysi říkalo obory a je oh můj tak těžké označovat vše prostor pro mě!).

Přečtěte si více o tom zde: http://www.mstechblogs.com/paul/?p=10385

 

</Konec>

undefinedPřihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Rychlé a snadné: Vytvořit web služby SharePoint pomocí webové služby REST

Existuje mnoho zdrojů, kolem které ukazují, jak na to, ale nemohl jsem najít komplexní go na odkaz, tak jsme tady.

Můžete vytvořit web služby SharePoint pomocí REST API.  Zde je příklad, plně pečené:

<!--
    SiteRequestForm.html: Shromažďování informací a vytvořit web pro uživatele.
-->

<centrum>
<Tabulka>
    <TR>
        <TD>Název webu:</TD>
        <TD><vstup Typ= "text" Jméno= "SiteName" ID= "SiteName" /></TD>
    </TR>
    <TR>
        <TD ColSpan= "2">
            <vstup Typ= "Odeslat" ID= "CreateSiteButton" hodnota= "Vytvořit web" />
        </TD>
    </TR>
</Tabulka>
</centrum>

<skript src="../Plugins/jQuery-1.11.0.min.js"></skript>

<skript>
var CreateSiteLogicContainer = {

    createSiteData: {
            "parametry": {
                __metadata: { "typ": "SP.WebInfoCreationInformation" },
                Adresa URL: "Paultest1",
                Titul: "Paultest1",
                Popis: "odpočinek vytvořil web Paul!",
                Jazyk: 1033,
                Webovou šablonu: "sts",
                UseUniquePermissions: NEPRAVDA
            }
    },

    createSite: funkce () {

        jQuery.support.cors = pravda;

        CreateSiteLogicContainer.createSiteData.parameters.Url = $("#SiteName").Val();
        
        $.AJAX({
            Adresa URL: "https://bigapplesharepoint.sharepoint.com/NBAIADev/_api/web/webinfos/add",
            Metoda: "POST",

            záhlaví: {
                "přijmout": "aplikace/json; OData = verbose",
                "content-type": "aplikace/json;OData = verbose",
                "X-RequestDigest": $("#__REQUESTDIGEST").Val()
            },

            údaje: JSON.stringify(CreateSiteLogicContainer.createSiteData),

            úspěch: funkce () { Výstraha("úspěch"); },
            Chyba: funkce () { Výstraha("Chyba"); }

        });
    },

    wireUpForm: funkce () {
        $("#CreateSiteButton").klepněte na tlačítko(funkce () {
            Výstraha("Chystáte se pokusit se vytvořit web.");
            CreateSiteLogicContainer.createSite();
        });
    }


}

CreateSiteLogicContainer.wireUpForm();

</skript>

Když se úspěšný, dostanete paket JSON odpověď takto:

image

Moje klíčové myšlenky a poznatky z tohoto zahrnují:

  • Tento přístup používá jQuery.  V mém případě, Moje knihovna jQuery se nachází v ".../ plugins. "  Budete chtít změnit, aby ukazoval na vaše oblíbené místo JQ.
  • Můžete kopírovat a vložit to celý fragment kódu do webové části Editor obsahu na stránce, a to by mělo fungovat dobře.  Budete chtít změnit koncový bod volání API a ujistěte se, že odkazujete JQ správně.
  • Adresa URL je relativní váš API koncového bodu.  V mém případě, je vytvářet podřízené weby pod https://bigapplesharepoint.com
  • Není nutné poskytovat obsah délka. Některé příspěvky blogu a MSDN dokument naznačuje, že, ale stalo se pro mě automaticky, což Předpokládám je zpracovávaná samotné volání .ajax $.
  • Tato linka je nutné vyhnout se "zakázaná" reakce: "X-RequestDigest": $("#__REQUESTDIGEST").Val().  Existují jiné způsoby, jak to udělat, ale je to docela hezký.  Ztratil jsem odkaz na blog, která poskytuje tento zástupce.  H/T na vás, tajemný blogger!

Hodně štěstí a doufám, že to pomůže někdo.

</Konec>

undefinedPřihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Překonat nepříjemný problém s relativní adresy URL v SharePoint Quick Launch

Chtěl jsem přidat odkaz na panelu Snadné spuštění navigace na druhý den a řekl mi, SharePoint:

image

Čistě textové verze, která je:

Zajistit, že adresa URL je platný a začíná buď platný znak (znak čísla (#) nebo lomítko (/)) nebo platný podporovaný protokol (například, ' http://’, ' https://’, ' soubor://’, ' ftp://’, ' mailto:’, ' Novinky:’).

"Blech a neštovice!"Řekl jsem.

Řešení pro to je najít známé odkaz v panelu Snadné spuštění a její chování přepsat pomocí JavaScript.

Pro tento test, přidáte nový odkaz na web testovací thusly:

image

Použil jsem jQuery. To vyřešit, Získejte nějaký JavaScript a jQuery na stránku vaší oblíbenou technikou a s řádkem kódu, jako je tento:

 

$(dokument).připraven( funkce () {

    $("a:obsahuje('Testovat URL náhradní')").klepněte na tlačítko(funkce () { Výstraha("změněné chování!"); návrat NEPRAVDA;});

});

A strejda je Bob.

JQuery volič najde každý <a> značka, která má "Testovat URL náhradní" v názvu. Možná budete chtít najít melodii, která podle odkazu a tak.

Klikněte(funkce() přepíše, co SharePoint by to udělal, když uživatel klepnul. Ujistěte se, že jste "return false", jinak to bude dělat svoje věci a zkuste href věc příliš, což je téměř jistě není váš cíl.

To bylo provedeno, a test v prostředí služby SharePoint online, ale měl by fungovat i v 2010 a starší příliš.

</Konec>

undefinedPřihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Rychlé a jednoduché: SharePoint REST zavolat pouze výnosy 100 Záznamy

Pracoval jsem na protilehlé internetové stránky pro mého SharePoint praxi v New York a používá mnoho volání JavaScript a odpočinku pro zobrazování obsahu.

Během hlavního vývoje, Jsem jen vytvořit malé dataset s 10 nebo tak řádky do vlastního seznamu a ostatní telefony vytáhl odtud.  Kdysi jsem vrazil seznam má několik set řádků dat, testování na předpokládaný růst, Zjistil jsem, že jsem dostala přesně 100 řádky vrácené zpět na mé volání REST.

Jde velmi jednoduchou věc řešit.  V mém případě (a věřím, že ve většině případů), Výchozí hodnota REST volání do služby SharePoint (a možná i jako průmyslový standard?) návrat 100 řádky.  Chcete-li vrátit více, než je výchozí, pomocí parametru $top na vaše volání, stejně jako v:

ZÍSKAT /Insights Dev/_api/web/lists/GetByTitle("MockBlog")/položky?$Vyberte = ID,Titul,Kategorie/titul,Blog_x0020_Author/titul,DatePublished,BlogSummary&$expand = Blog_x0020_Author,Kategorie&$filtr =&$Top = 9999

Vybral jsem 9999 v tomto případě od té doby vím, že growth-wise, nebude existovat více než 200 nebo tak řádky přidány do tohoto seznamu za rok.  Pokud se stane nemotorný, Můžeme realizovat některé stránkování po silnici.

</Konec>

undefinedPřihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Rychlé a jednoduché: Řešení "parametr neplatný URL” problém s UpdateListItems v lists.asmx

Při práci s UpdateListItems prostřednictvím lists.asmx, je to snadno vygenerovat chybu:

Parametr neplatný URL.

Zadaná adresa URL obsahuje neplatný příkaz nebo hodnoty. Zkontrolujte znovu adresu URL.

Tuto chybu můžete získat, když jste zapomněl zahrnout ID v seznam polí k aktualizaci.  Toto, stejně jako mnoho z těchto SP webových služeb, je poněkud neintuitivní, vzhledem k tomu, že je třeba zahrnout ID atribut ID <Metoda> prvek.  A vy nejste aktualizovány ID a pravděpodobně nikdy chtějí v prvé řadě.

Tento obálky SOAP funguje:

<soapenv:Obálka xmlns:soapenv =' http://schemas.xmlsoap.org/SOAP/ENVELOPE/'>
  <soapenv:Tělo>                      
    <UpdateListItems xmlns =' http://schemas.Microsoft.com/SharePoint/SOAP/'>                     
      <Jméno_konference>{C712E2EA-54E1-47AD-9D99-1848C7773E2F}</Jméno_konference>                     
        <aktualizace>                     
         <Dávkové PřiChybě ="Pokračovat">
          <Metodu ID ="1" CMD ="Aktualizace">
            <Název pole ="CooperativeLock">uzamčeno!</Pole>
            <Název pole ="ID">1</Pole>
          </Metoda>
        </Dávka>                     
        </aktualizace>                
      </UpdateListItems>             
  </soapenv:Tělo>         
</soapenv:Obálka>

Pokud vyřadíte z referenční pole ID pak budete mít obtěžující zpráva "Neplatná adresa URL parametr".

</Konec>

undefinedPřihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

 

Chudák je ukládání do mezipaměti v JavaScriptu

[TL;Dr. verze: používají soubory cookie k ukládání výsledků asynchronní volání; okamžitě vykreslovat výsledky minulých asynchronní volání a poté je ověřit po načtení stránky.]

Pracoval jsem na intranetovém webu SharePoint pro klienta, že funkce, mimo jiné, stylizované sekundární navigace, jejichž možnosti nabídky jsou spravovány prostřednictvím pravidelné staré vlastní seznam.  Myšlenkou je, že klient dostane k ovládání menu "jejich" stránek bez ovlivnění nebo ovlivnění globální navigační uhasit jím.

(je něco neuvěřitelně podvratné o přidání CEWP, který odkazuje na soubor HTML, který načítá některé CSS a JS zásadně změnit téměř vše o webu chování..., ale to je na jiné místo)

Kód pro tento docela jednoduchá:

Bolavé místo tady je, že pokaždé, když někdo udeří jedním z stránek webu, jeho webový prohlížeč je oslovit získat položky ze seznamu.  Jakmile dev je kompletní a testování prokázal věci být stabilní a úplné, Toto volání je zbytečné více než 99% času od menu se mění jen zřídka.  Má také zvláštní vliv UI, které je běžné v tomto odvážném novém světě hyper ajaxy webových stránek – stránka vykreslí a teprve potom menu vykreslit.  Je nervózní a rozptylující podle mého názoru.  A nervozita. Tak, ukládání do mezipaměti. 

Upravil jsem logiku thusly:

  • Vyhledejte soubor cookie v prohlížeči, který obsahuje nabídku, když jsem naposledy četl
    • Pokud nalezen, vykreslení to okamžitě.  Nečekej na stránce na dokončení načítání.  (Musíte se ujistit, že HTML je strategicky umístěn zde, ale to není těžké udělat).
  • Čekat na stránce dokončení načítání a asynchronní volání načítání menu položky ze seznamu pomocí REST nebo lists.asmx nebo co
  • Porovnejte, co mám proti souboru cookie
    • Odpovídá-li, Stop
    • Jinak, pomocí jQuery, dynamicky naplníte parta, pokud <li>je v <ul>
  • Veškeré formátování pomocí CSS
  • Zisk!

Někteří z vás se bude říkat, "Hej! neexistuje žádný skutečný mezipaměti děje protože čtete menu stejně každý jednotlivý čas.”  A máš pravdu – nedám na serveru jakýkoliv druh přestávky.  Ale protože volání asynchronní a se stane po stránce je první plně vykreslí HTML datové, to "cítí" lépe reagovat na uživatele.  Menu vykreslí docela jako stránky kreslí.  Pokud se změna stane menu, uživatel je vystaven nervózní re-kreslit menu, ale jen jednou.

Existuje několik způsobů, jak provést tuto mezipaměť efektivnější a pomohli server ve stejné době:

  • Zavést pravidlo, že "cookie cache" je platná pro minimálně 24 hodin, nebo nějaké jiné časového rámce. Tak dlouho, dokud neexistuje žádný cookie vypršela, pomocí souboru cookie menu snímek a nikdy neuhodil server.

Dobře..., to je vše, které přicházejí na mysl hned teď :). 

Pokud má někdo nějaké chytré nápady zde rád bych znát.

A konečně – tento postup lze použít pro jiné věci.  Tohoto klienta stránka má několik věcí, řízené daty na různých stránkách, Mnozí z nich mění poměrně zřídka (jako jednou za týden nebo jednou za měsíc).  Pokud cílíte na konkrétní oblasti funkcí, vstřícnější UI můžete dát obsah z úložiště místní soubor cookie a vykreslování okamžitě.  Připadá mi to rychleji k uživateli i v případě, že se neukládají na serveru žádné cykly.  Jste může rozhodování o některých podmínkách a spouště rušit platnost mezipaměti místní soubor cookie uložte cykly na server.  To je vše situační a diletantský věci a opravdu nejzábavnější :). 

</Konec>

undefinedPřihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Jak: Konfigurace jednotky Test a Test pokrytí s QUnit.js a Blanket.js pro kancelář 365 Aplikace SharePoint

Úvod

Jsem zkoumá testování a testování pokrytí pro JavaScript, když pracuji na nové aplikace SharePoint pro SharePoint online v kanceláři 365 apartmá.  Zřejmý výzkumné cesty mě vedly k Qunit.js a hned po tomto, do Blanket.js.

QUnit dovolte mi nastavit unit testy a seskupit je do modulů.  Modul je prostě jednoduchý způsob, jak uspořádat související testy. (Nejsem si jistý, že ho používám, jak bylo zamýšleno, ale funguje to pro mě zatím s malou sadou testů, které jsem doposud definovali).

Blanket.js se integruje s Qunit a bude mi ukázat skutečné linie JavaScript, které byly – a hlavně – nebyly spuštěny ve skutečnosti během spuštění testů.  To je "pokrytí"-linky, které se vztahuje testu, zatímco jiné nejsou.

Mezi nastavení dobré testovací případy a zobrazení pokrytí, můžeme snížit riziko, že náš kód má skryté vady.  Dobré časy.

Qunit

Za předpokladu, že máte Visual Studio projekt nastavení, Začněte stažením balíčku JavaScript z http://qunitjs.com.  Přidáte JavaScript a odpovídající CSS k řešení.  Důl vypadá takto:

image

Obrázek 1

Jak můžete vidět, Byl jsem pomocí 1.13.0 tehdy jsem napsal tento příspěvek blogu. Nezapomeňte si stáhnout a přidání souboru CSS.

To z cesty, Dalším krokem je vytvořit nějaký druh testu postroj a referenční Qunit bitů.  Jsem testování spoustu funkcí v souboru skriptu s názvem "QuizUtil.js", tak jsem vytvořil stránku HTML s názvem "QuizUtil_test.html", jak je uvedeno:

image Obrázek 2

Zde je kód:

<!DOCTYPE HTML>
<HTML xmlns.= "http://www.w3.org/. 1999/xhtml">
<hlava>
    <titul>QuizUtil test s Qunit</titul>
    <odkaz rel= "šablony stylů" HREF="../CSS/qunit-1.13.0.CSS" />
    <skript Typ= text/javascript"" src="QuizUtil.js" dat obal></skript>
    <skript typ ="text/javascript" src ="qunit-1.13.0.js"></skript>
    <skript typ ="text/javascript" src ="blanket.min.js"></skript>

    <skript>
        modul("getIDFromLookup");
        Testovat("QuizUtil getIDFromLookupField", funkce () {
            var goodValue = "1;#Paul Galvin";

            rovná(getIDFromLookupField(goodValue) + 1, 2), "ID [" + goodValue + "] + 1 mělo by být 2";
            rovná(getIDFromLookupField(nedefinované), nedefinované, "Nedefinované vstupní argument by měla vrátit výsledek nedefinovaný.");
            rovná(getIDFromLookupField(""), nedefinované, "Prázdný vstupní argument by měla vrátit hodnotu.");
            rovná(getIDFromLookupField("gobbledigood3-thq;dkvn ada;skfja sdjfbvubvqrubqer0873407t534piutheqw;VN"), nedefinované,"By měl vždy vrátí výsledek kabriolet na celé číslo");
            rovná(getIDFromLookupField("2;#jiná osoba"), "2", "Kontrola [2;#jiná osoba].");
            rovná(getIDFromLookupField("9834524;#hodnota Long"), "9834524", "Velké hodnoty testu.");
            notEqual(getIDFromLookupField("5;#Každý, kdo", 6), 6, "Testování notEqual (5 není rovno 6 pro tento příklad: [5;#Každý, kdo]");

        });

        modul("htmlEscape");
        Testovat("QuizUtil htmlEscape()", funkce () {
            rovná(htmlEscape("<"), "&lt;", "Únik méně než operátor ('<')");
            rovná(htmlEscape("<div třída =  "someclass">Nějaký text</div>"), "&lt;div třída =&quot;someclass&quot;&gt;Nějaký text&lt;/div&gt;", "Složitější testovací řetězec.");
        });

        modul("getDateAsCaml");
        Testovat("QuizUtil getDateAsCaml()", funkce () {
            rovná(getDateAsCaml(nové Datum("12/31/2013")), "2013-1231:00:00:00", "Testování naprogramováno datum: [12/31/2013]");
            rovná(getDateAsCaml(nové Datum("01/05/2014")), "2014-01-05T:00:00:00", "Testování naprogramováno datum: [01/05/2014]");
            rovná(getDateAsCaml(nové Datum("01/31/2014")), "2014-0131:00:00:00", "Testování naprogramováno datum: [01/31/2014]");
            rovná(getTodayAsCaml(), getDateAsCaml(nové Datum()), "getTodayAsCaml() by měla rovnat getDateAsCaml(nové datum())");
            rovná(getDateAsCaml("nesmysl hodnota"), nedefinované, "Snažte se dostat datum hodnotu nesmysl.");
            rovná(getDateAsCaml(nedefinované), nedefinované, "Pokuste se získat data [nedefinované] datum.");
        });

        modul("getParameterByName");
        Testovat("QuizUtil getParameterByName (z řetězce dotazu)", funkce () {
            rovná(getParameterByName(nedefinované), nedefinované, "Zkus se nedefinovaný parametr by měla vrátit nedefinované.");
            rovná(getParameterByName("neexistuje"), nedefinované, "Pokuste se získat hodnotu parametru, když víme, že parametr neexistuje.");

        });

        modul("Soubory cookie");
        Testovat("QuizUtil různé funkce souborů cookie.", funkce () {
            rovná(setCookie("test", "1", -1), getCookieValue("test"), "Získat soubor cookie, který jsem měla fungovat.");
            rovná(setCookie("anycookie", "1", -1), pravda, "Nastavení platné vaření by měla vrátit"true".");
            rovná(setCookie("crazy cookie název !@#$%"%\^&*(()?/><.,", "1", -1), pravda, "Nastavení názvu špatný soubor cookie zpět 'false'.");
            rovná(setCookie(nedefinované, "1", -1), nedefinované, "Předávání definován jako název souboru cookie.");
            rovná(getCookieValue("neexistuje"), "", "Cookie neexistuje test.");
        });

    </skript>
</hlava>
<tělo>
    <div ID= "qunit"></div>
    <div ID= "qunit svítidlo"></div>

</tělo>
</HTML>

Existuje několik věcí, které se zde děje:

  1. Odkazování na můj kód (QuizUtil.js)
  2. Odkazování na Qunity.js
  3. Definice některých modulů (getIDFromLookup, Soubory cookie, a další)
  4. Umístění <div> ID je "qunit".

Pak, Jsem jen vytáhnout tuto stránku a dostanete něco takového:

image

Obrázek 3

Pokud se podíváte na horním, Máte několik možností, dvě z nich jsou zajímavé:

  • Skrýt testy: Docela zřejmé.  Mohou pomoci vaše oči vidět problémové oblasti a mnoho nakupit.
  • Modul: (rozevírací seznam): To bude filtrovat testy dolů jen ty skupiny testů, které chcete.

Co se týče testy samy – pár poznámek:

  • Je samozřejmé, že musíte napsat kód tak, že je to v prvé řadě testovatelné.  Použití nástroje může pomoci prosadit kázeň. Například, Měl jsem funkci nazvanou "getTodayAsCaml()”.  To není velmi testovatelné, protože to trvá žádné vstupní argument a testování rovnosti, Musíme neustále aktualizovat testovací kód tak, aby odrážel aktuální datum.  Já refaktorování tím přidáním dat vstupní parametr a pak předá aktuální datum, kdy chci, dnešní datum ve formátu CAML.
  • Qunit rámec dokumenty své vlastní testy a vypadá to docela silný.  To může dělat jednoduché věci, jako je testování rovnosti a má také podporu pro ajax styl volání ("skutečný" nebo zesměšňován, pomocí vašeho oblíbeného mocker).
  • Prochází procesem také síly, abyste si při okraji případy – co se stane s "nedefinovanou" nebo null je předán do funkce.  To usnadňuje mrtvý otestovat tyto scénáře se.  Dobré věci.

Krytí s Blanket.js

Blanket.js doplňuje Qunit tím, že sledování skutečné řádky kódu, které vykonávají v průběhu spouštění vašich testů.  I když že je to úplně samostatná aplikace integruje přímo do Qunit, to hraje pěkně – opravdu vypadá, že je to jedna bezproblémové aplikace.

To je blanket.js v akci:

image Obrázek 4

image

Obrázek 5

(Ve skutečnosti budete muset kliknout na políčko "Povolit krytí" v horní [viz obrázek 3] aby to bylo.)

Zvýrazněné řádky v obrázku 5 nebyly provedeny některou z mých testů, Takže musím vymyslet test, který způsobuje jejich spuštění, pokud chci plné pokrytí.

Získejte blanket.js práci podle následujících kroků:

  1. Stáhnout z http://blanketjs.org/.
  2. Přidejte do projektu
  3. Aktualizovat stránku testovací pás (QuizUtil_test.html v mém případě) takto:
    1. Referenční kód
    2. Ozdobte váš <skript> referenční takhle:
    <skript Typ= text/javascript"" src="QuizUtil.js" dat obal></skript>

Blanket.js zvedne atribut "data obal" a má své kouzlo.  Háky do Qunit, aktualizuje uživatelské rozhraní přidat možnost "Povolit pokrytí" a voila!

Shrnutí (TL; DR)

Použít Qunit k napsání testovacích případů.

  • Stáhnout
  • Přidejte do projektu
  • Napište zkušební stránky postroje
  • Vytvořit vaše testy
    • Některé z kódu být testovatelné refaktorovat
    • Být kreativní!  Myslete na crazy, možné scénáře a testovat je stejně.

Pomocí blanket.js zajistit pokrytí

  • Ujistěte se, že Qunit pracuje
  • Stáhnout blanket.js a přidejte jej do projektu
  • Přidejte jej do testovací stránky postroje:
    • Přidat odkaz na blanket.js
    • Přidejte atribut "data obal" do vašeho <skript> Značka
  • Testy Qunit.

Nikdy jsem žádnou z předtím a měl nějaké základní věci v několik hodin. 

Šťastný testování!

</Konec>

undefinedPřihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Oblek, který budete nosit?

[Rychlá Poznámka – to je docela dlouhý příspěvek na práci otevření pro mé skupiny v New Yorku a je třeba žít v tri-state oblasti, pokud máte zájem.]

Připojil jsem Slalom konzultace nad 18 před měsíci a proto to mně nejtrvalejší od 2007. Neplánoval jsem to tak. Před řetězec práci poskakování, začalo se mi skok do světa SharePoint, Byl jsem na jednom místě pro jedenáct let. Konečně jsem našel nový, trvalé místo pro práci na dlouhou trať na Slalom.

Toto místo se rozrůstá a potřebuji pomoct kontrolovat. Druh pomoci, kterou potřebuji se obvykle nazývá "Návrhář SharePoint řešení", ačkoliv jsem našel slovo architekt přes nebo nesprávně použije v prostoru SharePoint pro docela nějaký čas teď. Bojovala jsem o tom, jak na blog o tom. Já nechci uvést pouze několik bodů odrážek v kostky/monstrózním stylu. Má vynikající nábor vrstevníci dělali to již :). Tak, Rozhodl jsem se přijmout přístup "den v životě". Přečtěte si ji a za:

1) Pokud odvolání a

2) Zda víte v kostech, že to dokážeš.

Pokud ano, kontaktujte mě (Paul.Galvin@slalom.com) a Mluvme.

Jsou to, co můžete očekávat, že v typické týden/měsíc jako architekt řešení v mém týmu:

  • Projektů, často více než jeden po druhém. Některé projekty jsou velké a tak by si že jeden projekt. "Spuštění" projektu znamená, že máte dohled a odpovědnost za celkovou kvalitu dodávky. Téměř v každém případě budete mít PM a opravdu silný tým devs, BAs, UX lidé, atd., podporovat vás. Ale budete mít hlavní tvář, kterou klient vidí, vztahy důvěryhodnosti, atd. Neexistuje žádný skrytí ve stínech v této roli :). Budete účtovat tuto dobu a cílem je vás dost práce, k tomu 80 Procento času.
  • Pomoc s papírováním – prasnic, RFPs, paluby – všechno dobré věci. Myslím, že máme naše SVINĚ proces velmi těsné a pevné, takže je to poměrně stereotypní. Pokud jste zvyklí psát prasnice dnes, Náš proces není bude výzvou pro vás. RFPs – tyto jsou trochu těžší. Mají tendenci být na zakázku v přírodě s a RFPs obvykle tahat v několika různých autorů. Je to dobré i špatné, ale hlavně dobrá. To může získat scrambly, když potřebujeme žonglovat potřebu vynikající služby zákazníkům a také se snaží získat novou práci. Pravděpodobně nebude vlastní RFP, ale budete vyzváni přispívat částí.
  • Prodejní volání, ale není blíže. V průběhu měsíce, lze očekávat, že jít na několika obchodních hovorů s naším prodejním týmem. Budete se malých a středních podniků v místnosti, poznámky a spoluvytvářet řešení. Avšak, nebudete se zeptal nebo očekává úchyt prodejního cyklu od začátku do konce. Není třeba "prodat,"prostě musíte být klidný hlas odborných rozumu v místnosti. To vzbudí důvěru, a proto jsi tam. Samozřejmě, Pokud se vám líbí, prodej, pak je tu prostor pro růst zde příliš.
  • Pomoc s náborem. Máme nějaký druh postoupení program, Takže pokud víte, že opravdu silný lidi ve Společenství, které by měly být součástí Slalom, tímto způsobem můžete využívat. Jsme vyčlenili personalisty (Kdo jsou vynikající) Chcete-li lví podíl tohoto druhu práce. Skutečná pomoc je pohovory s uchazeči – jsou dobrou volbou kulturně? To vědí své věci? Mohou udělat * mé * život jednodušší? 🙂 This comes in spurts, párkrát za měsíc, Ačkoli v některých měsících by si to vůbec nešlo.
  • Umožňují definovat osvědčené postupy, vybudovat naše IP a nás konkurenceschopnější na trhu. Jste zkušený kluk/holka. Byl jsi za roh – nejen ve službě SharePoint, ale máte zkušenosti v jiných technologií a žil v dobrém i zlém (dokonce i hrozné) projekty celého. Jako výsledek, Víte, co funguje a co ne. Budeme chtít sdílet tuto zkušenost s námi na každodenní bázi v jistém smyslu taktické (tj. Spusťte projekty opravdu dobře) ale také strategicky. "Best practices" je trochu nadužíváno jako termín a váhat ji použít. Základní myšlenkou je, že už vás sem jako zkušený člověk s hlubokou a relevantních zkušeností a chceme integrovat nejlepší své poznatky do jak jsme spolupracovat s klienty na základě každodenní.
  • Bav se -Jsme parta velice integrované. Chci se vyhnout ještě další fráze, ale to je opravdu v tomto případě – budeme tvrdě pracovat (druh) a ještě tvrději hrajeme :). Aaron Sorkin druh žertování zde, pokoj je vždy plný chytří lidé, Máme rádi naše pití a organizujeme značný počet zábavné akce-filmový večer, baseballové výlety (i když jsou hrozné, prakticky zlo týmy).

Pokud by to shrnout do jednoho slova, Já bych použít slovo "vedení." Hlavní projekty, převzít vedoucí roli v budování z praxe (IP, budování týmu), atd.

Ale počkejte! Je toho víc! Proč jinak pracují na Slalom?

  • Pozoruhodné jednoty záměru – každý chce pěstovat tuto věc. "Ta věc" je kancelář v New Yorku. Všichni jsou na palubě s touto.
  • Vítr do plachet – sestra kanceláře, sestra praxe – Slalom je "full service" poradenské organizace. Vedu SharePoint praxi ("Praxe oblasti Zájemci" ve slalomu žargon). Mám sestru v praxi 11 ostatní úřady Slalom. Takže i když já jsem král podle SharePoint se týká tady v New Yorku Slalom, Mám partnera praktiky v Chicagu, Seattle, Dallas, Atlanta, Boston, atd. ze které lze čerpat na podporu. Je to opravdu nejlepší z obou světů – značné autonomie zde v New Yorku, ale přístup ke tun talentu celé organizace.
  • Vítr v prodeje (2) – Děláme víc než SharePoint – mnohem více. Děláme BI, CRM, UX, obchodní poradenství, Mobilní, vlastní vývoj a další. Jsme dobří, křížový prodej mezi sebou a jsme dobří v malířství – a ještě důležitější je, doručování po – "full service" obrázek pro naše klienty. To je obzvláště atraktivní pro mě. Byl jsem v mnoha menších Orgové pracuje na SharePoint koncerty a frustrovaný znovu a znovu, protože jsme byli holubi zakopali jako "SharePoint lidé." To se nestane s Slalom a my jsme si proto udělat zajímavější práci.
  • Místní model – bez cestování.
  • Dlouhodobý růst – Slalom se gangbusters. Spousta růstu a stability. Růst také znamená, že musíme najmout vůdci dnes zamíří nové týmy, jak jsme přidali další klienti a zaměstnanci na podporu klientů.

Mohl bych jít na, Ale já jsem asi už trvá příliš dlouho. Myslím, že jsem zachytil podstatu zde. Pokud přemýšlíte o změně zaměstnání a to vypadá dobře pro vás, Promluvme si.

Pokud jste šťastní ve své současné práci – Promluvme si stejně :). Byl v mnoha místech a byl v té době velmi "šťastný". Slalom je odlišný a uvítal bych možnost přesvědčit vás o tom.

</Konec>

undefinedPřihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin

Rychlé a snadné: Nastavení velikosti položky v rozevíracím seznamu v aplikaci Windows Store

V Windows Store App jsem vytvořit, Chci Ukázat uživateli různé informační zprávy.  Vybral jsem ListBox jako nástroj zobrazíte tak, že mohou procházet ně a že všechny dobré věci. 

Zprávy jsou pouze informativní, Takže není třeba poskytnout všechny další mezery kolem nich, vzhledem k tomu, že uživatel nikdy nemůže vyberte pro cokoliv.  Výchozí chování ListBox poskytuje značné množství výplně a chtěl jsem se ho zbavit.  Dobře.... Nemůžeš dělat takové věci na ListBox přímo.  NICMÉNĚ, Můžete to udělat na přidané položky:

        soukromé void AddGameStateLogMessage(řetězec theMessage)
        {
            Textové pole t = nové Textové pole();
            t.Text = GameStateCounter    + ": " + theMessage;
            t.TextWrapping = TextWrapping.Wrap;
            t.MinWidth = 400;
            Tloušťka thisPadding = nové Tloušťka(5, 0, 5, 0);
            t.Padding = thisPadding;
            t.FontSize = 12;

            ListBoxItem li = nové ListBoxItem();
            li.Obsah = t;
            li.MaxHeight = 25;
            thisPadding = nové Tloušťka(5, 0, 5, 0);
            li.Padding = thisPadding;

            GameStateLog.Items.Insert(0,li);
        }

ve výše, Já jsem vytvořit textové pole a nastavení jeho písmo, jeho výplň, atd.

Další, Vytvořit ListBoxItem a nastavte jeho obsah na formátované textové pole.

Konečně, Do seznamu vložit ListBoxItem.  (Chci zobrazit nejnovější zprávy v horní části seznamu, Proto Insert(0,li) namísto jednoduché přidat() vyvolání.).

Bude se to ladění, trochu, než jsem opravdu spokojený s chování ListBox, ale vzoru uvedeno výše bylo velmi plodné.  Doufejme, že někdo považuje za užitečné.

</Konec>

undefinedPřihlásit se na mém blogu.

Za mnou na Twitter na http://www.twitter.com/pagalvin