Arsip Kategori: SharePoint Online

Jahat pengumuman menarik

Membuat pengumuman tidak benar-benar hal yang saya, tapi kali ini, Aku benar-benar dan benar-benar bersemangat tentang situs Slalom Big Apple SharePoint hanya-diluncurkan. 

Saya bekerja di Slalom konsultasi dan mengelola portal & Praktek kolaborasi.  Situs Big Apple adalah "saya" situs untuk praktek saya di New York.  Aku sudah lama ingin salah satu ini. Saya yakin bahwa banyak SP pro berharap untuk sesuatu yang serupa.  Berapa kali Apakah kita melihat situs umum perusahaan kita sendiri, atau salah satu pelanggan dan melihat mereka membangun itu keluar dan hanya mengetahui dan berharap bahwa mereka akan membangun pada SP?  Kita semua tahu bahwa SP cukup baik dalam hal semacam ini, tetapi tidak sangat umum. 

Yah, dunia akhirnya selaras tepat bagi saya-SP Online benar-benar murah, Aku punya tim yang tepat dan cukup waktu untuk benar-benar melakukannya.

Itu adalah sebuah perjalanan yang menakjubkan untuk meluncurkan dan dan beberapa yang dibagi atas sana di situs.

Membaca semua tentang hal itu di sini dan jika Anda tertarik untuk rincian di balik itu, Aku lebih dari senang untuk berbicara tentang hal itu.

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

</akhir>

Bagaimana caranya: Mengkonfigurasi Unit pengujian dan cakupan uji dengan QUnit.js dan Blanket.js untuk kantor 365 Aplikasi SharePoint

Intro

Aku sudah menjelajahi pengujian unit dan menguji cakupan untuk JavaScript ketika bekerja pada sebuah aplikasi SharePoint baru untuk SharePoint online di kantor 365 Suite.  Jalur penelitian jelas mendorong saya untuk Qunit.js dan kanan setelah itu, untuk Blanket.js.

Kebun buah-buahan biarkan aku membuat unit test dan mengelompokkan mereka ke dalam modul.  Module adalah cara yang mudah untuk mengatur tes terkait. (Saya tidak yakin saya menggunakan sebagaimana dimaksud, Tapi itu bekerja bagi saya begitu jauh dengan set kecil tes saya sejauh ini telah didefinisikan).

Blanket.js terintegrasi dengan kebun buah-buahan dan ia akan menampilkan jalur sebenarnya JavaScript yang itu- dan lebih penting-tidak benar-benar dilaksanakan dalam menjalankan tes.  Ini adalah "cakupan"-baris yang dieksekusi dilindungi oleh tes sementara yang lain tidak.

Antara pengaturan kasus uji yang baik dan melihat cakupan, kita dapat mengurangi risiko bahwa kode kita telah tersembunyi Cacat.  Baik kali.

Kebun buah-buahan

Dengan asumsi Anda memiliki Visual Studio proyek mengatur, Mulailah dengan men-download paket JavaScript dari http://qunitjs.com.  Menambahkan JavaScript dan CSS yang sesuai untuk solusi Anda.  Tambang terlihat seperti ini:

image

Gambar 1

Seperti Anda dapat melihat, Saya menggunakan 1.13.0 pada saat saya menulis posting blog ini. Jangan lupa untuk men-download dan menambahkan CSS file.

Yang keluar dari jalan, langkah berikutnya adalah untuk menciptakan semacam harness tes dan referensi bit kebun buah-buahan.  Saya menguji banyak fungsi dalam file skrip bernama "QuizUtil.js" Jadi saya membuat halaman HTML yang disebut "QuizUtil_test.html" seperti yang ditunjukkan:

image Gambar 2

Berikut adalah kode:

