Arkib Kategori: SharePoint Online

Pengumuman Menarik Wicked

Membuat hebahan tidak benar-benar perkara yang saya, tetapi kali ini, Saya benar-benar dan benar-benar teruja tapak SharePoint epal besar Slalom lancaran sahaja. 

Saya bekerja di Slalom perundingan dan menguruskan Portal berkenaan & Amalan kerjasama.  Tapak Big Apple adalah laman "saya" untuk amalan saya di sini di New York.  Saya telah lama ingin salah satu daripadanya. Saya yakin bahawa banyak SP pro oleh sesuatu yang serupa.  Berapa kali kita telah melihat laman awam syarikat kita sendiri, atau salah satu daripada pelanggan dan melihat mereka bangunan itu keluar dan hanya mengetahui dan berharap bahawa mereka akan membina di SP?  Kita semua tahu bahawa SP adalah cukup baik hal semacam ini, tetapi ia bukanlah sangat biasa. 

Well, sekalian alam akhirnya sejajar hanya hak untuk saya-SP Online adalah benar-benar murah, Saya mempunyai pasukan yang betul dan masa yang cukup untuk benar-benar melakukannya.

Ia adalah satu perjalanan yang menakjubkan untuk mendapatkan untuk melancarkan dan dan ada yang dikongsi sana di laman web ini.

Baca mengenainya di sini dan jika anda berminat dengan butir-butir di belakang, Saya lebih gembira untuk berbincang mengenainya.

Berikut adalah pautan pengumuman rasmi: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=82 #O365

</akhir>

Bagaimana: Konfigurasi Unit Ujian dan Liputan Ujian dengan QUnit.js dan Blanket.js Untuk Office 365 SharePoint App

Intro

Saya telah telah meneroka percubaan unit dan menguji liputan JavaScript kerana saya bekerja pada aplikasi SharePoint baru untuk SharePoint dalam talian di Pejabat 365 Suite.  Jalan-jalan penyelidikan jelas membawa saya untuk Qunit.js dan sejurus selepas itu, kepada Blanket.js.

QUnit Biar saya menubuhkan unit test dan Kumpulan mereka ke dalam modul.  Modul ini hanya cara mudah untuk menguruskan ujian berkaitan. (Saya tidak pasti saya menggunakannya seperti yang dimaksudkan, tetapi ia bekerja bagi saya setakat ini dengan sedikit set ujian saya setakat ditakrifkan).

Blanket.js mengintegrasikan dengan Qunit dan ia akan menunjukkan kepada saya sebenar baris JavaScript yang telah – dan apa yang lebih penting – tidak benar-benar dihukum semasa menjalankan ujian.  Inilah "perlindungan" – garisan yang dilaksanakan akan diliputi oleh ujian manakala yang lain adalah tidak.

Antara menyediakan kes-kes ujian yang baik dan melihat liputan, kita boleh mengurangkan risiko bahawa Kod kita telah tersembunyi kecacatan.  Baik times.

Qunit

Andaikan anda mempunyai Visual Studio anda projek menyediakan, Mulakan dengan memuat turun pakej JavaScript daripada http://qunitjs.com.  Tambah JavaScript dan CSS sepadan ke penyelesaian anda.  Lombong kelihatan seperti ini:

image

Rajah 1

Seperti yang anda lihat, Saya telah menggunakan 1.13.0 pada masa saya menulis ini blog post. Jangan lupa untuk men-download dan menambah fail CSS.

Yang keluar dari cara, langkah seterusnya adalah untuk mencipta beberapa jenis ujian memanfaatkan dan rujukan bit Qunit.  Saya ujian sekumpulan fungsi dalam fail skrip yang dipanggil "QuizUtil.js" supaya saya mencipta halaman HTML yang dipanggil "QuizUtil_test.html" seperti yang ditunjukkan:

image Rajah 2

Berikut adalah kod:

