Apex クイックスタート に従って Salesforce の APEX を使ってみた。
カスタムオブジェクトを作成する
- [設定]-[オブジェクトマネージャー]で、[作成]-[カスタムオブジェクト]を選択し、以下を入力して [保存] をクリック
- 表示ラベル: Book
- [オブジェクトマネージャー]で "Book" をクリックし、[項目とリレーション]をクリックする
- [新規]をクリックし、以下の通り入力して保存する
- データ型: 数値
- 項目の表示ラベル: Price
- 文字数: 16
- 小数点の位置: 2
Apex クラスを作成する
- [設定]-[Quick Find (クイック検索)] ボックスに「Apex 」と入力し、[Apex クラス]を選択する
- クラスエディタに以下のコードを入力して保存する
public class MyHelloWorld { public static void applyDiscount(Book__c[] books) { for (Book__c b :books){ b.Price__c *= 0.9; } } }
Apex トリガを作成する
- [オブジェクトマネージャー]で「Book」を選択し、[新規]をクリック、以下のコードを入力して保存する
trigger HelloWorldTrigger on Book__c (before insert) {
Book__c[] books = Trigger.new;
MyHelloWorld.applyDiscount(books);
}
テストクラスを作成する
- [設定]-[Quick Find (クイック検索)] ボックスに「Apex 」と入力し、[Apex クラス]を選択する
- クラスエディタに以下のコードを入力して保存する
@isTest private class HelloWorldTestClass { static testMethod void validateHelloWorld() { Book__c b = new Book__c(Name='Behind the Cloud', Price__c=100); System.debug('Price before inserting new book: ' + b.Price__c); // Insert book insert b; // Retrieve the new book b = [SELECT Price__c FROM Book__c WHERE Id =:b.Id]; System.debug('Price after trigger fired: ' + b.Price__c); // Test that the trigger correctly updated the price System.assertEquals(90, b.Price__c); } }
テストを実行する
- 開発者コンソールを起動する
- [Test]-[New Run]を選択する
- 「HelloWorldTestClass」を選択、[Add Selected] をクリックし、[Run] をクリックする。
データを確認する
- 開発者コンソールの [Query Editor] タブを選択し、以下のようにクエリを実行するとデータを参照できる。
SELECT Book__c.Name, Book__c.Price__c from Book__c
- [Create New] をクリックすると、レコードを追加することができる