<!DOCTYPE HTML>
<HTML xmlns= "http://www.w3.org/ 1999/xhtml">
<kepala>
    <judul>QuizUtil tes dengan kebun buah-buahan</judul>
    <link rel= "stylesheet" href="../CSS/qunit-1.13.0.CSS" />
    <script jenis= text/javascript"" src="QuizUtil.js" data-cover></script>
    <script type ="text/javascript" src ="kebun buah-buahan-1.13.0.js"></script>
    <script type ="text/javascript" src ="blanket.min.js"></script>

    <script>
        modul("getIDFromLookup");
        tes("QuizUtil getIDFromLookupField", fungsi () {
            var goodValue = "1;#Paul Galvin";

            sama(getIDFromLookupField(goodValue) + 1, 2), "ID [" + goodValue + "] + 1 harus menjadi 2";
            sama(getIDFromLookupField(terdefinisi), terdefinisi, "Undefined masukan argumen harus kembali undefined hasil.");
            sama(getIDFromLookupField(""), terdefinisi, "Kosong masukan argumen harus mengembalikan nilai undefined.");
            sama(getIDFromLookupField("gobbledigood3-thq;dkvn ada;skfja sdjfbvubvqrubqer0873407t534piutheqw;VN"), terdefinisi,"Harus selalu kembali hasil konversi ke Integer");
            sama(getIDFromLookupField("2;#beberapa orang lain"), "2", "Memeriksa [2;#beberapa orang lain].");
            sama(getIDFromLookupField("9834524;#nilai panjang"), "9834524", "Nilai besar ujian.");
            notEqual(getIDFromLookupField("5;#siapa pun", 6), 6, "Pengujian notEqual (5 tidak sama dengan 6 untuk contoh ini: [5;#siapa pun]");

        });

        modul("htmlEscape");
        tes("QuizUtil htmlEscape()", fungsi () {
            sama(htmlEscape("<"), "&lt;", "Escaping kurang dari operator ('<')");
            sama(htmlEscape("<div kelas =  "someclass">Beberapa teks</div>"), "&lt;div kelas =&quot;someclass&quot;&gt;Beberapa teks&lt;/div&gt;", "Lebih kompleks tes string.");
        });

        modul("getDateAsCaml");
        tes("QuizUtil getDateAsCaml()", fungsi () {
            sama(getDateAsCaml(baru Tanggal("12/31/2013")), "2013-12-31T:00:00:00", "Pengujian kode keras tanggal: [12/31/2013]");
            sama(getDateAsCaml(baru Tanggal("01/05/2014")), "2014-01-05T:00:00:00", "Pengujian kode keras tanggal: [01/05/2014]");
            sama(getDateAsCaml(baru Tanggal("01/31/2014")), "2014-01-31T:00:00:00", "Pengujian kode keras tanggal: [01/31/2014]");
            sama(getTodayAsCaml(), getDateAsCaml(baru Tanggal()), "getTodayAsCaml() harus sama dengan getDateAsCaml(Tanggal baru())");
            sama(getDateAsCaml("nilai omong kosong"), terdefinisi, "Mencoba untuk mendapatkan tanggal nilai omong kosong.");
            sama(getDateAsCaml(terdefinisi), terdefinisi, "Mencoba untuk mendapatkan tanggal [terdefinisi] tanggal.");
        });

        modul("getParameterByName");
        tes("QuizUtil getParameterByName (dari string kueri)", fungsi () {
            sama(getParameterByName(terdefinisi), terdefinisi, "Mencoba untuk mendapatkan parameter terdefinisi harus kembali undefined.");
            sama(getParameterByName("tidak ada"), terdefinisi, "Cobalah untuk mendapatkan nilai parameter ketika kita tahu parameter yang tidak ada.");

        });

        modul("Cookies");
        tes("QuizUtil berbagai fungsi kuki.", fungsi () {
            sama(setCookie("ujian", "1", -1), getCookieValue("ujian"), "Dapatkan saya menetapkan cookie harus bekerja.");
            sama(setCookie("anycookie", "1", -1), benar, "Pengaturan memasak sah harus kembali 'benar'.");
            sama(setCookie("nama cookie gila !@#$%"%\^&*(()?/><.,", "1", -1), benar, "Menetapkan nama buruk cookie harus kembali 'palsu'.");
            sama(setCookie(terdefinisi, "1", -1), terdefinisi, "Lewat undefined sebagai nama cookie.");
            sama(getCookieValue("tidak ada"), "", "Cookie tidak ada tes.");
        });

    </script>
</kepala>
<bodyHTMLan >><  kuat >  pesan yang kuat.</strong>  </body>  </html> ">
    <div id= "kebun buah-buahan"></div>
    <div id= "kebun buah-buahan-fixture"></div>

</bodyHTMLan >><  kuat >  pesan yang kuat.</strong>  </body>  </html> ">
</HTML>

Ada beberapa hal yang terjadi di sini:

  1. Kode saya referensi (QuizUtil.js)
  2. Referensi Qunity.js
  3. Mendefinisikan beberapa modul (getIDFromLookup, Cookie, dan lain-lain)
  4. Menempatkan <div> ID Apakah "kebun buah-buahan".

Kemudian, Aku hanya menarik Halaman ini dan Anda mendapatkan sesuatu seperti ini:

image

Gambar 3

Jika Anda melihat di atas, Anda memiliki beberapa pilihan, dua di antaranya menarik:

  • Sembunyikan lulus tes: Cukup jelas.  Dapat membantu mata Anda hanya melihat area masalah dan tidak banyak kekacauan.
  • Modul: (drop-down): Ini akan menyaring tes ke kelompok-kelompok tersebut hanya tes yang Anda inginkan.

Untuk tes sendiri – beberapa komentar:

  • Tak usah dikatakan bahwa Anda perlu untuk menulis kode Anda sedemikian rupa sehingga hal ini dapat diuji di tempat pertama.  Menggunakan alat dapat membantu menegakkan disiplin. Misalnya, Aku punya fungsi yang disebut "getTodayAsCaml()”.  Ini bukan sangat diuji karena ini membutuhkan tidak ada argumen masukan dan mengujinya untuk kesetaraan, kita perlu terus-menerus memperbarui kode tes untuk mencerminkan tanggal saat ini.  Saya direfractor dengan menambahkan data input parameter kemudian melewati tanggal saat ini ketika aku ingin tanggal dalam CAML format.
  • Dokumen-dokumen kerangka kerja kebun buah-buahan tes sendiri, dan tampaknya cukup kuat.  Ini dapat melakukan hal-hal sederhana seperti pengujian untuk kesetaraan dan juga memiliki dukungan untuk panggilan gaya ajax ("nyata" atau diejek menggunakan mocker favorit Anda).
  • Melalui proses juga memaksa Anda untuk memikirkan edge kasus-apa yang terjadi dengan "undefined" atau null dilewatkan ke dalam fungsi.  Itu membuatnya mati sederhana untuk menguji skenario ini keluar.  Bagus.

Cakupan dengan Blanket.js

Blanket.js melengkapi kebun buah-buahan pelacakan sebenarnya baris kode yang mengeksekusi selama menjalankan tes Anda.  Ini mengintegrasikan kanan ke kebun buah-buahan jadi meskipun itu adalah sebuah aplikasi seluruh terpisah, It memutar baik-itu benar-benar tampak seperti satu app mulus.

Ini adalah blanket.js dalam aksi:

image Gambar 4

image

Gambar 5

(Anda benar-benar harus klik pada kotak centang "Aktifkan cakupan" di bagian atas [Lihat gambar 3] untuk mengaktifkan ini.)

Baris yang disorot dalam gambar 5 belum dilaksanakan oleh salah satu tes, Jadi saya perlu menyusun tes yang menyebabkan mereka untuk melaksanakan jika saya ingin cakupan penuh.

Dapatkan blanket.js bekerja dengan mengikuti langkah-langkah:

  1. Men-download dari http://blanketjs.org/.
  2. Tambahkan ke proyek Anda
  3. Memperbarui halaman percobaan Anda memanfaatkan (QuizUtil_test.html dalam kasus saya) sebagai berikut:
    1. Referensi kode
    2. Menghias Anda <script> referensi seperti ini:
    <script jenis= text/javascript"" src="QuizUtil.js" data-cover></script>

Blanket.js mengambil atribut "data-penutup" dan melakukan keajaiban.  Kait ke kebun buah-buahan, Update UI untuk menambahkan opsi "Aktifkan cakupan" dan voila!

Ringkasan (TL; DR)

Menggunakan kebun buah-buahan untuk menulis Anda uji kasus.

  • Men-download
  • Tambahkan ke proyek Anda
  • Menulis sebuah halaman harness tes
  • Membuat tes Anda
    • Refactor beberapa kode Anda harus diuji
    • Menjadi kreatif!  Pikirkan gila, mungkin skenario dan menguji mereka tetap.

Gunakan blanket.js untuk memastikan cakupan

  • Memastikan kebun buah-buahan bekerja
  • Download blanket.js dan menambahkannya ke proyek Anda
  • Tambahkan ke halaman Anda baju zirah tes:
    • Menambahkan referensi ke blanket.js
    • Menambahkan atribut "data-penutup" untuk Anda <script> Tag
  • Menjalankan tes kebun buah-buahan Anda.

Saya tidak pernah melakukan hal ini sebelum dan memiliki beberapa hal dasar yang bekerja dalam beberapa jam. 

Pengujian bahagia!

</akhir>

undefinedBerlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

BPOS 2010 dan "Superset”

Saya membaca salah satu Artikel bla-seperti ini cukup generik BPOS (Microsoft exchange dan SharePoint di awan) dan untungnya waded melalui ke ujung:

Dalam hal penyerahan lain jangka pendek, Microsoft adalah melakukan untuk menyediakan di BPOS v.Next asli PowerShell scripting melalui membangun endpoint PowerShell pada versi PowerShell 2. Otentikasi akan dilakukan melalui Online id, dengan kredensial tunggal yang mampu digunakan untuk PowerShell dan portal.Keane bergema pesan Microsoft lainnya Eksekutif telah menyuarakan di TechEd minggu ini: Kemampuan internet, dari waktu ke waktu, akan  menjadi superset dari apakah lokal tersedia. Saat ini, Sebaliknya benar, dan Microsoft Online services menawarkan subset dari fungsi yang tersedia di setara perangkat lunak dari setiap produk.

Gagasan bahwa awan akan memberikan kemampuan lebih daripada lokal baru bagi saya. Aku bertanya-tanya bagaimana benar itu akan berada di akhir.  Rasanya berlawanan dengan intuisi saya.  Aku benar-benar mendapatkan ide bahwa banyak perusahaan akan memindahkan barang-barang ke internet (atau memulai di awan) tapi saya biasanya berpikir mereka melakukan itu karena pro's (mudah admin, SLA, dll) jauh lebih besar daripada kontra (Keterbatasan fungsional). 

Saya memiliki sedikit waktu sulit percaya bahwa awan persembahan akan melebihi kemampuan pada prem.  Multi-penyewa sulit dan tampaknya seperti itu harus memaksa kompromi untuk menyediakan baik SLA dan kemudahan penggunaan...

Aku mungkin akan makan kata-kata saya ini.  Aku ingat berpikir bahwa tidak ada yang bisa mungkin perlu lebih dari 650 MB data dan karena itu, CD tidak pernah akan diperbaiki.

</akhir>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin

SharePoint Online dan InfoPath

Aku mungkin menjadi orang terakhir untuk menyadari hal ini, tapi SharePoint Online (yang saya sering mendengar orang mengatakan adalah WSS dimuliakan) mendukung InfoPath Forms Services.  That's pretty kuat stuff, terutama mengingat bahwa IP FS adalah fitur MOSS Enterprise dan BPOS adalah sesuatu seperti $ 1.99/bulan untuk 10,000 pengguna.  Mungkin itu sedikit lebih dari itu.

Jadi, SharePoint Online menentang definisi mudah.  Ini memiliki fitur enterprise, tapi tidak ada akses anonim (WSS bahkan yang mendukung).  Anda dapat melakukan beberapa hal yang menarik dengan pencarian (MOSS-ish, karena Anda dapat menentukan situs tingkat cakupan), Tapi jika Anda membutuhkan akses ke SSP, Anda tidak bisa melakukannya.  Anda dapat memainkan game "di satu sisi dan di sisi lain" sepanjang malam dengan produk ini 🙂

Microsoft dijadwalkan untuk merilis versi baru dari SP Online dalam beberapa bulan ke depan.  Aku bertanya-tanya apa hibrida yang aneh itu akan menjadi?

</akhir>

Berlangganan ke blog saya.

Ikuti saya di kegugupan di http://www.twitter.com/pagalvin