1 // ================================================================================================
3 // モックオブジェクト生成処理をまとめたファクトリークラスソース</summary>
5 // <copyright file="MockFactory.cs" company="honeplusのメモ帳">
6 // Copyright (C) 2013 Honeplus. All rights reserved.</copyright>
9 // ================================================================================================
11 namespace Honememo.Wptscs.Models
14 using System.Collections.Generic;
16 using System.Xml.Serialization;
17 using Honememo.Wptscs.Websites;
20 /// モックオブジェクト生成処理をまとめたファクトリークラスです。
22 public class MockFactory
27 /// テスト用のconfig.xmlファイルパス。
29 public static readonly string TestConfigXml = "Data\\config.xml";
32 /// テストデータが格納されているフォルダパス。
34 public static readonly string TestMediaWikiDir = "Data\\MediaWiki";
43 private Config config;
50 /// テスト用のconfig.xmlを元に、モックファクトリーを生成する。
54 this.config = MockFactory.GetConfig(MockFactory.TestConfigXml);
62 /// ファイルからアプリケーションの設定を取得する。
64 /// <param name="file">設定ファイル名。</param>
65 /// <returns>作成したインスタンス。</returns>
66 public static Config GetConfig(string file)
69 using (Stream stream = new FileStream(file, FileMode.Open, FileAccess.Read))
71 return (Config)new XmlSerializer(typeof(Config)).Deserialize(stream);
82 /// <returns>作成したインスタンス。</returns>
83 public Config GetConfig()
89 /// 指定された言語のMediaWikiを取得する。
91 /// <param name="lang">言語コード。</param>
92 /// <returns>ウェブサイトの情報。</returns>
93 public MediaWiki GetMediaWiki(string lang)
95 Website site = this.config.GetWebsite(lang);
96 MediaWiki wiki = null;
99 wiki = site as MediaWiki;
104 wiki = new MediaWiki(new Language(lang));
107 // テスト用にサーバー設定を書き換えて返す
108 this.SetMockConfig(wiki);
113 /// 渡されたMediaWikiオブジェクトにモックの設定を上書きする。
115 /// <param name="wiki">設定するMediaWikiオブジェクト。</param>
116 public void SetMockConfig(MediaWiki wiki)
119 // ※ フルパスじゃないとURIで取得できないので、ここで書き換える必要有り
120 UriBuilder b = new UriBuilder("file", string.Empty);
121 b.Path = Path.GetFullPath(MockFactory.TestMediaWikiDir) + "\\";
122 wiki.Location = new Uri(b.Uri, wiki.Language.Code + "/").ToString();
123 wiki.ContentApi = "$1.xml";
124 wiki.MetaApi = "_api.xml";
125 wiki.InterlanguageApi = "interlanguages/$1.xml";