<!PADA DOCTYPE html>
<html xmlns= "http://www.W3.org/1999/XHTML">
<Ketua>
    <tajuk>Ujian QuizUtil dengan Qunit</tajuk>
    <pautan rel= "stylesheet" href=".. /CSS/qunit-1.13.0.CSS" />
    <skrip Jenis= text/javascript"" JPP="QuizUtil.js" Perlindungan data></skrip>
    <skrip jenis ="text/javascript" src ="qunit-1.13.0.js"></skrip>
    <skrip jenis ="text/javascript" src ="blanket.min.js"></skrip>

    <skrip>
        Modul("getIDFromLookup");
        ujian("QuizUtil getIDFromLookupField", fungsi () {
            VAR goodValue = "1;#Paul Galvin";

            sama(getIDFromLookupField(goodValue) + 1, 2), "ID [" + goodValue + "] + 1 sepatutnya 2";
            sama(getIDFromLookupField(undefined), undefined, "Hujah input undefined perlu kembali keputusan undefined.");
            sama(getIDFromLookupField(""), undefined, "Hujah kosong input perlu kembali untuk nilai undefined.");
            sama(getIDFromLookupField("gobbledigood3-thq;dkvn ada;skfja sdjfbvubvqrubqer0873407t534piutheqw;pada tahun"), undefined,"Harus sentiasa kembalikan sebuah keputusan boleh Tukar ke Integer");
            sama(getIDFromLookupField("2;#orang lain"), "2", "Semakan [2;#orang lain].");
            sama(getIDFromLookupField("9834524;#nilai panjang"), "9834524", "Ujian nilai besar.");
            notEqual(getIDFromLookupField("5;#sesiapa sahaja", 6), 6, "Ujian notEqual yang (5 adalah tidak sama dengan 6 bagi sampel: [5;#sesiapa sahaja]");

        });

        Modul("htmlEscape");
        ujian("QuizUtil htmlEscape()", fungsi () {
            sama(htmlEscape("<"), "&lt;", "Kurang dari pengendali melarikan diri ('<')");
            sama(htmlEscape("<Bhg. kelas =  "someclass">Sesetengah teks</div>"), "&lt;kelas Bhg. =&quot;someclass&quot;&gt;Sesetengah teks&lt;/div&gt;", "Rentetan ujian lebih kompleks.");
        });

        Modul("getDateAsCaml");
        ujian("QuizUtil getDateAsCaml()", fungsi () {
            sama(getDateAsCaml(baru Tarikh("12/31/2013")), "2013-12-31T:00:00:00", "Ujian tarikh keras dikodkan: [12/31/2013]");
            sama(getDateAsCaml(baru Tarikh("01/05/2014")), "2014-01-05T:00:00:00", "Ujian tarikh keras dikodkan: [01/05/2014]");
            sama(getDateAsCaml(baru Tarikh("01/31/2014")), "2014-01-31T:00:00:00", "Ujian tarikh keras dikodkan: [01/31/2014]");
            sama(getTodayAsCaml(), getDateAsCaml(baru Tarikh()), "getTodayAsCaml() hendaklah sama dengan getDateAsCaml(Tarikh baru())");
            sama(getDateAsCaml("nilai karut"), undefined, "Cuba untuk mendapatkan tarikh nilai karut.");
            sama(getDateAsCaml(undefined), undefined, "Cuba untuk mendapatkan tarikh yang [undefined] Tarikh.");
        });

        Modul("getParameterByName");
        ujian("QuizUtil getParameterByName (dari rentetan pertanyaan)", fungsi () {
            sama(getParameterByName(undefined), undefined, "Cuba untuk mendapatkan undefined parameter perlu kembali undefined.");
            sama(getParameterByName("tidak wujud"), undefined, "Cuba untuk mendapatkan nilai parameter apabila kita tahu parameter tidak wujud.");

        });

        Modul("Cookies");
        ujian("QuizUtil pelbagai fungsi cookie.", fungsi () {
            sama(setCookie("ujian", "1", -1), getCookieValue("ujian"), "Dapatkan cookie saya menetapkan perlu bekerja.");
            sama(setCookie("anycookie", "1", -1), benar, "Tatacara memasak sah perlu kembali 'benar'.");
            sama(setCookie("kuih gila nama !@#$%"%\^&*(()?/><.,", "1", -1), benar, "Menetapkan nama kuih yang buruk perlu kembali 'palsu'.");
            sama(setCookie(undefined, "1", -1), undefined, "Lulus undefined dengan nama kuih.");
            sama(getCookieValue("tidak wujud"), "", "Cookie tidak wujud ujian.");
        });

    </skrip>
</Ketua>
<badan>
    <div id= "qunit"></div>
    <div id= "qunit-perlawanan"></div>

</badan>
</html>

Terdapat beberapa perkara yang berlaku di sini:

  1. Rujukan kod (QuizUtil.js)
  2. Rujukan Qunity.js
  3. Menentukan beberapa modul (getIDFromLookup, Biskut, dan lain-lain)
  4. Meletakkan satu <div> ID yang merupakan "qunit".

Kemudian, Saya hanya tarik ke Laman ini dan anda mendapat sesuatu seperti ini:

image

Rajah 3

Jika anda melihat di bahagian atas, anda mempunyai beberapa pilihan, dua di antaranya yang menarik:

  • Sembunyi lulus ujian: Cukup jelas.  Boleh membantu mata anda hanya melihat bidang masalah dan tidak banyak kekacauan.
  • Modul: (jatuh bawah): Ini akan menapis ujian ke ujian yang hendak sekumpulan hanya orang-orang.

Bagi ujian diri – beberapa komen:

  • Ia pergi tanpa mengatakan bahawa anda perlu untuk menulis kod anda supaya ia adalah testable di tempat pertama.  Menggunakan alat yang boleh membantu menguatkuasakan disiplin itu. Sebagai contoh, Saya mempunyai satu majlis yang dipanggil "getTodayAsCaml()".  Ini bukan sangat testable kerana membawa hujah tiada input dan untuk menguji untuk kesaksamaan, kita perlu sentiasa Kemaskini Terakhir kod ujian untuk menunjukkan tarikh semasa.  Saya refactored dengan menambah data input parameter lulus tarikh semasa apabila saya mahu tarikh hari ini dalam CAML format.
  • Rangka Qunit dokumen ujian sendiri dan nampaknya cukup mantap.  Ia boleh melakukan perkara-perkara yang mudah seperti ujian untuk kesaksamaan dan juga mempunyai sokongan untuk panggilan ajax gaya (kedua-dua "real" atau mengejek menggunakan mocker kegemaran anda).
  • Juga akan melalui proses yang memaksa anda berfikir melalui kes-kes canggih – apa yang berlaku dengan "undefined" atau kosong dihantar ke satu fungsi.  Ia menjadikan ia mati mudah untuk menguji senario ini keluar.  Bagus.

Perlindungan dengan Blanket.js

Blanket.js melengkapi Qunit dengan tracking sebenar baris kod yang melaksanakan semasa menjalankan ujian.  Ia mengintegrasikan hak ke Qunit begitu walaupun ia adalah sebuah aplikasi yang keseluruhannya berasingan, Ia memainkan baik – ia benar-benar kelihatan seperti itu adalah satu aplikasi yang lancar.

Inilah blanket.js dalam tindakan:

image Rajah 4

image

Rajah 5

(Anda sebenarnya perlu klik pada checkbox "Dayakan perlindungan" di bahagian atas [lihat Rajah 3] bagi membolehkan ini.)

Garisan yang diserlahkan dalam Rajah 5 telah dilaksanakan oleh mana-mana ujian saya, oleh itu, saya perlu memikirkan ujian yang menyebabkan mereka untuk melaksanakan jika saya ingin perlindungan penuh.

Mendapat blanket.js dengan langkah-langkah berikut:

  1. Muat turun daripada http://blanketjs.org/.
  2. Menambah kepada projek anda
  3. Kemaskini Terakhir Laman abah-abah ujian anda (QuizUtil_test.html dalam kes saya) seperti berikut:
    1. Rujukan kod
    2. Menghias anda <skrip> rujukan seperti ini:
    <skrip Jenis= text/javascript"" JPP="QuizUtil.js" Perlindungan data></skrip>

Blanket.js menjemput atribut "data-cover" dan melakukan sihir dengan.  Ia cangkuk ke Qunit, mengemaskini UI untuk menambah opsyen "Dayakan perlindungan" dan voila!

Ringkasan (TL; DR)

Gunakan Qunit untuk menulis kes-kes ujian anda.

  • Muat turun
  • Menambah kepada projek anda
  • Menulis halaman ujian abah-abah
  • Mencipta ujian
    • ReFactor di antara kod anda akan testable
    • Menjadi kreatif!  Fikirkan gila, mustahil senario dan menguji mereka juga.

Menggunakan blanket.js untuk memastikan perlindungan

  • Pastikan Qunit bekerja
  • Muat turun blanket.js dan menambahnya ke dalam projek
  • Tambah ke Laman abah-abah ujian anda:
    • Menambah rujukan kepada blanket.js
    • Tambah satu atribut "data-cover" untuk anda <skrip> Tag
  • Menjalankan ujian Qunit.

Saya tidak pernah melakukan apa-apa sebelum ini dan mempunyai beberapa barangan rudimentary bekerja dalam beberapa jam. 

Ujian senang!

</akhir>

undefinedLanggan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin

BPOS 2010 dan "superset”

Saya telah membaca salah satu ini cukup generik artikel blah seperti di BPOS (Pertukaran dan SharePoint Microsoft dalam awan) dan bersyukur kerana mengharungi hingga ke hujung:

Dari segi lain serahan terdekat, Microsoft commiting untuk menyediakan dalam BPOS v.Next skrip PowerShell asli melalui titik akhir PowerShell membina Versi PowerShell 2. Pengesahan akan dilakukan melalui ID Online, dengan tauliah tunggal dapat digunakan untuk kedua-dua PowerShell dan portal.Keane bergema mesej lain eksekutif Microsoft telah menyuarakan di TechEd minggu ini: Keupayaan Awan, dari masa ke masa, akan  menjadi superset apa yang terdapat di premis. Pada masa ini, sebaliknya adalah benar, dan Microsoft perkhidmatan Online menawarkan subset fungsi yang tersedia dalam setara perisian setiap produk.

Tanggapan bahawa awan akan menyediakan keupayaan lebih daripada di premis yang baru kepada saya. Saya tertanya-tanya bagaimana benar yang akan berada di akhir.  Rasanya bertentang kepada saya.  Saya benar-benar mendapat idea bahawa banyak syarikat-syarikat akan bergerak barangan ke awan (atau memulakan dalam awan) tetapi saya biasanya berfikir mereka melakukannya kerana pro (admin mudah, SLA, dan sebagainya.) jauh melebihi keburukan (fungsi dikurangkan). 

Saya mempunyai sedikit masa yang sukar mempercayai bahawa persembahan awan akan melebihi keupayaan di Prem.  Multi-penyewa adalah keras dan seolah-olah seperti ia mesti memaksa kompromi untuk memberikan SLA yang baik dan kemudahan penggunaan ...

Saya mungkin akan makan kata-kata saya mengenai perkara ini.  Saya masih ingat berfikir bahawa tiada siapa yang mungkin memerlukan lebih daripada 650 mb data dan oleh itu, CD itu tidak pernah akan diperbaiki.

</akhir>

Langgan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin

SharePoint Online dan InfoPath

Saya boleh menjadi orang yang terakhir untuk merealisasikan ini, tetapi SharePoint Online (yang saya sering mendengar orang mengatakan adalah WSS dimuliakan) menyokong InfoPath Borang Perkhidmatan.  Itulah barangan cukup kuat, terutamanya memandangkan FS IP adalah ciri Enterprise MOSS dan BPOS adalah sesuatu seperti $ 1.99/month untuk 10,000 pengguna.  Mungkin ia adalah sedikit lebih daripada itu.

Jadi, SharePoint Online menentang definisi mudah.  Ia mempunyai ciri-ciri syarikat ini, tetapi tidak mempunyai akses tanpa nama (yang walaupun WSS menyokong).  Anda boleh melakukan beberapa perkara yang menarik dengan carian (MOSS-ish, kerana anda boleh menentukan skop peringkat tapak), tetapi jika anda memerlukan akses kepada SSP, anda tidak boleh melakukannya.  You can play the “on the one hand and on the other” game all night long with this product 🙂

Microsoft adalah disebabkan untuk melepaskan versi baru SP Online dalam beberapa bulan akan datang.  Saya tertanya-tanya apa hibrid pelik ia akan menjadi?

</akhir>

Langgan ke blog saya.

Mengikuti aku di Twitter http://www.twitter.com/pagalvin